Что делает `modprobe option`?

Что делает `modprobe option`?

В скрипте для включения сотового USB-модема NovAtel на Beagle Bone Black под управлением Ubuntu я увидел следующую строку:

/sbin/modprobe option

Я посмотрел на modprobeстраницу руководства, там много говорится о параметрах (обратите внимание на s), но ничего о единственном option аргументе. Есть ли модуль, который называется optionили что-то в этом роде?? Или у этого есть какой-то другой побочный эффект, который они вызывают для настройки модема?

решение1

Вы абсолютно правы, modprobe optionпроисходит попытка загрузить модуль option, управляемый параметром конфигурации ядра USB_SERIAL_OPTION.

Более подробную информацию можно найти в исходниках ядра ( drivers/usb/serial/Kconfig)

конфигурация USB_SERIAL_OPTION
        tristate "USB-драйвер для GSM и CDMA модемов"
        (...)
          Этот драйвер также поддерживает несколько карт PCMCIA, которые имеют
        встроенный адаптер OHCI-USB и внутренне подключенный GSM-модем.
        USB-шина на этих картах недоступна извне.
          Поддерживаемые устройства включают (некоторые из?) устройств следующих производителей:
        Option, Huawei, 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 недостаточно
    • нестандартный расход (опциональные устройства) управление
    • управление скоростью передачи данных не имеет смысла

      Этот драйвер называется «опциональным», поскольку наиболее распространенным устройством,
      для которого он используется, является PC-Card (с внутренним интерфейсом OHCI-USB, за
      которым находится интерфейс GSM), производимая Option Inc.

      Некоторые из устройств "с одним портом" на самом деле демонстрируют несколько экземпляров USB на шине USB. Это не ошибка, эти порты используются для различных функций устройства.

Связанный контент