Vse o ukazu Linux/Unix: modprobe

The jedro Linuxa je prerasel v velik kos programske opreme. Na nek način je to dobra stvar. Pri drugih ga naredi nekoliko neprilagodljivega. Rešitev je, da dele jedra razbijemo na module. Te module je mogoče naložiti ali ne, glede na konfiguracijo računalnika in vaše potrebe. Ukaz modprobe naloži nove module jedra v sistemu Linux, kar vam omogoča, da omogočite nove funkcije in podporo brez ponovnega zagona.

Portret mladega arhitekta, ki uporablja prenosnik v pisarni
Westend61 / Getty Images

Uporaba Modprobe

Modprobe je običajno preprost za uporabo. Ko poznate modul jedra, ki ga želite naložiti, ga posredujte ukazu modprobe.

sudo modprobe rtl8723de

To je vse. Modul se naloži, dokler ne zaženete sistema.

Če želite odstraniti modul brez ponovnega zagona, znova zaženite ukaz z -r zastavo.

sudo modprobe -r rtl8723de

Večinoma tako delate z modprobe. Če želite izvedeti več, si oglejte spodnjo tehnično dokumentacijo.

Tehnična dokumentacija Modprobe

Ukaz modprobe izvaja obdelavo na visoki ravni z moduli, ki jih je mogoče naložiti.

Povzetek

