Linux / Unix komanda: insmod

"Linux / Unix" komandą " insmod" įdiegia įkraunamą modulį veikiančioje branduolyje. Insmod bando susieti modulį su veikiančiu branduoliu, pašalindamas visus simbolius iš branduolio eksportuojamos simbolių lentelės.

Jei modulio failo vardas pateikiamas be katalogų ar pratęsimo, " insmod " ieškos modulio kai kuriose bendrojo nutylėjimo kataloguose. Aplinkos kintamasis MODPATH gali būti naudojamas, kad viršyti šį numatytąjį nustatymą. Jei egzistuoja modulio konfigūracijos failas, pvz., /etc/modules.conf , jis pakeis MODPATH apibrėžtus kelius .

Aplinkos kintamasis MODULECONF taip pat gali būti naudojamas norint pasirinkti kitą konfigūracijos failą iš numatytosios / etc / modules.conf (arba / etc / conffmodules (notrecated )). Šis aplinkos kintamasis pakeis visas anksčiau pateiktas apibrėžtis.

Kai yra nustatytas aplinkos kintamasis UNAME_MACHINE , modutils naudos savo reikšmę vietoj mašininio lauko iš uname () syscall. Tai dažniausiai naudojamas, kai rengiate 64 bitų modulius 32 bitų vartotojo erdvėje arba atvirkščiai, nustatykite UNAME_MACHINE modulių tipui. Dabartiniai modutils nepalaiko modulių visiško kryžminio kūrimo režimo, jis gali apsispręsti, ar pasirinkti 32-64 bitų pagrindinės architektūros versijas.

Galimybės

-e persist_name , --persist = persist_name

Nurodo, kur bet kuris pastovus modulio duomenis skaityti iš apkrovos ir parašyti, kai šis modulio egzaminas yra iškraunamas. Ši parinktis tyliai ignoruojama, jei modulyje nėra nuolatinių duomenų. Nuolatiniai duomenys yra tik skaitomi " insmod", jei ši parinktis yra, pagal nutylėjimą " insmod" nepakeičia nuolatinių duomenų.

Stenografine forma " -e" " (tuščia eilutė) interpretuojama" insmod " kaip persistdir reikšmė , apibrėžta modules.conf , po kurios nurodomas modulio failo pavadinimas, palyginti su modulio paieškos keliu, kurio buvo rasta, atėmus bet kurį trailing ".gz", ".o" arba ".mod". Jei modules.conf nurodo " persistdir = " (ty persistdir yra tuščias laukas), ši šriftinė forma tyliai ignoruojama. (Žiūrėkite modules.conf (5).)

-f , --force

Bandoma įkelti modulį, net jei veikiančio branduolio versija ir branduolio versija, kuriai sudarytas modulis, nesutampa. Tai tik pakeičia branduolio versijos patikrinimą, ji neveikia simbolių pavadinimų patikrinimų. Jei modulio simbolių pavadinimai neatitinka branduolio, negalima įjungti modulio įkrovimo modulio.

-h , --help

Rodyti parinkčių santrauką ir iškart išeiti.

-k , --autoclean

Nustatykite modulio automatinio išvalymo vėliavėlę. Ši vėliava bus naudojama kerneld (8), siekiant pašalinti modulius, kurie nebuvo naudojami tam tikrą laiką - paprastai vieną minutę.

-L , -lokas

Naudokite pulkus (2), kad vienalaikiški to paties modulio kroviniai nebūtų.

-m , - žemėlapis

Išveskite apkrovos žemėlapį stdout, kad būtų lengviau atkurti modulį branduolio panikos atveju.

-n , --noload

Manekeno paleisti, atlikite viską, išskyrus įkėlus modulį į branduolį. Jei prašoma -m ar -O , paleisti bus sukurtas žemėlapio ar lukšto failas. Kadangi modulis nėra įkeltas, realus branduolio įkėlimo adresas yra nežinomas, todėl žemėlapio ir aplanko failas yra pagrįstas savavališku apkrovos adresu 0x12340000.

