`modprobe 选项` 有什么作用?

`modprobe 选项` 有什么作用?

在运行 Ubuntu 的 Beagle Bone Black 上启用 NovAtel USB 蜂窝调制解调器的脚本中,我看到了这一行:

/sbin/modprobe option

我查看了modprobe手册页,上面说了很多关于选项的内容(请注意 s),但没有提到单个option 参数。是否有一个模块调用option或类似的东西?或者这是否会产生其他副作用来设置调制解调器?

答案1

你完全正确,modprobe option确实尝试加载模块option,由内核配置参数控制USB_SERIAL_OPTION

在内核源代码中可以找到更多信息(drivers/usb/serial/Kconfig

配置 USB_SERIAL_OPTION
        tristate“用于 GSM 和 CDMA 调制解调器的 USB 驱动程序”
        (...)
          该驱动程序还支持多种具有
        内置 OHCI-USB 适配器和内部连接的 GSM 调制解调器。
        这些卡上的 USB 总线无法从外部访问。
          支持的设备包括(部分?)由以下制造商制造的设备:
        选项、华为、Audiovox、Novatel Wireless 或 Anydata。
        (...)
          如果该驱动程序无法识别您的设备,
        它可能可以通过 FTDI_SIO 驱动程序访问。

如何追踪:

  1. 检查您是否有这样的内核模块(只有当您的内核配置中启用它时,它才有效)

    $ find /lib/modules -name option.ko
    /lib/modules/kernel/drivers/usb/serial/option.ko
    
  2. 或者,你可以尝试模块是否加载

    # modprobe option
    # lsmod | grep option
    option                 33128  0 
    usb_wwan               13044  1 option
    usbserial              23912  2 option,usb_wwan
    
  3. 现在,您可以尝试查找源文件(仅当模块包含在您当前的内核源中时才有效)

    $ find /usr/src/linux -name option.c
    /usr/src/linux/drivers/gpu/drm/nouveau/core/core/option.c
    /usr/src/linux/drivers/usb/serial/option.c
    

    您提到,该模块与 USB 调制解调器有关,因此第二个匹配听起来很有希望。

  4. 您还可以找到内核配置参数

    $ find /usr/src/linux -name Makefile -exec grep -H option\.o '{}' \;
    /usr/src/linux/drivers/gpu/drm/nouveau/Makefile:nouveau-y += core/core/option.o
    /usr/src/linux/drivers/usb/serial/Makefile:obj-$(CONFIG_USB_SERIAL_OPTION)                   += option.o
    

    现在,您可以查看/usr/src/linux/drivers/usb/serial/Kconfig并找到我在开头引用的描述。

  5. 最后,看一下源代码本身(.../drivers/usb/serial/option.c),你会发现除其他外作者对名字的解释

    此驱动程序之所以存在,是因为“普通”串行驱动程序与 GSM 调制解调器配合得不是很好。问题:

    • 数据丢失——一个 Receive URB 远远不够
    • 非标准流量(选配装置)控制
    • 控制波特率没有意义

      该驱动程序被命名为“option”,因为它最常用的设备
      是 Option Inc. 生产的 PC 卡(带有内部 OHCI-USB 接口,
      其后面是 GSM 接口)。

      一些“单端口”设备实际上在 USB 总线上显示多个 USB 实例。这不是错误,这些端口用于不同的设备功能。

相关内容