Модуль ядра загружается автоматически

Когда я делаю rmmod usb_storage и затем dmesg я вижу, что вывод говорит вычеркнутый из списка usb_storage. Но когда я присоединяю флеш-накопитель и затем dmesg , это говорит

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.

Я не понимаю, как это автоматически становится загруженным?

2
задан 3 April 2014 в 07:49

1 ответ

В ядре Linux разбужен загрузчик модуля, когда новое устройство обнаруживается. Это передало строку "modalias", которая определяет устройство и выглядит примерно так для USB-устройств:

usb:v058Fp6387d0103dc00dsc00dp00ic08isc06ip50in00

Можно найти устройство modalias использованием следующей команды:

udevadm info --export-db

Это - раздел, связанный с моей Картой памяти:

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

Эта строка содержит класс устройства (usb) и определенная для класса информация (поставщик/продукт/порядковый номер, класс устройства, и т.д.). Каждый драйвер ядра содержит строку, такую как:

MODULE_ALIAS("usb:...")

Который должен соответствовать usbalias (подстановочные знаки используются для соответствия нескольким устройствам). Если modalias соответствует тому, который поддерживает драйвер, этот драйвер загружается (или уведомляется относительно нового устройства, если это уже там).

Вы видите поддерживаемые устройства (modalias) и их связанные модули с

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

Если Вы grep для драйвера устройства хранения USB, Вы будете видеть, что он имеет некоторые определенные устройства, он поддерживает поставщиком и идентификатором устройства, и также попытается поддерживать любое устройство с правом (устройство хранения данных) класс, неважно, поставщик/устройство.

Источник

2
ответ дан 8 October 2019 в 10:18

Другие вопросы по тегам:

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