Linux / Unix komanda: insmod

Linux / Unix komandas insmod instalē ielādes moduli darbojas kodols. Insmod mēģina saistīt moduli ar darbības kodolu, atrisinot visus simbolus no kodola eksportētās simbolu tabulas.

Ja moduļa faila nosaukums tiek piešķirts bez direktorijiem vai paplašinājuma, insmod meklēs moduli dažos kopīgos noklusējuma direktorijās. Vides mainīgo MODPATH var izmantot, lai ignorētu šo noklusējumu. Ja pastāv moduļa konfigurācijas fails, piemēram, /etc/modules.conf , tas ignorēs MODPATH definētos ceļus .

Vides mainīgo MODULECONF var izmantot arī, lai atlasītu citu konfigurācijas failu no noklusējuma /etc/modules.conf (vai /etc/conf.modules ( notrecated )). Šis vides mainīgais ignorēs visas iepriekš minētās definīcijas.

Ja ir iestatīts vides mainīgais UNAME_MACHINE , modutils izmantos savu vērtību, nevis mašīnas lauku no uname () syscall. Tas galvenokārt tiek izmantots, kad jūs apkopojat 64 bitu moduļus 32 bitu lietotāja telpā vai otrādi, uzstādiet UNAME_MACHINE moduļa tipam. Pašreizējie modutils neatbalsta moduļu pilnas pārrobežu sastādīšanas režīmu; to var izvēlēties tikai no resursdatora arhitektūras 32- un 64 bitu versijas.

Iespējas

-e persist_name , --persist = persist_name

Norāda, kur no moduļa tiek ielādēti moduļa pastāvīgie dati, un tie tiek rakstīti, kad šis moduļa eksemplārs ir izkrauts. Ja modulim nav ilgstošu datu, šī opcija tiek klusi ignorēta. Pastāvīgi dati tiek lasīti tikai insmod, ja ir šī opcija, pēc noklusējuma insmod nepārstrādā pastāvīgus datus.

Stenogrāfiskā formā -e "" (tukša virkne) tiek interpretēta ar insmodpersistdir vērtību, kā definēts modules.conf , kam seko moduļa faila nosaukums attiecībā pret moduļa meklēšanas ceļu, kurā tas tika atrasts, atskaitot jebkuru aizmugurē ".gz", ".o" vai ".mod". Ja modules.conf norāda " persistdir = " (ti, persistdir ir tukšs lauks), tad šo stenogrāfisko formu klusi ignorē. (Skatīt moduļus.conf (5).)

-f , - spēks

Mēģinājums ielādēt moduli pat tad, ja darbības koda versija un tā kodola versija, par kuru modulis ir apkopots, nesakrīt. Tas tikai ignorē kodola versijas pārbaudi, tas neietekmē simbolu nosaukumu pārbaudes. Ja moduļa simbola nosaukumi nesakrīt ar kodolu, tad nav iespējams piespiest insmod ielādēt moduli.

-h , --palīdz

Parādiet opciju kopsavilkumu un tūlīt aizejiet.

-k , --autoclean

Iestatiet modulī automātisko tīrītāja karti. Šo karogu izmantos kerneld (8), lai noņemtu moduļus, kas nav izmantoti kādā laika periodā - parasti viena minūte.

-L , - bloķēt

Izmantojiet ganāmpulku (2), lai nepieļautu viena moduļa vienlaicīgu slodzi.

-m , - karte

Izejiet slodzes karti par stdout, tādējādi atvieglojot moduļa atkļūdošanu kodola panikas gadījumā.

-n , --noload

Manekena palaist, dariet visu, izņemot moduļa ielādi kodolā. Ja to pieprasa -m vai -O , palaist tiks izveidots kartes vai loba fails. Tā kā modulis nav ielādēts, reālā kodola ielādes adrese nav zināma, tāpēc kartes un lāpas faila pamatā ir patvaļīga slodzes adrese 0x12340000.

-o modulis_vārds , -name = modulis_vārds

Skaidri nosauc moduli, nevis iegūst nosaukumu no avota objekta faila bāzes nosaukuma.

-O blob_name , --blob = blob_name

Saglabājiet bināro objektu blob_name . Rezultāts ir binārā lāņa (bez ELF galvenēm), kas precīzi parāda, kas tiek ielādēts kodolā pēc sekciju manipulācijas un pārvietošanas. Opcija -m ir ieteicams iegūt objekta karti.

-p , --probe

Izmēģiniet moduli, lai noskaidrotu, vai tas var tikt veiksmīgi ielādēts . Tas ietver objekta faila novietojumu moduļa ceļā, versiju numuru pārbaudi un simbolu atrisināšanu. Tas nekontrolē pārvietošanu, kā arī nerada karti vai lāpas failu.

-P prefikss , --prefix = prefikss

