这是如何在不安装任何特定驱动程序的情况下工作的?
大多数发行版默认提供的 Linux 内核已经包含大量驱动程序。大多数以太网到 USB 适配器在 USB 描述符中标记为CDC device,因此标准驱动程序之一(有几种变体)适用于大多数设备。
我猜当这个设备插入时,udev 会设置它,但它怎么知道这个 USB 设备实际上是用作连接到以太网的接口,从而通过它路由流量?
所有内核模块都可以包含描述它们可以用于哪些设备的模式。这些模式称为alias. 例如modinfo cdc_ether,如果你这样做,你会看到很多以 开头的别名usb。其余别名与 USB 描述符中的值匹配。
所有别名都收集到一个modules_alias文件中(在 中/lib/modules/<kernel_version>/),然后内核使用这个文件来决定在找到新设备(USB 或其他)时激活哪个驱动程序。
驱动程序本身将负责告诉内核它代表一个在其他内核层中具有代表的设备,例如网络接口。然后这些上层将处理其他步骤,有时使用与用户空间的交互,初始化网络接口,设置路由等。
| 归档时间: |
|
| 查看次数: |
5336 次 |
| 最近记录: |