Linux kodols

Linux kodola moduļu pārvaldība

Linux kodola moduļu pārvaldība

Izpratne par Linux kodolu

Linux kodols ir Linux operētājsistēmas kodols. Tas satur galvenos komponentus aparatūras novēršanai un ļauj gan sazināties, gan mijiedarboties starp lietotāju un aparatūru. Linux kodols nav monolīta sistēma, bet ir diezgan elastīga, un kodolu paplašina tā sauktie kodola moduļi.

Kas ir kodola modulis?

Parasti kodola modulis ir “koda gabals, kuru pēc pieprasījuma var ielādēt un izkraut kodolā. Tie paplašina kodola funkcionalitāti bez nepieciešamības pārstartēt sistēmu ”[1]. Tas ekspluatācijas laikā rada ļoti lielu elastību.

Turklāt “kodola moduli var konfigurēt kā iebūvētu vai ielādējamu. Lai moduli dinamiski ielādētu vai noņemtu, kodola konfigurācijā tas jākonfigurē kā ielādējams modulis ”[1]. Tas tiek darīts kodola avota failā / usr / src / linux /.konfigurēt [2]. Iebūvētie moduļi ir apzīmēti ar “y”, bet ielādējamie moduļi ar “m”. Piemēram, 1. saraksts to parāda SCSI modulim:

1. saraksts: SCSI moduļa lietošanas deklarācija

CONFIG_SCSI = y # iebūvētais modulis
CONFIG_SCSI = m # ielādējams modulis
Mainīgais # CONFIG_SCSI # nav iestatīts

Mēs neiesakām tieši rediģēt konfigurācijas failu, bet, lai definētu atbilstošā moduļa lietošanu Linux kodolā, izmantojiet komandu “make config”, “make menuconfig” vai “make xconfig”.

Moduļa komandas

Linux sistēmā ir iekļautas vairākas dažādas komandas kodola moduļu apstrādei. Tas ietver to moduļu uzskaitīšanu, kas pašlaik ir ielādēti Linux kodolā, parāda moduļu informāciju, kā arī kodola moduļu ielādi un izkraušanu. Zemāk mēs sīkāk izskaidrosim šīs komandas.

Pašreizējiem Linux kodoliem šādas komandas nodrošina pakete kmod [3]. Visas komandas ir simboliskas saites uz kmod.

Pašlaik ielādēto moduļu saraksts ar lsmod

Mēs sākam ar komandu lsmod. lsmod saīsina “list moduļus” un parāda visus moduļus, kas pašlaik ielādēti Linux kodolā, labi formatējot faila / proc / modules saturu. 2. saraksts parāda tā izvadi, kas sastāv no trim kolonnām: moduļa nosaukums, atmiņā izmantotais izmērs un citi kodola moduļi, kas izmanto šo konkrēto.

2. saraksts: lsmod izmantošana

$ lsmod
Moduļa izmērs, ko izmanto
ctr 12927 2
ccm 17534 2
snd_hrtimer 12604 1
snd_seq 57112 1
snd_seq_device 13132 1 snd_seq

$

Atrodiet pašreizējam kodolam pieejamos moduļus

Var būt pieejami kodola moduļi, par kuriem jūs vēl nezināt. Tie tiek glabāti direktorijā / lib / modules. Izmantojot meklēšanu, apvienojumā ar komandu uname, varat izdrukāt šo moduļu sarakstu. “Uname -r” tikai izdrukā pašreiz darbināmā Linux kodola versiju. 3. saraksts to parāda vecākiem 3.16.0–7 Linux
kodolu un parāda IPv6 un IRDA moduļus.

3. saraksts: pieejamo moduļu parādīšana (atlase)