Šo opciju var izmantot ar versiju moduļiem SMP vai bigmem kodolam, jo ​​šādiem moduļiem ir pievienots papildu prefikss to simbolu nosaukumos. Ja kodols ir uzbūvēts ar simbolu versijām, tad insmod automātiski iegūst prefiksu no definīcijas "get_module_symbol" vai "inter_module_get", no kuriem viens jāpārstāv jebkurā kodolā, kas atbalsta moduļus. Ja kodolam nav simbolu versiju, bet modulis ir uzbūvēts ar simbolu versijām, tad lietotājam ir jāpievieno -P .

-q , --jauks

Nepublicējiet neatrisināto simbolu sarakstu. Nesūdzieties par versiju neatbilstību. Problēma tiks atspoguļota tikai insmod statusa iziešanas statusā.

-r , - root

Daži lietotāji sastāda moduļus, izmantojot rootkodu, un tad instalē moduļus kā root. Šis process var atstāt moduļus, kas pieder lietotājam, kas nav root, pat ja moduļu direktorija pieder root. Ja non-root userid ir apdraudēta, iebrucējs var pārrakstīt esošos moduļus, kas pieder šim lietotāja ID, un izmantot šo ekspozīciju, lai sāktu piekļuvi root piekļuvei.

Pēc noklusējuma modutils noraidīs mēģinājumus izmantot moduli, kas nav saknes īpašnieks. Norādot -r, pārslēgsies pārbaude un ļauj root ielādēt moduļus, kas nav root. Piezīme. Robočpārbaudes noklusējuma vērtību var mainīt, kad modutils ir konfigurēts.

Izmantojot -r, lai atspējotu root pārbaudi vai noklusējuma iestatīšanu "bez root pārbaudīt" konfigurācijas laikā, ir liela drošības iedarbība un nav ieteicama.

-s , - syslog

Izejiet visu līdz syslog (3) termināļa vietā.

-S , - kalliski

Iedarbiniet ielādes moduli, lai tas būtu kallasyms datu, pat ja kodols to neatbalsta. Šī opcija ir paredzēta mazām sistēmām, kurās kodols tiek ielādēts bez kallu datu, bet izvēlētajiem moduļiem ir nepieciešami kabeļu atkļūdošanas līdzekļi. Šī opcija ir Red Hat Linux noklusējuma versija.

-v , --verbose

Esi verbose.

-V --versija

Parādiet insmod versiju.

-X , - eksports ; -x , --noexport

Veiciet un nepārbaudiet attiecīgi visus moduļa ārējos simbolus. Noklusētais ir simbolu eksportam. Šī opcija ir efektīva tikai tad, ja modulis nepārprotami neeksportē savu kontrolēto simbolu tabulu un tādējādi ir novecojis.

-Y , --piemokļi ; -i , -noksmikops

Veiciet un nepievienojiet ksymoops simbolus ksyms. Šos simbolus izmanto ksymoops, lai nodrošinātu labāku atkļūdošanu, ja šajā modulī ir Oops. Noklusējuma iestatījums ir ksymoops simbolu definēšanai. Šī opcija nav atkarīga no -X / -x opcijām.

Ksymoops simboli katram ielādes modulim pievieno aptuveni 260 baiti. Ja vien jūs patiešām nesaprotat kodola telpu un mēģināt samazināt ksimus līdz minimālajam izmēram, veiciet noklusējuma darbības un iegūstiet precīzāku. Ogi, atkļūdošanu. Ksymoops simboli ir nepieciešami, lai saglabātu noturīgus moduļa datus.

-N , -numeric-only

Tikai pārbaudiet moduļa versijas skaitlisko daļu pret kodola versiju, ti, ignorējiet EXTRAVERSION, ja izlemjat, vai modulis pieder kodolam. Šis karodziņš tiek automātiski iestatīts uz 2. un 3. kodolu, tas ir obligāti iepriekšējiem kodoliem.

Moduļa parametri

Daži moduļi pieņem ielādes laika parametrus, lai pielāgotu to darbību. Šie parametri bieži vien ir I / O porti un IRQ numuri, kas atšķiras no mašīnas uz iekārtu, un to nevar noteikt no aparatūras.

Moduļiem, kas izveidoti 2.0 sērijas kodoliem, jebkuru veselu vai rakstzīmju rādītāju simbolu var uzskatīt par parametru un modificēt. Sākot ar 2.1 sērijas kodoliem, simboli tiek skaidri atzīmēti kā parametri, lai varētu mainīt tikai noteiktas vērtības. Turklāt informācija par tipu ir paredzēta, lai pārbaudītu vērtības, kas norādītas ielādes laikā.

Attiecībā uz veseliem skaitļiem visas vērtības var būt decimāldaļas, astoņu vai heksadecimālu la C: 17, 021 vai 0x11. Array elementi ir norādīti secībā, atdalīti ar komatiem. Elementi var tikt izlaisti, atstājot vērtību.

