Linux 上的以太网到 USB 适配器

Linux 上的以太网到 USB 适配器

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

当我将其插入运行 Linux(在我的例子中为 Ubuntu)的计算机时,它会自动工作,并且我可以通过此界面看到互联网连接,而无需执行任何操作。

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

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

检测和管理此问题的代码在哪里?提前致谢

答案1

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

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

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

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

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

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

答案2

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

相关内容