$ find / lib / modules / $ (uname -r) -name '*.ko '
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / ipv6 / ip6_vti.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / ipv6 / xfrm6_tunnel.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / ipv6 / ip6_tunnel.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / ipv6 / ip6_gre.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / irda / irnet / irnet.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / irda / irlan / irlan.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / irda / irda.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / irda / ircomm / ircomm.ko
/ lib / moduļi / 3.16.0-7-amd64 / kodols / net / irda / ircomm / ircomm-tty.ko

$

Parādīt moduļa informāciju, izmantojot modinfo

Komanda modinfo stāsta vairāk par pieprasīto kodola moduli (“moduļa informācija”). Kā parametrs modinfo pieprasa pilnu moduļa ceļu vai vienkārši moduļa nosaukumu. 4. saraksts to parāda IrDA kodola modulim, kas nodarbojas ar tiešās infrasarkanās piekļuves protokola kaudzīti.

4. saraksts: informācija par moduļa parādīšanu

$ / sbin / modinfo irda
faila nosaukums: / lib / modules / 3.16.0-7-amd64 / kodols / net / irda / irda.ko
aizstājvārds: net-pf-23
licence: GPL
apraksts: Linux IrDA protokola kaudze
autors: Dags Brattli & Jean Tourrilhes
atkarīgs: crc-ccitt
vermagisks: 3.16.0-7-amd64 SMP mod_unload modversions
$

Izejā ir dažādi informācijas lauki, piemēram, kodola moduļa pilnais ceļš, tā aizstājvārda nosaukums, programmatūras licence, moduļa apraksts, autori, kā arī kodola iekšējie elementi. Lauks “atkarīgs” parāda, no kuriem citiem kodola moduļiem tas ir atkarīgs.

Informācijas lauki katrā modulī atšķiras. Lai ierobežotu izvadi līdz noteiktam informācijas laukam, modinfo pieņem parametru “-F” (saīsinājums no “-field”), kam seko lauka nosaukums. 5. sarakstā izeja ir ierobežota ar informāciju par licenci, kas pieejama, izmantojot licences lauku.

5. saraksts: parādiet tikai noteiktu lauku.

$ / sbin / modinfo -F licence irda
GPL
$

Jaunākos Linux kodolos ir pieejama noderīga drošības funkcija. Tas attiecas uz kriptogrāfiski parakstītiem kodola moduļiem. Kā paskaidrots Linux kodola projekta vietnē [4], “tas ļauj palielināt kodola drošību, neļaujot neparakstītu moduļu vai moduļu ielādi
parakstīts ar nederīgu atslēgu. Moduļu parakstīšana palielina drošību, apgrūtinot ļaunprātīga moduļa ielādi kodolā. Moduļa parakstu pārbaudi veic kodols, lai nebūtu nepieciešami “uzticami lietotāju telpas biti”.Tālāk redzamajā attēlā tas parādīts
parport_pc modulis.

Parādīt moduļa konfigurāciju, izmantojot modprobe

Katram kodola modulim ir noteikta konfigurācija. Komandā modprobe, kam seko opcija “-c” (saīsinājums no “-showconfig”), ir norādīta moduļa konfigurācija. Kombinācijā ar grep šī izeja ir ierobežota ar noteiktu simbolu. 6. saraksts to parāda IPv6 opcijām.

6. saraksts: Parādīt moduļa konfigurāciju

$ / sbin / modprobe -c | grep ipv6
aizstājvārds net_pf_10_proto_0_type_6 dccp_ipv6
aizstājvārds net_pf_10_proto_33_type_6 dccp_ipv6
aizstājvārds nf_conntrack_10 nf_conntrack_ipv6
aizstājvārds nf_nat_10 nf_nat_ipv6
aizstājvārds nft_afinfo_10 nf_tables_ipv6
aizstājvārds nft_chain_10_nat nft_chain_nat_ipv6
aizstājvārds nft_chain_10_route nft_chain_route_ipv6
aizstājvārds nft_expr_10_reject nft_reject_ipv6
aizstājvārda simbols: nf_defrag_ipv6_enable nf_defrag_ipv6
aizstājvārda simbols: nf_nat_icmpv6_reply_translation nf_nat_ipv6
aizstājvārda simbols: nft_af_ipv6 nf_tables_ipv6
aizstājvārda simbols: nft_reject_ipv6_eval nft_reject_ipv6
$