2.0 sērijas moduļos vērtības, kas nav sākas ar skaitli, tiek uzskatītas par virknes. Sākot ar 2.1., Parametra veida informācija norāda, vai vērtību interpretēt kā virkni. Ja vērtība sākas ar dubultkuporādēm ( " ), virkne tiek interpretēta kā C, escape secības un visi. Jāatzīmē, ka no čaulas uzvednes pašas pēdiņas, iespējams, būs jāaizsargā pret apvalka interpretāciju.

GPL licencētie moduļi un simboli

Sākot ar kodolu 2.4.10, moduļiem jābūt licences virknē, kas definēta, izmantojot MODULE_LICENSE () . Vairākas virknes tiek atzītas par saderīgām ar GPL; jebkura cita licenču virkne vai nekāda licence vispār nozīmē, ka modulis tiek uzskatīts par patentētu.

Ja kodols atbalsta karti / proc / sys / kernel / tainted, tad insmod VAR vai bojāts karodziņš ar "1", ielādējot moduli bez GPL licences. Tiek izsniegts brīdinājums, ja kodols atbalsta tainting un modulis tiek ielādēts bez licences. Brīdinājums vienmēr tiek izsniegts moduļiem, kuriem ir MODULE_LICENSE (), kas nav saderīgs ar GPL, pat vecākiem kodoliem, kas neatbalsta piesārņojumu. Tas samazina brīdinājumus, ja vecajos kodolos tiek izmantoti jauni moduļi.

Insmod -f (spēka) režīms VAI bojātu karodziņu ar "2" uz kodoliem, kas atbalsta tainting. Tas vienmēr brīdina.

Daži kodola izstrādātāji pieprasa, lai simboli, kurus eksportē pēc to koda, varētu izmantot tikai moduļi ar GPL saderīgu licenci. Šos simbolus eksportē EXPORT_SYMBOL_GPL, nevis parasto EXPORT_SYMBOL . GPL tikai simboli, ko eksportē kodols un citi moduļi, ir redzami tikai moduliem ar GPL saderīgu licenci, šie simboli parādās / proc / ksyms ar prefiksu " GPLONLY_ ". Insmod ignorē prefiksu GPLONLY_ uz simboliem, iekraujot GPL licencēto moduli, tāpēc modulis vienkārši atsaucas uz parasto simbola nosaukumu bez prefiksa. GPL tikai simboli nav pieejami moduļiem bez GPL saderīgas licences, tas ietver moduļus, kuriem vispār nav licences.

Ksymoops Assistance

Lai palīdzētu koda atkļūdošanai, Oops, izmantojot moduļus, insmod pēc noklusējuma pievieno dažus simbolus ksyms, skatiet -Y opciju. Šie simboli sākas ar __insmod_modulename_ . Moduļa nosaukums ir nepieciešams, lai padarītu simbolus unikālu. Ir likumīgi ielādēt to pašu objektu vairāk nekā vienu reizi, izmantojot dažādus moduļu nosaukumus. Pašlaik definētie simboli ir:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

Objekta fails ir faila nosaukums, no kura objekts tika ielādēts. Tas nodrošina, ka ksymoops var saskaņot kodu ar pareizo objektu. mtime ir pēdējais šī faila atjaunotais laikspiedols hex, nulle, ja stat neizdevās. versija ir kodola versija, par kuru tika izveidots modulis, -1 ja versija nav pieejama. Simbolam _O ir tāda pati sākuma adrese kā moduļa galvenei.

__insmod_modulename_Ssectionname_Llength

Šis simbols parādās atlasīto ELF sekciju sākumā, pašlaik .text, .rodata, .data, .bss un .sbss. Tas parādās tikai tad, ja sadaļai nav nulles lieluma. sadaļas nosaukums ir ELF sadaļas nosaukums, garums ir sadaļas garums pēc decimāldaļas. Šie simboli palīdz ksymoops kartes adreses sadaļām, ja nav simbolu.

__insmod_modulename_Ppersistent_filename

Izveido tikai insmod, ja modulim ir viens vai vairāki parametri, kas ir atzīmēti kā noturīgi dati, un ir pieejams faila nosaukums, lai saglabātu noturīgus datus (skatīt -e , iepriekš).

Otra problēma ar atkļūdošanas kodolu Oops moduļos ir tas, ka / proc / ksyms un / proc / moduļu saturs var mainīties starp Oops un kad jūs apstrādājat žurnāla failu. Lai palīdzētu pārvarēt šo problēmu, ja pastāv direktorija / var / log / ksymoops , insmod un rmmod automātiski kopē / proc / ksyms un / proc / modules ar / var / log / ksymoops ar prefiksu `date +% Y% m % d% H% M% S`. Sistēmas administrators var pateikt, ksymoops, kuri momentuzņēmumu faili tiek izmantoti, kad ir atrisināta Oops. Nav automātiskas slēdža, lai atspējotu šo automātisko kopiju. Ja jūs nevēlaties, lai tas notiek, nerādiet / var / log / ksymoops . Ja šī direktorija pastāv, tā pieder root un jābūt režīmam 644 vai 600, un jums vajadzētu palaist šo skriptu katru dienu vai arī tā. Zemāk esošais skripts ir instalēts kā insmod_ksymoops_clean .

Pamatinformācija, kas jāzina

NAME

insmod - instalējiet ielādējamu kodola moduli

SINOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P prefikss ] modulis [ simbols = vērtība ...]