O módulo do kernel é carregado automaticamente

2

Quando eu faço rmmod usb_storage e, em seguida, dmesg Eu posso ver a saída dizendo usb_storage deregistered. Mas quando eu conecto uma unidade flash e, em seguida, dmesg , diz

Initializing USB Mass Storage driver...
[16565.129239] scsi41 : usb-storage 1-1:1.0
[16565.130134] usbcore: registered new interface driver usb-storage
[16565.130172] USB Mass Storage support registered.

Eu não entendo como ele é automaticamente carregado?

    
por akshay 28.03.2014 / 05:42

1 resposta

2

No kernel do Linux, o carregador de módulos é ativado quando um novo dispositivo é detectou. Ela passou por uma string " modalias ", que identifica o dispositivo e parece algo assim para dispositivos USB:

usb:v058Fp6387d0103dc00dsc00dp00ic08isc06ip50in00

Você pode encontrar o seu dispositivo modalias usando o seguinte comando:

udevadm info --export-db

Esta é a seção relacionada ao meu pen drive:

P: /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0
E: DEVTYPE=usb_interface
E: DRIVER=usb-storage
E: ID_MODEL_FROM_DATABASE=Flash Drive
E: ID_VENDOR_FROM_DATABASE=Alcor Micro Corp.
E: INTERFACE=8/6/80
E: MODALIAS=usb:v058Fp6387d0103dc00dsc00dp00ic08isc06ip50in00
E: PRODUCT=58f/6387/103
E: SUBSYSTEM=usb
E: TYPE=0/0/0
E: USEC_INITIALIZED=530904794

Esta string contém a classe de dispositivo (usb) e informações específicas da classe (fornecedor / produto / número de série, classe de dispositivo, etc). Cada driver do kernel contém uma linha como:

MODULE_ALIAS("usb:...")

Qual deve combinar os usbalias (os curingas são usados para combinar múltiplos dispositivos). Se os modalias correspondem a um que o driver suporta, este driver é carregado (ou notificado do novo dispositivo, se já estiver lá).

Você pode ver os dispositivos compatíveis (por modalias) e seus módulos associados com

more /lib/modules/'uname -r'/modules.alias

Se você usar o driver de dispositivo de armazenamento usb, verá que ele tem algum dispositivos específicos suportados pelo fornecedor e pelo ID do dispositivo e também para suportar qualquer dispositivo com a classe certa (armazenamento), não importa o fornecedor / dispositivo.

Fonte

    
por Sylvain Pineau 28.03.2014 / 14:40