Rādīt moduļu atkarības

Linux kodols ir veidots kā modulārs, un funkcionalitāte tiek sadalīta vairākos moduļos. Tas noved pie vairākām moduļu atkarībām, kuras var parādīt, izmantojot modprobe vēlreiz. 7. sarakstā tiek izmantota opcija “-show-depend”, lai uzskaitītu i915 moduļa atkarības.

7. saraksts: rādīt moduļu atkarības

$ / sbin / modprobe --show-atkarīgs i915
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / i2c / i2c-core.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / i2c / algos / i2c-algo-bit.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / siltuma / siltuma_sys.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / gpu / drm / drm.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / gpu / drm / drm_kms_helper.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / acpi / video.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / acpi / poga.ko
insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / draiveri / gpu / drm / i915 / i915.ko
$

Lai parādītu atkarības kā koku, kas līdzīgs komandai “koks” vai “lsblk”, var palīdzēt modkoku projekts [5] (i915 moduļu koku skatiet zemāk). Lai gan tas ir brīvi pieejams vietnē GitHub, tam ir nepieciešami daži pielāgojumi, lai tie atbilstu noteikumiem par bezmaksas programmatūru un kļūtu par daļu no Linux izplatīšanas kā pakotnes.

Notiek moduļu ielāde

Moduļa ielādi darbojošā kodolā var veikt ar divām komandām - insmod (“insert module”) un modprobe. Ņemiet vērā, ka starp šiem diviem ir neliela, bet svarīga atšķirība: insmod neatrisina moduļu atkarības, bet modprobe ir gudrāks un dara to.

8. saraksts parāda, kā ievietot IrDA kodola moduli. Lūdzu, ņemiet vērā, ka insmode darbojas ar pilnu moduļa ceļu, savukārt modprobe ir apmierināts ar moduļa nosaukumu un pats to meklē pašreizējā Linux kodola moduļu kokā.

8. saraksts: kodola moduļa ievietošana

# insmod / lib / moduļi / 3.16.0-7-amd64 / kodols / net / irda / irda.ko

# modprobe irda

Izkraušanas moduļi

Pēdējais solis attiecas uz moduļu izkraušanu no darbojošā kodola. Arī šim uzdevumam ir pieejamas divas komandas - modprobe un rmmod (“noņemt moduli”). Abas komandas kā parametru sagaida moduļa nosaukumu. 9. saraksts to parāda, lai noņemtu IrDA moduli no darbojošā Linux kodola.

9. saraksts: kodola moduļa noņemšana

# rmmod irda

# modprobe -r irda

Secinājums

Darbs ar Linux kodola moduļiem nav liela burvība. Tikai dažas komandas, kas jāapgūst, un jūs esat virtuves meistars.

Paldies

Autore vēlas pateikties Akselam Bekertam (ETH Zürich) un Saifam du Plessim (Hothead Studio Keiptauna) par palīdzību raksta sagatavošanā.

Saites un atsauces

  • [1] Kodola modulis, Arch Linux wiki, https: // wiki.archlinux.org / index.php / Kernel_module
  • [2] Kodola konfigurācija, https: // tldp.org / HOWTO / SCSI-2.4-HOWTO / kconfig.html
  • [3] kmod, https: // git.kodols.org / krogs / scm / utils / kodols / kmod / kmod.git
  • [4] Kodola moduļa parakstīšanas iespēja, https: // www.kodols.org / doc / html / v4.15 / admin-guide / moduļa parakstīšana.html
  • [5] modkoks, https: // github.com / falconindy / modtree
Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...
Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...