modprobe

 [-adnqv] [-C konfigur] modul [simbol=vrednost ...] modprobe [-adnqv] [-C konfigur] [-t tip] vzorec modprobe -l [-C konfigur] [-t tip] vzorec modprobe -c [-C konfigurmodprobe -r [-dnv] [-C konfigur] [modul ...] modprobe -Vh.

Opcije

-a, --vse

Naložite vse ujemajoče se module, namesto da se ustavite po prvem uspešnem nalaganju.

-c, --showconfig

Pokaži trenutno uporabljeno konfiguracijo.

-C, --configkonfigur

Uporabite datoteko konfigur namesto (neobvezno) /etc/modules.conf da določite konfiguracijo. Spremenljivka okolja MODULECONF lahko uporabite tudi za izbiro (in preglasitev) drugačne konfiguracijske datoteke od privzete /etc/modules.conf (oz /etc/conf.modules ki je zastarel).

Ko spremenljivka okolja UNAME_MACHINE je nastavljen, modutils uporablja svojo vrednost namesto strojnega polja iz sistemskega klica uname(). To se uporablja predvsem pri prevajanju 64-bitnih modulov v 32-bitnem uporabniškem prostoru ali obratno, nastavite UNAME_MACHINE glede na vrsto modulov. Trenutni modutils ne podpira polnega načina navzkrižne gradnje za module, omejen je na izbiro med 32-bitni in 64-bitni različice arhitekture gostitelja.

-d, --odpravljanje napak

Pokažite informacije o notranji predstavitvi sklada modulov.

-h, --pomoč

Prikažite povzetek možnosti in takoj zapustite.

-k, --avtomatsko čiščenje

Nastavite samodejno čiščenje na naloženih modulih. Uporablja ga jedro, ko pokliče modprobe, da zadovolji manjkajočo funkcijo (priloženo kot modul). The -q možnost je implicirana z -k. Te možnosti se samodejno pošljejo insmodu.

-n, --pokaži

Ne izvajajte dejanja, samo pokažite, kaj bi bilo storjeno.

-q, --tih

Ne pritožujte se, da insmod ni namestil modula. Nadaljujte kot običajno, vendar tiho, z drugimi možnostmi za testiranje modprobe. Ta možnost je samodejno poslana insmodu.

-r, --Odstrani

Odstranite modul (skupine) ali naredite samodejno čiščenje, odvisno od tega, ali so v ukazni vrstici omenjeni moduli.

-s, --syslog

Poročilo prek syslog namesto stderr. Ta možnost je samodejno poslana insmodu.

-ttip modula; --vrstatip modula

Upoštevajte samo module te vrste. modprobe gleda samo module, katerih pot imenika natančno vključuje /moduletype/. tip modula lahko vključuje več kot eno ime imenika, npr. -tgonilniki/net navaja module v xxx/vozniki/net/ in njegove podimenike.

-v, --podrobno

Natisnite vse ukaze, ko se izvajajo.

-V, --različica

Prikažite različico modprobe.

Imena modulov ne smejo vsebovati poti (št /), prav tako ime ne sme vsebovati konca .o. na primer zdrs je veljavno ime modula za modprobe, /lib/modules/2.2.19/net/slip in slip.o so neveljavne. To velja za ukazno vrstico in vnose v konfiguraciji.

Opis ukaza

Pripomočki modprobe in depmod naj bi naredili modularno jedro Linuxa bolj obvladljivo za uporabnike, skrbnike in vzdrževalcem distribucije.

Modprobe uporablja datoteko odvisnosti, podobno datoteki Makefile, ki jo je ustvaril depmod, da samodejno naloži ustrezne module iz nabora modulov, ki so na voljo v vnaprej določenih drevesih imenikov.

Modprobe se uporablja za nalaganje posameznega modula, niza odvisnih modulov ali vseh modulov, ki so označeni z določeno oznako.

Modprobe samodejno naloži vse potrebne osnovne module v skladu modulov, kot je opisano v datoteki odvisnosti moduli.dep. Če nalaganje enega od teh modulov ne uspe, se samodejno razbremeni celoten trenutni sveženj modulov, naloženih v trenutni seji.

Modprobe ima dva načina nalaganja modulov. Eden od načinov (način sondiranja) bo poskušal naložiti modul s seznama (opredeljen s vzorec). Modprobe se preneha nalagati takoj, ko se en modul uspešno naloži. To lahko uporabite za samodejno nalaganje enega gonilnika Ethernet s seznama. Drugi način uporabe modprobe je nalaganje vseh modulov s seznama.

Z opcijo -r, modprobe samodejno razloži kup modulov, podobno kot na način rmmod -r ne. Uporaba samo modprobe -r očisti neuporabljene samodejno naložene module in izvede tudi ukaze pred in po odstranitvi v konfiguracijski datoteki /etc/modules.conf.

Kombinacija možnosti -l in -t navaja vse razpoložljive module določene vrste.

Možnost -c natisne trenutno uporabljeno konfiguracijo (privzeto + konfiguracijska datoteka).

Konfiguracija

Obnašanje modprobe (in depmod) je mogoče spremeniti s (izbirno) konfiguracijsko datoteko /etc/modules.conf. Za podroben opis, kaj lahko vsebuje ta datoteka, kot tudi privzeto konfiguracijo, ki jo uporabljata depmod in modprobe, glejte modules.conf(5).

Ukazi pred in po odstranitvi se ne izvedejo, če jedro samodejno očisti modul. Namesto tega poiščite prihajajočo podporo za trajno shranjevanje modulov. Če želite uporabiti funkcije pred in po namestitvi, izklopite samodejno čiščenje za jedro in namesto tega vstavite nekaj takega, kot je naslednja vrstica v crontab (to se uporablja tudi za sisteme kmod) za samodejno čiščenje vsaka 2 minute:

*/2 * * * * test -f /proc/modules && /sbin/modprobe -r

strategija

Ideja je, da bo modprobe najprej iskal v imeniku, ki vsebuje module, prevedene za trenutno izdajo jedra. Če modula tam ni mogoče najti, modprobe poišče imenik, ki je skupen različici jedra (na primer 2.0, 2.2). Če modula še vedno ni mogoče najti, modprobe v imeniku, ki vsebuje module, poišče privzeto izdajo in tako naprej.

Ko namestite nov Linux, je treba module premakniti v imenik, povezan z izdajo (in različico) jedra, ki ga nameščate. Nato naredite simbolno povezavo iz tega imenika do privzetega imenika.

Vsakič, ko prevedete novo jedro, ukaz naredi modules_install ustvari nov imenik, vendar ne bo spremenil privzete povezave.

Ko dobite modul, ki ni povezan z distribucijo jedra, ga postavite v enega od imenikov, ki so neodvisni od različice, pod /lib/modules.

To je privzeta strategija, ki jo je mogoče preglasiti /etc/modules.conf.

Primeri

modprobe -t net

Naložite enega od modulov, ki so shranjeni v označenem imeniku mreža. Vsak modul se preizkusi, dokler eden ne uspe.

modprobe -a -t zagon

Vsi moduli, ki so shranjeni v imenikih, so označeni škorenj so naloženi.

zdrs modprobe

To poskuša naložiti modul slhc.o če ni bil predhodno naložen, ker slip modul potrebuje funkcionalnost v modulu slhc. Ta odvisnost je opisana v datoteki moduli.dep ki ga je samodejno ustvaril depmod.

modprobe -r zdrs

To razbremeni drsni modul. Prav tako samodejno razloži modul slhc, razen če ga uporablja tudi kakšen drug modul (na primer ppp).

Poglej tudi: depmod(8), lsmod (8), jedro (8), ksyms (8), rmmod(8).

Varni način

Če efektivni uid ni enak dejanskemu uid, modprobe svoj vnos obravnava s skrajnim sumom. Zadnji parameter se vedno obravnava kot ime modula, tudi če se začne z -. Obstaja lahko samo eno ime modula in možnosti obrazca spremenljivka=vrednost so prepovedani. Ime modula se vedno obravnava kot niz, v varnem načinu se meta razširitev ne izvede. Vendar se meta razširitev uporablja za podatke, prebrane iz konfiguracijske datoteke.

euid morda ni enak uid, ko se modprobe pokliče iz jedra, to velja za jedra 2.4.0-test11 in novejše. V idealnem svetu bi modprobe lahko zaupal jedru, da bo modprobe posredoval samo veljavne parametre. Vendar pa je prišlo do vsaj enega lokalnega korenskega izkoriščanja, ker je visokonivojska koda jedra posredovala nepreverjene parametre neposredno od uporabnika v modprobe. Torej modprobe ne zaupa več vhodu jedra.

modprobe samodejno nastavi varen način, ko je okolje sestavljeno samo iz teh nizov.

DOMOV=/
TERM=linux
POT=/sbin:/usr/sbin:/bin:/usr/bin

To zazna izvedbo modprobe iz jedra v jedrih 2.2 do 2.4.0-test11, tudi če je uid == euid, kar počne v prejšnjih jedrih.

Ukazi za beleženje

Če imenik /var/log/ksymoops obstaja in modprobe se zažene z možnostjo, ki lahko naloži ali izbriše modul, modprobe zabeleži svoj ukaz in vrne status v /var/log/ksymoops/'datum +%Y%m%d.log'. Ni stikala za onemogočanje tega samodejnega beleženja, če ne želite, da se pojavi, ne ustvarjajte /var/log/ksymoops. Če ta imenik obstaja, bi moral biti v lasti root in biti v načinu 644 ali 600 ter zagnati skript insmod_ksymoops_clean vsak dan ali tako.

Zahtevani pripomočki

depmod (8), insmod (8).

Uporabi človek ukaz (% človek), da vidite, kako se ukaz uporablja v vašem računalniku.