Linuxi tuum

Linuxi tuumamoodulite haldamine

Linuxi tuumamoodulite haldamine

Linuxi tuuma mõistmine

Linuxi tuum on Linuxi operatsioonisüsteemi tuum. See sisaldab riistvara käsitlemiseks vajalikke põhikomponente ning võimaldab nii suhtlust kui ka suhtlust kasutaja ja riistvara vahel. Linuxi kernel ei ole monoliitne süsteem, vaid üsna paindlik ja kernelit laiendatakse nn kernelmoodulitega.

Mis on tuuma moodul?

Üldiselt on kernelmoodul “kooditükk, mida saab nõudmisel tuumasse laadida ja maha laadida. Need laiendavad kernli funktsionaalsust ilma süsteemi taaskäivitamiseta ”[1]. See toob töö ajal kaasa väga suure paindlikkuse.

Lisaks saab tuuma mooduli konfigureerida sisseehitatud või laaditavana. Mooduli dünaamiliseks laadimiseks või eemaldamiseks tuleb see konfigureerida laaditavaks mooduliks tuuma konfiguratsioonis ”[1]. Seda tehakse kerneli lähtefailis / usr / src / linux /.konfigureerimine [2]. Sisseehitatud moodulid on tähistatud tähega "y" ja laaditavad moodulid tähisega "m". Näiteks näitab loetelu 1 seda SCSI mooduli puhul:

Nimekiri 1: SCSI mooduli kasutamise deklaratsioon

CONFIG_SCSI = y # sisseehitatud moodul
CONFIG_SCSI = m # laaditav moodul
Muutuja # CONFIG_SCSI # pole määratud

Me ei soovita konfiguratsioonifaili otse redigeerida, vaid Linuxi tuuma vastava mooduli kasutamise määratlemiseks kasutage kas käsku make config, make menuconfig või make xconfig.

Mooduli käsud

Linuxi süsteemiga on kaasas mitu erinevat käsku kernelmoodulite käsitsemiseks. See hõlmab praegu Linuxi kernelisse laaditud moodulite loendit, mooduliteabe kuvamist ning kerneli moodulite laadimist ja mahalaadimist. Allpool selgitame neid käske üksikasjalikumalt.

Praeguste Linuxi tuumade jaoks on paketiga kmod järgmised käsud [3]. Kõik käsud on sümboolsed lingid kmodile.

Praegu laaditavate moodulite loend lsmod-iga

Alustame käsuga lsmod. lsmod lühendab loendi mooduleid ja kuvab kõik Linuxi kernelisse laaditud moodulid, vormindades kenasti faili / proc / modules sisu. Loend 2 näitab väljundit, mis koosneb kolmest veerust: mooduli nimi, mälus kasutatav suurus ja muud seda konkreetset kasutavat kerneli moodulit.

Nimekiri 2: lsmod kasutamine

$ lsmod
Mooduli suurus, mida kasutab
ctr 12927 2
ccm 17534 2
snd_hrtimer 12604 1
snd_seq 57112 1
snd_seq_device 13132 1 snd_seq

$

Leidke oma praeguse kerneli jaoks saadaolevad moodulid

Võimalik, et saadaval on tuumamoodulid, millest te pole veel teadlik. Need on salvestatud kataloogi / lib / modules. Leidmise abil koos käsuga uname saate printida nende moodulite loendi. “Uname -r” prindib lihtsalt praegu töötava Linuxi kerneli versiooni. Loend 3 näitab seda vanema 3 puhul.16.0-7 Linux
kernel ning näitab mooduleid IPv6 ja IRDA jaoks.

Loend 3: saadaolevate moodulite kuvamine (valik)

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

$

Mooduli teabe kuvamine modinfo abil

