最近Ethernet-USBアダプタを購入しました。
Linux(私の場合はUbuntu)を実行しているコンピュータに接続すると自動的に機能し、何もせずにこのインターフェイスを介してインターネット接続を表示できます。
私が疑問に思うのは、特定のドライバをインストールせずにこれがどのように機能するかです。
udevは、このデバイスが接続されているときに設定すると推測します。しかし、このUSBデバイスが実際にイーサネットへのインターフェイスとして使用され、それを介してトラフィックをルーティングできることをどのように知ることができますか?
この問題を検出して管理するコードはどこにありますか?事前にありがとう
答え1
特定のドライバをインストールせずにどのように機能しますか?
ほとんどのディストリビューションに組み込まれているLinuxカーネルにはすでに多数のドライバが含まれています。ほとんどのイーサネット-USBアダプタは、USB記述子に次のように表示されます。CDCデバイスしたがって、標準ドライバの1つ(複数のバリエーションを含む)がほとんどのデバイスで動作します。
udevは、このデバイスが接続されているときに設定すると推測します。しかし、このUSBデバイスが実際にイーサネットへのインターフェイスとして使用され、それを介してトラフィックをルーティングできることをどのように知ることができますか?
すべてのカーネルモジュールには、使用可能なデバイスを記述するモードを含めることができます。alias
たとえば、これで始まるエイリアスmodinfo cdc_ether
がかなり多く表示されますusb
。残りのエイリアスは USB 記述子の値と一致します。
modules_alias
すべてのエイリアスはファイル()に収集され/lib/modules/<kernel_version>/
、このファイルはカーネルで使用され、新しいデバイス(USBなど)が見つかったときにアクティブにするドライバを決定します。
ドライバ自体は、自分が表すデバイスが別のカーネル層(ネットワークインタフェースなど)で表現されていることをカーネルに通知する役割を果たします。その後、これらの上位層は異なるステップを処理し、時にはユーザ空間との対話を使用してネットワークインタフェースの初期化、ルーティング設定などを実行する。
答え2
あなたは持つドライバがインストールされました。 USB-netドライバを使用するアダプタである可能性が高いです。システムはIDでデバイスを認識しますlsusb
。