udev загружает необходимые модули драйверов при подключении устройства с возможностью горячей замены. Это делается следующим правилом udev
DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{builtin}="kmod load $env{MODALIAS}"
Поэтому kmod вызывается, например. kmod load hid:b0005g0001v0000045Ep000002E0
Исходный код встроенного kmod задокументирован здесь< /а>
hid:b0005g0001v0000045Ep000002E0
— это просто псевдоним модуля вроде hid_xpadneo
.
Я знаю, что в /usr/lib/modules/$(uname -r)/modules.alias
создается файл с именем modules.alias, где эти псевдонимы перечислены следующим образом:
alias hid:b0005g*v0000045Ep000002E0 hid_xpadneo
alias hid:b0005g*v0000045Ep000002FD hid_xpadneo
Этот файл генерируется из всех драйверов и их MODULE_DEVICE_TABLE во время компиляции.
К сожалению, я не могу найти, где именно kmod читает этот файл или откуда он получает информацию о псевдониме.
Следовательно: как kmod узнает, какой псевдоним соответствует какому модулю?