Käsk modinfo räägib lähemalt taotletud kernelmoodulist (mooduli teave). Parameetrina nõuab modinfo kas täielikku mooduliteed või lihtsalt mooduli nime. Loend 4 näitab seda IrDA tuumamooduli puhul, mis tegeleb infrapunase otsepääsuprotokolli korstnaga.

Loend 4: mooduli teabe kuvamine

$ / sbin / modinfo irda
failinimi: / lib / modules / 3.16.0-7-amd64 / kernel / net / irda / irda.ko
varjunimi: net-pf-23
litsents: GPL
kirjeldus: Linuxi IrDA protokollivirn
autor: Dag Brattli & Jean Tourrilhes
sõltub: crc-ccitt
vermagiline: 3.16.0-7-amd64 SMP mod_unload modversions
$

Väljund sisaldab erinevaid teabevälju, nagu tuuma mooduli täielik tee, selle varjunimi, tarkvaralitsents, mooduli kirjeldus, autorid, samuti tuuma sisemised osad. Väli “sõltub” näitab, millistest teistest kernelmoodulitest see sõltub.

Infoväljad on mooduliti erinevad. Väljundi piiramiseks kindla infoväljaga aktsepteerib modinfo parameetrit “-F” (lühidalt “-field”), millele järgneb välja nimi. Loendis 5 piirdub väljund litsentsivälja kaudu kättesaadavaks tehtud litsentsiteabega.

Loend 5: kuvage ainult kindel väli.

$ / sbin / modinfo -F litsents irda
GPL
$

Uuemates Linuxi tuumades on saadaval kasulik turvafunktsioon. See hõlmab krüptograafiliselt allkirjastatud kernelmooduleid. Nagu Linuxi kerneliprojekti veebisaidil [4] selgitatud, „võimaldab see suurendada tuuma turvalisust, keelates allkirjastamata moodulite või moodulite laadimise
allkirjastatud vale võtmega. Mooduli allkirjastamine suurendab turvalisust, muutes pahatahtliku mooduli kernelisse laadimise raskemaks. Mooduli allkirja kontrollimist teostab kernel, nii et pole vaja „usaldusväärseid kasutajaruumi bitte."Allolev joonis näitab seda
parport_pc moodul.

Mooduli konfiguratsiooni kuvamine modprobe abil

Igal kernelmoodulil on kindel konfiguratsioon. Käsk modprobe, millele järgneb valik "-c" (lühidalt "-showconfig"), loetleb mooduli konfiguratsiooni. Koos grepiga piirdub see väljund konkreetse sümboliga. Loend 6 näitab seda IPv6-suvandite puhul.

Loend 6: kuvage mooduli konfiguratsioon

$ / sbin / modprobe -c | grep ipv6
varjunimi net_pf_10_proto_0_type_6 dccp_ipv6
varjunimi net_pf_10_proto_33_type_6 dccp_ipv6
varjunimi nf_conntrack_10 nf_conntrack_ipv6
varjunimi nf_nat_10 nf_nat_ipv6
alias nft_afinfo_10 nf_tables_ipv6
varjunimi nft_chain_10_nat nft_chain_nat_ipv6
varjunimi nft_chain_10_route nft_chain_route_ipv6
varjunimi nft_expr_10_reject nft_reject_ipv6
varjunime sümbol: nf_defrag_ipv6_enable nf_defrag_ipv6
varjunime sümbol: nf_nat_icmpv6_reply_translation nf_nat_ipv6
varjunime sümbol: nft_af_ipv6 nf_tables_ipv6
varjunime sümbol: nft_reject_ipv6_eval nft_reject_ipv6
$

Mooduli sõltuvuste kuvamine

Linuxi tuum on loodud modulaarseks ja funktsionaalsus on jaotatud mitmele moodulile. See toob kaasa mitu moodulisõltuvust, mida saab modprobe'i abil uuesti kuvada. Loendis 7 kasutatakse i915 mooduli sõltuvuste loetlemiseks valikut „-show-depend”.

Loend 7: kuvage mooduli sõltuvused