-o module_name , --name = module_name

Aiškiai nurodykite modulį, o ne vardą iš šaltinio objekto failo bazinio pavadinimo.

-O blob_name , --blob = blob_name

Išsaugokite dvejetainį objektą blob_name . Rezultatas yra dvejetainė trinkelė (be ELF antraščių), tiksliai nurodanti, kas įkeliama į branduolį po sekcijų manipuliavimo ir perkėlimo. Parinktis -m rekomenduojama gauti objekto žemėlapį.

-p , --probe

Patikrinkite modulį, kad įsitikintumėte, ar jis gali būti sėkmingai įkeltas . Tai apima objekto failo parinkimą modulio keliu, tikrinimo versijų numerius ir simbolių šalinimą. Ji netikrina perkėlimų, taip pat neparodo žemėlapio ar aplanko failo.

-P prefiksas , --prefix = prefiksas

Ši parinktis gali būti naudojama su vertikaliais moduliais SMP arba bigmem branduoliui, nes tokie moduliai turi papildomą prefiksą, pridėtą jų simbolių pavadinimuose. Jei branduolys buvo pastatytas naudojant simbolių versijas, Insmod automatiškai ištrauks prefiksą iš "get_module_symbol" arba "inter_module_get" apibrėžimo, iš kurių vienas turi egzistuoti bet kuriame branduolyje, palaikančiame modulius. Jei branduolyje nėra simbolių versijų, bet modulis buvo pastatytas su simbolių versijomis, vartotojas turi pateikti -P .

-q , - kvailas

Neskelbkite neišspręstų simbolių sąrašo. Negalima skųstis dėl versijų neatitikimo. Problema atsispindės tik " insmod" išvesties būsenoje.

-r , - šaknys

Kai kurie vartotojai modulius sukoncentruoja naudodami ne root vartotojoidą, tada modulius įdiekite kaip root. Šis procesas gali palikti modulius, kurie priklauso ne root vartotojo vardams, net jei modulių aplankas priklauso root. Jei ne root userid yra pažeistas, įsibrovėlis gali perrašyti esamus modulius, priklausančius tai vartotojo vardui, ir naudoti šią ekspoziciją, norint paleisti iš naujo iki root prieigos.

Pagal numatytuosius nustatymus modutils atsisakys bandymų naudoti modulį, kuris nepriklauso root. Nurodžius -r įjungs patikrinimą ir leis root root įkelti modulius, kurie nepriklauso root. Pastaba: numatytoji šakninio tikrinimo reikšmė gali būti pakeista, kai modutils yra sukonfigūruotas.

Naudojant -r, jei norite išjungti šaknies tikrinimą arba nustatyti numatytuosius parametrus "be root check" konfigūravimo metu, yra didelis saugumo poveikis ir nerekomenduojama.

-s , - syslog

Išveskite viską į syslog (3), o ne į terminalą.

-S , --kallimai

Priverskite pakrautą modulį turėti kallėjus duomenis, net jei branduolys jo nepalaiko. Ši parinktis yra mažoms sistemoms, kuriose branduolys yra įkeltas be duomenų, tačiau pasirinktiems modulams reikia derinimo klaidų. Ši parinktis yra "Red Hat Linux" numatytoji parinktis.

-v , --verbose

Būti verbose.

-V , --versija

Rodyti " insmod " versiją.

-X , --eksportas ; -x , --noexport

Atlikite ir neeksportuokite visų modulio išorinių simbolių atitinkamai. Pagal nutylėjimą yra eksportuojami simboliai. Ši parinktis yra efektyvi tik tuo atveju, jei modulis tiesiogiai neeksportuoja savo kontroliuojamos simbolių lentelės, taigi jis yra nebeaktualus.

