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

5153
Travis Griggs

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

/sbin/modprobe option 

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

6

1 ответ на вопрос

7
mpy

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

Еще немного информации можно найти в исходниках ядра ( drivers/usb/serial/Kconfig)

config USB_SERIAL_OPTION Tristate "USB-драйвер для GSM и CDMA модемов" (...) Этот драйвер также поддерживает несколько карт PCMCIA, которые имеют встроенный адаптер OHCI-USB и GSM-модем с внутренним подключением. Шина USB на этих картах недоступна извне. Поддерживаемые устройства включают (некоторые из?) Те, которые сделаны: Опция, 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. Вопросы:

    • потеря данных - одного приема URB недостаточно
    • управление нестандартным потоком (дополнительные устройства)
    • контролировать скорость передачи данных не имеет смысла

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

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

Удивительно. И никто не задумывался: «Интересно, если модуль с именем option не сбивает с толку людей». Спасибо! Travis Griggs 10 лет назад 2
@TravisGriggs Я расширил свой ответ, указав, как отследить такие вопросы («Дайте человеку рыбу, и он будет есть один день. Научите человека ловить рыбу, и он будет есть всю оставшуюся жизнь».) и объяснение имени. TL; DR: Вы должны винить не автора модуля, а компанию, которая называет себя _Option_ `;)`. mpy 10 лет назад 0
Узнал так ценные вещи здесь! Can Tecim 5 лет назад 0

Похожие вопросы