Linuxドライバーはどのように機能し、どこにありますか?(特にNICドライバー)


11

Linuxでドライバーがどのように機能するのか疑問に思っています。ドライバーは編集可能な単一のファイルですか?現在使用中のドライバーのリストはありますか、またはデバイスごとにそれらを見つけるための別の場所はありますか?

特にネットワークアダプターのドライバーについて知りたいです。

良いドキュメントがどこにあるか知っているなら、私もそれを読んでみたいです。

回答:


6

ドライバーは他のプログラムとよく似ており、複数のソースファイルで構成できます。Linuxデバイスドライバーは、カーネルまたはカーネルモジュールに直接コンパイルできます。カーネルモジュールには、動的にロードできるという利点があります(つまり、それらを使用するために新しいカーネルをコンパイルする必要はありません)。

Linuxのソースコードはいつでも見ることができますが、最初は大変な作業になる可能性があります。ただし、Linuxのドライバーと同様に、ファイルもファイルです。つまり、他のプログラムはVFSインターフェースを介してそれらにアクセスします。たとえばioctl()、デバイスファイルを使用した呼び出しでCDROMを制御できます。

Linuxデバイスドライバーを確認することを強くお勧めします。それは自由に利用でき、あなたの質問に答えます。特に、簡単な「Hello、Kernel」モジュールの作成方法を示す第2章を読むことができます。それはあなたが望んでいるよりはるかに多いかもしれませんが、あなたはあなたが興味のある小片を読むことができます。そしてそれは無料です。; P


3

Linuxドライバーは、カーネルでビルドされ、モジュールとしてコンパイルされます。または、ソースツリーのカーネルヘッダーに対してドライバーをビルドすることもできます。入力して現在インストールされているカーネルモジュールのリストを表示できます。インストールされているlsmod場合は、を使用してバス経由で接続されているほとんどのデバイスを確認できますlspci

現在のカーネルバージョンでNICのドライバーがサポートされていない場合は、ベンダーでドライバーを検索し、ソースからカーネルモジュールを(カーネルのヘッ​​ダーに対して)コンパイルする必要があります。


1

ほとんどの場合、NICのようなものが自動的に表示されない場合は、ハードウェアの製造元のサイトにアクセスして、Linuxバージョンがあるかどうかを確認する必要があります。

より一般的に言えば、Linuxドライバーはライブラリーまたはモジュールの形式を取る傾向があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.