-Y , --ksymoops ; -i , -noksymo

Padarykite ir nepapildykite ksymoops simbolių ksymams . Šiuos simbolius naudoja ksymoops, kad užtikrintų geresnį derinimą, jei šiame modulyje yra Oops. Numatytasis yra nustatyti ksymoops simbolius. Ši parinktis nepriklauso nuo -X / -x parinkčių.

Ksymoops simboliai prideda maždaug 260 baitų viename įkeltame modulyje. Jei esate tikrai mažai erdvės branduolio ir bandote sumažinti ksyms iki mažiausio dydžio, atlikite numatytuosius nustatymus ir tiksliau patikrinkite Oi, derindami. Ksymoops simboliai yra būtini norint išsaugoti nuolatinius modulio duomenis.

-N , -numeric-only

Tik patikrinkite modulio versijos skaitinę dalį prieš branduolio versiją, ty ignoruokite EXTRAVERSION, kai nusprendžia, ar modulis priklauso branduoliui. Ši vėliava automatiškai nustatoma nuo branduolio 2,5, tai yra neprivaloma ankstesniems branduolims.

Modulio parametrai

Kai kurie moduliai priima apkrovos laiko parametrus, kad pritaikytų jų veikimą. Šie parametrai dažnai yra I / O prievadas ir IRQ numeriai, kurie skiriasi nuo mašinos iki mašinos ir kurių negalima nustatyti pagal aparatūrą.

Moduliuose, sukurtuose 2.0 serijos branduoliams, bet koks sveikas ar simbolis rodyklės simbolis gali būti laikomas parametru ir modifikuotas. Nuo 2.1 serijos branduolių simboliai aiškiai pažymimi kaip parametrai, todėl gali būti keičiamos tik konkrečios reikšmės. Be to, pateikiama tipo informacija, skirta patikrinti įkėlimo metu pateiktas reikšmes.

Visų skaičių atveju visos reikšmės gali būti dešimtainės, aštuonkės arba šešioliktainės a la C: 17, 021 arba 0x11. Array elementai yra nurodyti seka atskirti kableliais. Elementai gali būti praleisti, praleidžiant vertę.

