Linux 上的以太网转 USB 适配器

Eng*_*999 5 ubuntu usb udev ethernet hot-plug

我最近买了一个以太网转 USB 适配器。

当我将它插入运行 Linux(在我的例子中是 Ubuntu)的计算机时,它会自动工作,我可以通过这个界面看到互联网连接,而无需做任何事情。

我想知道的是,在不安装任何特定驱动程序的情况下这是如何工作的?

我猜当这个设备插入时,udev 会设置它,但它怎么知道这个 USB 设备实际上是用作连接到以太网的接口,从而通过它路由流量?

检测和管理这个的代码在哪里?提前致谢

dir*_*rkt 5

这是如何在不安装任何特定驱动程序的情况下工作的?

大多数发行版默认提供的 Linux 内核已经包含大量驱动程序。大多数以太网到 USB 适配器在 USB 描述符中标记为CDC device,因此标准驱动程序之一(有几种变体)适用于大多数设备。

我猜当这个设备插入时,udev 会设置它,但它怎么知道这个 USB 设备实际上是用作连接到以太网的接口,从而通过它路由流量?

所有内核模块都可以包含描述它们可以用于哪些设备的模式。这些模式称为alias. 例如modinfo cdc_ether,如果你这样做,你会看到很多以 开头的别名usb。其余别名与 USB 描述符中的值匹配。

所有别名都收集到一个modules_alias文件中(在 中/lib/modules/<kernel_version>/),然后内核使用这个文件来决定在找到新设备(USB 或其他)时激活哪个驱动程序。

驱动程序本身将负责告诉内核它代表一个在其他内核层中具有代表的设备,例如网络接口。然后这些上层将处理其他步骤,有时使用与用户空间的交互,初始化网络接口,设置路由等。


Ole*_*nge 3

您已经安装驱动程序。它很可能只是一个使用 USB-net 驱动程序的适配器。系统通过 中的 ID 知道设备lsusb