Během vývoje obvykle používáte k načtení modulu insmod a měla by mu být dána cesta k načtení modulu:
$ insmod filename [module-options]
Je to nízkoúrovňová forma načítání modulů, která tvoří základ dalších metod načítání modulů, a je to ta, kterou budeme používat v této knize. Na druhé straně existuje modprobe, většinou používaný systémovými administrátory nebo v produkčním systému. modprobe je chytrý příkaz, který analyzuje soubor modules.dep, aby se nejprve načetly závislosti, před načtením daného modulu. Automaticky zpracovává závislosti modulů, jako to dělá správce balíčků:
$ modprobe module-name
insmod | modprobe |
Načte modul zadaný jako ‚insmod /cesta/k/modulu.ko‘ | Načte modul pouze v /lib/modules/$(uname -r). ‘modprobe /home/test/hello.ko’ nebude fungovat |
Pokud existují závislosti, nejsou načteny | modprobe vypočítá závislosti, načte závislosti a poté hlavní modul |
Jak modprobe počítá závislosti?
Modprobe závisí na nástroji depmod pro výpočet závislostí. depmod vypočítá závislosti všech modulů přítomných ve složce /lib/modules/$(uname -r) a umístí informace o závislostech do souboru /lib/modules/$(uname -r)/modules.dep
Např. kernel/drivers/net/wireless/admtek/adm8211.ko:kernel/net/mac80211/mac80211.ko kernel/net/wireless/cfg80211.ko kernel/drivers/misc/eeprom/eeprom_93cx6.ko
V tomto případě se nejprve načte eeprom_93cx6.ko, cfg80211.ko a poté adm8211.ko
Moduly se načítají zprava doleva a odebírají zleva doprava. Takže zatímco se odstraní adm8211.ko, pak cfg80211.ko a nakonec eeprom_93cx6.ko. Můžeme znovu načíst soubor modules.dep spuštěním příkazu „depmod -a“
Shrnutí
insmod je příkaz pro správu systému, který načte název souboru modulu do jádra. Jednodušší, ale méně flexibilní než příkaz modprobe. Chybové zprávy z insmod mohou být vágní, protože jádro provádí operace modulu interně, a proto posílá chybové informace do protokolu jádra namísto standardního výstupu; viz dmesg.
Informace v souborech module.* používá příkaz modprobe k vyhledání modulu podle názvu, nikoli podle úplné cesty. modprobe má mnoho dalších funkcí, které jsou popsány v manuálu.
Informace o závislosti modulu využívají také správci zařízení, zejména udev. Když je detekován nový hardware, například nové USB zařízení, démon udevd je upozorněn a předán dodavateli a z hardwaru jsou načtena ID produktů. udevd prohledá soubory závislostí modulů a hledá modul, který zaregistroval tato ID. Pokud je nalezen, načte se pomocí modprobe.