O que a `opção modprobe` faz?

O que a `opção modprobe` faz?

Em um script para habilitar um modem celular USB NovAtel em um Beagle Bone Black rodando Ubuntu, vi esta linha:

/sbin/modprobe option

Olhei a modprobepágina de manual, ela diz muito sobre opções (observe os s), mas nada sobre um option argumento singular. Existe um módulo chamado optionou algo assim? Ou isso tem algum outro efeito colateral que eles estão provocando para configurar o modem?

Responder1

Você está absolutamente certo, modprobe optiontenta carregar o módulo option, controlado pelo parâmetro de configuração do kernel USB_SERIAL_OPTION.

Mais algumas informações são encontradas nas fontes do kernel ( drivers/usb/serial/Kconfig)

configuração USB_SERIAL_OPTION
        tristate "Driver USB para modems GSM e CDMA"
        (...)
          Este driver também suporta diversas placas PCMCIA que possuem um
        adaptador OHCI-USB integrado e um modem GSM conectado internamente.
        O barramento USB nessas placas não pode ser acessado externamente.
          Os dispositivos suportados incluem (alguns?) aqueles fabricados por:
        Opção, Huawei, Audiovox, Novatel Wireless ou Anydata.
        (...)
          Se este driver não reconhecer seu dispositivo,
        pode ser acessível através do driver FTDI_SIO.

Como rastrear isso:

  1. Verifique se você possui esse módulo do kernel (isso só funciona se estiver ativado na configuração do kernel)

    $ find /lib/modules -name option.ko
    /lib/modules/kernel/drivers/usb/serial/option.ko
    
  2. Alternativamente, você pode tentar se o módulo carregar

    # modprobe option
    # lsmod | grep option
    option                 33128  0 
    usb_wwan               13044  1 option
    usbserial              23912  2 option,usb_wwan
    
  3. Agora, você pode tentar encontrar os arquivos de origem (isso só funciona se o módulo estiver incluído nas fontes atuais do kernel)

    $ 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
    

    Você mencionou que o módulo tem algo a ver com um modem USB, então a segunda correspondência parece promissora.

  4. Você também pode encontrar o parâmetro de configuração do kernel

    $ 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
    

    Agora você pode dar uma olhada /usr/src/linux/drivers/usb/serial/Kconfige encontrar a descrição que citei no início.

  5. Por fim, dê uma olhada na própria fonte ( .../drivers/usb/serial/option.c) evoilávocê encontra entre outras coisasa explicação do autor sobre o nome

    Este driver existe porque o driver serial “normal” não funciona muito bem com modems GSM. Problemas:

    • perda de dados – um único URB de recebimento não é suficiente
    • controle de fluxo fora do padrão (dispositivos opcionais)
    • controlar a taxa de transmissão não faz sentido

      Este driver é denominado "opção" porque o dispositivo mais comum
      para o qual é usado é um PC-Card (com uma interface OHCI-USB interna, atrás
      da qual fica a interface GSM), fabricado pela Option Inc.

      Alguns dos dispositivos de "uma porta" exibem, na verdade, várias instâncias USB no barramento USB. Isso não é um bug, essas portas são usadas para diferentes recursos do dispositivo.

informação relacionada