lspci -k
3.2.0-29 通常のカーネルを使用して Kubuntu で実行すると、次の内容が表示されます。
01:00.0 VGA compatible controller: NVIDIA Corporation G86 [Quadro NVS 290] (rev a1)
Subsystem: NVIDIA Corporation Device 0492
Kernel driver in use: nvidia
Kernel modules: nvidia_current, nouveau, nvidiafb
nvidia
カーネルドライバとカーネルモジュールがありますnvidia_current
。nouveau
nvidiafb
では、カーネルドライバとカーネルモジュールの違いが何であるかを知りたいです。
ベストアンサー1
カーネルモジュールは、実行時にカーネルに挿入できるコンパイル済みのコードです。insmod
またはmodprobe
。
ドライバは、一部のハードウェアデバイスと通信するためにカーネルで実行されるコードの一部です。ハードウェアを「駆動」します。コンピュータのほとんどのハードウェアには関連ドライバがあります。実行中のカーネルのほとんどはドライバコードです。 ²
ドライバはディスク上のカーネルファイルに静的に構築できます。ドライバは、後で動的にロードできるようにカーネルモジュールとして構築することもできます。 (その後、削除することができます。)
標準的な慣行は、ドライバをカーネルに静的に接続するのではなく、可能な限りドライバをカーネルモジュールとして構築することです。これにより、より大きな柔軟性が得られます。ただし、これを行わないには、次の理由があります。
時には、システムの起動を支援するために特定のドライバが必要な場合もあります。これは思ったほど頻繁には起こりません。なぜなら初期化プログラム特徴。
静的に構築されたドライバは、静的にスコープされたシステムで正確に必要なものである可能性があります。組み込みシステム。つまり、どのドライバが常に必要で変更されていないかを正確に知っている場合は、動的カーネルモジュールを使用する必要はありません。
カーネルを静的にビルドし、Linuxの動的モジュールロード機能を無効にすると、カーネルコードの実行時の変更を防ぐことができます。これは、柔軟性を犠牲にして追加のセキュリティと信頼性を提供します。
すべてのカーネルモジュールはドライバではありません。たとえば、Linuxカーネルの比較的新機能は次のとおりです。さまざまなプロセススケジューラのロード。別の例は、より複雑なタイプのハードウェアが、下位レベルのハードウェアドライバとユーザ空間との間に複数の共通層を有することが多いことである。USB HIDドライバ、これUSBスタックの特定の要素、基本ハードウェアとは無関係です。
ナレーター: