Linuxドライバのアップデートはどのように機能しますか?

Linuxドライバのアップデートはどのように機能しますか?

私が知っている限り、Linuxシステムのすべてのアップデートには再起動は必要ありません。ただし、更新を完了するには、Windowsを数回再起動する必要があります。これは現在、ハードウェアが使用中である可能性があるため理解でき、再起動するとソフトウェアはドライバを使用していません。

しかし、ドライバを更新したいが、現在使用している状況をオペレーティングシステム(またはLinuxなど)はどのように処理しますか?

ベストアンサー1

Linuxアップデートがカーネルに影響を与える場合は、再起動が必要です。ドライバはカーネルの一部です。再起動せずにLinuxでドライバをアップグレードできる場合もありますが、頻繁には発生しません。アップデート中は、ドライバの周辺機器コントローラは使用できず、新しいドライババージョンは実行中のカーネルと互換性がなければなりません。

ドライバ制御ペリフェラルを使用する実行中のシステムにドライバをアップグレードするには、既存のドライバがペリフェラルを新しいドライバが起動できるようにする必要があります。古いドライバと新しいドライバは、クライアントからの接続の切り替えも管理する必要があります。可能ですが、難易度はドライバーが運転する車両によって異なります。たとえば、ファイルシステムをアンマウントせずにファイルシステムの更新を実行するには、いくつかの非常に複雑なデータ構造を切り替える必要がありますが、ハードウェアの面で簡単に処理できます(更新する前にバッファをフラッシュして空のキャッシュで起動するだけです)。これとは対照的に、入力ドライバはクライアント側で開かれた記述子のリストなどを送信するだけですが、ハードウェア側では新しいドライバが周辺機器の状態を知る必要があり、イベントの欠落を防ぐために注意深く管理する必要があります。

オペレーティングシステムの開発中にライブシステムでドライバを更新するのは一般的な慣行です。ここでドライバは動的にロードおよびアンロードできますが、通常は周辺機器の使用中はそうではありません。 LinuxやWindowsなどのオペレーティングシステムでは、通常、本番環境ではドライバは更新されません。実際には、慣れていない高可用性システムで更新されているようです。

一部のドライバはカーネルにありません(例:ヒューズファイルシステム)。これにより、システムの残りの部分を更新せずに簡単に更新できますが、まだドライバを使用しないでください。たとえば、新しいドライバを使用するには、FUSEファイルシステムインスタンスを削除して再マウントする必要があります。ドライバのバージョン)。

Linuxには、再起動せずにカーネルをアップグレードするメカニズムがあります。ksplice斑点否定的な利益。これは、最新バージョンが以前のバージョンとほぼ互換性があるため、技術的に困難です。特に、データ構造はまったく同じバイナリレイアウトを持つ必要があります。一部のディストリビューションでは、このセキュリティ更新サービスを提供しています。これらの機能は(まだではありませんが)メインラインLinuxカーネルで利用可能です。メインラインLinuxカーネルでは、ドライバがモジュールにロードされ、モジュールがアンロードされ、新しいモジュールが実行されているカーネルと互換性がある場合にのみドライバを更新できます。

おすすめ記事