私が知っている限り、Linuxシステムのすべてのアップデートには再起動は必要ありません。ただし、更新を完了するには、Windowsを数回再起動する必要があります。これは現在、ハードウェアが使用中である可能性があるため理解でき、再起動するとソフトウェアはドライバを使用していません。
しかし、ドライバを更新したいが、現在使用している状況をオペレーティングシステム(またはLinuxなど)はどのように処理しますか?
答え1
Linuxアップデートがカーネルに影響を与える場合は、再起動が必要です。ドライバはカーネルの一部です。再起動せずにLinuxでドライバをアップグレードできる場合もありますが、頻繁には発生しません。アップデート中は、ドライバの周辺機器コントローラは使用できず、新しいドライババージョンは実行中のカーネルと互換性がなければなりません。
ドライバ制御ペリフェラルを使用する実行中のシステムにドライバをアップグレードするには、既存のドライバがペリフェラルを新しいドライバが起動できるようにする必要があります。古いドライバと新しいドライバは、クライアントからの接続の切り替えも管理する必要があります。可能ですが、難易度はドライバーが運転する車両によって異なります。たとえば、ファイルシステムをアンマウントせずにファイルシステムの更新を実行するには、いくつかの非常に複雑なデータ構造を切り替える必要がありますが、ハードウェアの面で簡単に処理できます(更新する前にバッファをフラッシュして空のキャッシュで起動するだけです)。これとは対照的に、入力ドライバはクライアント側で開かれた記述子のリストなどを送信するだけですが、ハードウェア側では新しいドライバが周辺機器の状態を知る必要があり、イベントの欠落を防ぐために注意深く管理する必要があります。
オペレーティングシステムの開発中にライブシステムでドライバを更新するのは一般的な慣行です。ここでドライバは動的にロードおよびアンロードできますが、通常は周辺機器の使用中はそうではありません。 LinuxやWindowsなどのオペレーティングシステムでは、通常、本番環境ではドライバは更新されません。実際には、慣れていない高可用性システムで更新されているようです。
一部のドライバはカーネルにありません(例:ヒューズファイルシステム)。これにより、システムの残りの部分を更新せずに簡単に更新できますが、まだドライバを使用しないでください。たとえば、新しいドライバを使用するには、FUSEファイルシステムインスタンスを削除して再マウントする必要があります。ドライバのバージョン)。
Linuxには、再起動せずにカーネルをアップグレードするメカニズムがあります。ksplice、斑点、否定的な利益。これは、最新バージョンが以前のバージョンとほぼ互換性があるため、技術的に困難です。特に、データ構造はまったく同じバイナリレイアウトを持つ必要があります。一部のディストリビューションでは、このセキュリティ更新サービスを提供しています。これらの機能は(まだではありませんが)メインラインLinuxカーネルで利用可能です。メインラインLinuxカーネルでは、ドライバがモジュールにロードされ、モジュールがアンロードされ、新しいモジュールが実行されているカーネルと互換性がある場合にのみドライバを更新できます。
答え2
ほとんどの場合、ドライバがインストール時にアンロードおよびロードされるWindowsとは異なり、Linuxドライバのインストールは、主にファイルシステムにバイナリと設定を追加し、最新に設定することで構成されることを指摘して、Gillesの回答に追加したいと思います。バージョン。
これは、システムが不安定または不明な状態であるため、再起動を求めるWindowsとは異なり、Linuxでは通常ドライバをインストールする前と同じ状態にあることを意味します。
また、Linuxで「新しい」ドライバを追加するにはカーネルモジュールをロードする必要があるため、通常、新しいドライバを追加するときに再起動は必要ありません。 Windowsでは、ほとんどのデバイスが通常のドライバとして扱われるため、新しいデバイスが追加されるとドライバも削除されます。
最後に、カーネルには「再起動が必要」フラグがないため、再起動に関する推奨事項はドライバヘルパーユーティリティの開発者によって異なります。つまり、再起動しなければならない状況があるかもしれませんが、再起動するように指示がないかもしれません。そうしなければなりません。