GNU/Linux >> Znalost Linux >  >> Linux

Jaký je rozdíl mezi insmod a modprobe

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.


Linux
  1. Jaký je rozdíl mezi mutexem a kritickou sekcí?

  2. Jaký je rozdíl mezi strtok_r a strtok_s v C?

  3. Jaký je rozdíl mezi `su -` a `su --login`?

  1. Jaký je rozdíl mezi InnoDB a MyISAM?

  2. Rozdíl mezi [[ $a ==Z* ]] a [ $a ==Z* ]?

  3. Jaký je rozdíl mezi Git Switch a Checkout?

  1. Jaký je rozdíl mezi Redhat a centOS?

  2. Jaký je rozdíl mezi module_init a init_module v modulu jádra Linuxu?

  3. Jaký je rozdíl mezi fsck a e2fsck?