2.0 serijos moduliuose vertės, kurios neprasideda skaičiumi, laikomos eilutėmis. Pradedant nuo 2.1, parametro tipo informacija nurodo, ar vertę reikia interpretuoti kaip eilutę. Jei vertė prasideda dvigubomis kabutėmis ( " ), eilutė interpretuojama kaip C, pabėgėlių sekos ir visi. Atkreipkite dėmesį, kad iš apvalkalo užklausos pačios kabutės gali būti apsaugotos nuo apvalkalo interpretavimo.

GPL licencijuoti moduliai ir simboliai

Pradedant branduoliu 2.4.10, moduliai turėtų turėti licencijos eilutę, apibrėžtą naudojant MODULE_LICENSE () . Kelios eilutės pripažįstamos suderinamos su GPL; bet kokia kita licencijos eilutė arba licencija jokiu būdu nereiškia, kad modulis laikomas nuosavybe.

Jei branduolys palaiko / proc / sys / branduolį / sugadintą vėliavą, įkėlus modulį be GPL licencijos, insmod bus ARBA sugadinta vėliava su "1". Perspėjimas yra išduodamas, jei branduolys palaiko trintis ir modulis yra įkeltas be licencijos. Visada pateikiamas įspėjimas apie modulius, turinčius " MODULE_LICENSE" () , kuris nėra suderinamas su "GPL", net senesniuose branduoliuose, kurie nepalaiko piktogramų. Tai sumažina įspėjimus, kai senesniuose branduoliuose naudojami nauji modutils.

Insmod -f (jėgos) režimas ARBA sugadinta vėliava su "2" ant branduolių, kurie palaiko dezinfekciją. Jis visada išleidžia įspėjimą.

Kai kurie branduolio kūrėjai reikalauja, kad jų kodą eksportuojami simboliai būtų naudojami tik moduliuose su GPL suderinama licencija. Šie simboliai eksportuojami EXPORT_SYMBOL_GPL vietoje įprasto EXPORT_SYMBOL . GPL tik simboliai, kuriuos eksportuoja branduolys ir kiti moduliai, matomi tik moduliams su GPL suderinama licencija, šie simboliai rodomi / proc / ksyms su prefiksu " GPLONLY_ ". Insmod ignoruoja prefiksą GPLONLY_ ant simbolių, kai pakraunamas GPL licenzijuotas modulis, todėl modulis nurodo įprastą simbolio pavadinimą be prefikso. GPL simboliai nėra prieinami moduliams be GPL suderintos licencijos, tai apima modulius be licencijos.

Ksymoops Assistance

Kad padėtume derinti branduolį Oi, naudodamiesi moduliais, " insmod" pagal numatytuosius nustatymus įtraukia kai kuriuos simbolius į ksyms, žr. -Y parinktį. Šie simboliai prasideda __insmod_modulename_ . Modulio pavadinimas reikalingas, kad simboliai taptų unikalūs. Tais pačiais tikslais galima įkelti tą patį objektą daugiau nei vieną kartą skirtinguose modulių pavadinimuose. Šiuo metu apibrėžti simboliai yra:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

Objekto failas yra failo, kurį objektas buvo įkeltas, pavadinimas. Tai užtikrina, kad ksymoops gali suderinti kodą su tinkamu objektu. Mtime yra paskutinė modifikuota laiko žymė toje byloje hex, nulis, jei stat nepavyko. versija yra branduolio versija, kuria sudarytas modulis, -1 jei nėra versija. Simbolis _O turi tą patį pradžios adresą kaip ir modulio antraštė.

__insmod_modulename_Ssectionname_Llength

Šis simbolis pasirodo pasirinktų ELF sekcijų pradžioje, šiuo metu yra .text, .rodata, .data, .bss ir .sbss. Tai atrodo tik tada, kai skiltyje yra nulinis dydis. sectionname yra ELF sekcijos pavadinimas, ilgis - sekcijos dešimtainės dalies ilgis. Šie simboliai padeda ksymoops žemėlapio adresus sekcijoms, kai nėra simbolių.

__insmod_modulename_Ppersistent_filename

Sukurtas tik " insmod", jei modulis turi vieną ar daugiau parametrų, kurie pažymėti kaip nuolatiniai duomenys, ir failo vardas išsaugoti nuolatinius duomenis (žr. -e , aukščiau).

Kita problema, susijusi su derinimo branduoliu Oi, moduliuose yra tai, kad / proc / ksyms ir / proc / moduliai gali keistis tarp "Oops" ir kai apdorojote žurnalo failą. Kad padėtų išspręsti šią problemą, jei egzistuoja katalogas / var / log / ksymoops, insmod ir rmmod automatiškai kopijuoja / proc / ksyms ir / proc / modules į / var / log / ksymoops su prefiksu `date +% Y% m ' % d% H% M% S ". Sistemos administratorius gali pasakyti, ksymoops, kokius momentinių nuotraukų failus naudoti, kai deriname Oi. Nėra šios jungties, kad būtų galima išjungti šią automatinę kopiją. Jei nenorite, kad tai įvyktų, nesukurkite / var / log / ksymoops . Jei šis katalogas egzistuoja, jis turėtų priklausyti root ir būti 644 ar 600 režimu, ir šį dieną turėtumėte paleisti šį scenarijų. Žemiau esantis scenarijus yra įdiegtas kaip insmod_ksymoops_clean .

Pagrindinė informacija, kurią reikia žinoti

VARDAS

insmod - įdiegti įkeliamą branduolio modulį

SANTRAUKA

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P prefix ] modulis [ symbol = value ...]