$ / sbin / modprobe --show-sõltub i915-st
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / i2c / i2c-core.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / i2c / algos / i2c-algo-bit.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / termiline / termiline_sys.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / gpu / drm / drm.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / gpu / drm / drm_kms_helper.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / acpi / video.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / acpi / nupp.ko
insmod / lib / moodulid / 3.16.0-7-amd64 / kernel / draiverid / gpu / drm / i915 / i915.ko
$

Sõltuvuste kuvamiseks puuna, mis on sarnane käsuga “puu” või “lsblk”, võib aidata modtree projekt [5] (vt i915 moodulipuu allolevat joonist). Ehkki see on GitHubis vabalt saadaval, nõuab see mõningaid kohandusi, et järgida tasuta tarkvara reegleid ja saada paketina osa Linuxi distributsioonist.

Moodulite laadimine

Mooduli laadimine töötavasse tuuma saab teha kahe käsuga - insmod (“insert module”) ja modprobe. Pange tähele, et nende kahe vahel on väike, kuid oluline erinevus: insmod ei lahenda mooduli sõltuvusi, kuid modprobe on nutikam ja teeb seda.

Loendis 8 on näidatud IrDA kerneli mooduli sisestamine. Pange tähele, et insmode töötab kogu mooduli teega, samas kui modprobe on rahul mooduli nimega ja otsib seda ise praeguse Linuxi tuuma moodulipuust.

Loend 8: kernelmooduli sisestamine

# insmod / lib / modules / 3.16.0-7-amd64 / kernel / net / irda / irda.ko

# modprobe irda

Moodulite mahalaadimine

Viimane samm käsitleb moodulite mahalaadimist töötavast tuumast. Jällegi on selle ülesande jaoks saadaval kaks käsku - modprobe ja rmmod (“eemalda moodul”). Mõlemad käsud ootavad parameetrina mooduli nime. Loendis 9 on seda näidatud IrDA mooduli eemaldamiseks töötavast Linuxi tuumast.

Loend 9: Kerneli mooduli eemaldamine

# rmmod irda

# modprobe -r irda

Järeldus

Linuxi kernelmoodulite käsitsemine pole suur võlu. Vaid paar käsku, mida õppida ja olete köögi peremees.

Aitäh

Autor tänab Axel Beckertit (ETH Zürich) ja Saif du Plessist (Hothead Studio Kaplinn) abi eest artikli ettevalmistamisel.

Lingid ja viited

  • [1] Kerneli moodul, Arch Linuxi wiki, https: // wiki.archlinux.org / register.php / Kerneli_moodul
  • [2] Kerneli seadistamine, https: // tldp.org / HOWTO / SCSI-2.4-HOWTO / kconfig.HTML
  • [3] kmod, https: // git.tuum.org / pub / scm / utils / kernel / kmod / kmod.git
  • [4] Kerneli mooduli allkirjastamise võimalus, https: // www.tuum.org / doc / html / v4.15 / admin-guide / mooduli allkirjastamine.HTML
  • [5] modpuu, https: // github.com / falconindy / modtree
Installige Linuxile uusim Dolphin Emulator for Gamecube & Wii
Dolphini emulaator võimaldab teil mängida valitud Gamecube & Wii mänge Linuxi personaalarvutites (PC). Vabalt saadaval oleva ja avatud lähtekoodiga m...
Kuidas kasutada GameConquerori petumootorit Linuxis
Artikkel sisaldab juhendit GameConquerori petumootori kasutamise kohta Linuxis. Paljud kasutajad, kes mängivad Windowsis mänge, kasutavad rakendust „C...
Parimad Linuxi mängukonsooli emulaatorid
Selles artiklis loetletakse Linuxi jaoks saadaval olev populaarne mängukonsooli emuleerimise tarkvara. Emuleerimine on tarkvara ühilduvuse kiht, mis j...