„Linux“ branduolys

„Linux“ branduolio modulių valdymas

„Linux“ branduolio modulių valdymas

Suprasti „Linux“ branduolį

„Linux“ branduolys yra „Linux“ operacinės sistemos pagrindas. Jame yra pagrindiniai komponentai, skirti spręsti aparatinę įrangą, ir leidžia vartotojui ir aparatinei įrangai bendrauti ir bendrauti. „Linux“ branduolys nėra monolitinė sistema, bet gana lanksti, o branduolį pratęsia vadinamieji branduolio moduliai.

Kas yra branduolio modulis?

Apskritai, branduolio modulis yra „kodo dalis, kurią galima įkelti ir iškrauti į branduolį esant poreikiui. Jie praplečia branduolio funkcionalumą nereikalaujant perkrauti sistemos “[1]. Tai lemia labai didelį lankstumą eksploatacijos metu.

Be to, „branduolio modulis gali būti sukonfigūruotas kaip integruotas arba įkeliamas. Norint dinamiškai įkelti arba pašalinti modulį, jis turi būti sukonfigūruotas kaip įkeliamas modulis branduolio konfigūracijoje “[1]. Tai daroma branduolio šaltinio faile / usr / src / linux /.konfigūracija [2]. Įmontuoti moduliai pažymėti „y“, o įkeliami moduliai - „m“. Pavyzdžiui, 1 sąrašas tai parodo SCSI moduliui:

1 sąrašas: SCSI modulio naudojimo deklaracija

CONFIG_SCSI = y # įmontuotas modulis
CONFIG_SCSI = m # įkeliamas modulis
# CONFIG_SCSI # kintamasis nenustatytas

Mes nerekomenduojame tiesiogiai redaguoti konfigūracijos failo, bet norėdami apibrėžti atitinkamo modulio naudojimą „Linux“ branduolyje, naudokite komandą „make config“, „make menuconfig“ arba „make xconfig“.

Modulio komandos

„Linux“ sistemoje yra daugybė skirtingų komandų, skirtų tvarkyti branduolio modulius. Tai apima modulių, šiuo metu įkeltų į „Linux“ branduolį, sąrašą, modulių informacijos rodymą, taip pat branduolio modulių įkėlimą ir iškrovimą. Žemiau mes paaiškinsime šias komandas išsamiau.

Dabartiniams „Linux“ branduoliams šias komandas teikia kmod paketas [3]. Visos komandos yra simbolinės nuorodos į kmod.

Šiuo metu įkeliamų modulių su lsmod sąrašas

Pradedame nuo komandos lsmod. „lsmod“ sutrumpina „list module“ ir rodo visus modulius, šiuo metu įkeltus į „Linux“ branduolį, gražiai suformatuodamas failo / proc / modules turinį. 2 sąraše rodoma jo išvestis, kurią sudaro trys stulpeliai: modulio pavadinimas, atmintyje naudojamas dydis ir kiti branduolio moduliai, kurie naudoja šį specifinį.

2 sąrašas: naudojant lsmod

$ lsmod
Modulio dydis naudojamas
ctr 12927 2
ccm 17534 2
snd_hrtimer 12604 1
snd_seq 57112 1
snd_seq_device 13132 1 snd_seq

$

Raskite esamam branduoliui galimų modulių

Gali būti, kad yra branduolio modulių, apie kuriuos dar nežinote. Jie saugomi kataloge / lib / modules. „Find“ pagalba kartu su komanda „uname“ galite atsispausdinti šių modulių sąrašą. „Uname -r“ tiesiog išspausdina šiuo metu veikiančio „Linux“ branduolio versiją. 3 sąrašas tai rodo vyresnio amžiaus 3.16.0–7 „Linux“
branduolį ir rodo IPv6 ir IRDA modulius.

3 sąrašas: pateikiami galimi moduliai (pasirinkimas)

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

$

Rodyti modulio informaciją naudojant modinfo

Komanda modinfo pasako daugiau apie prašomą branduolio modulį („modulio informacija“). Kaip parametrą modinfo reikalauja viso modulio kelio arba tiesiog modulio pavadinimo. 4 sąraše tai parodo IrDA branduolio modulis, susijęs su tiesioginės infraraudonosios prieigos protokolo kaminu.

4 sąrašas: Rodyti modulio informaciją

$ / sbin / modinfo irda
failo pavadinimas: / lib / modules / 3.16.0-7-amd64 / branduolys / net / irda / irda.ko
slapyvardis: net-pf-23
licencija: GPL
aprašymas: „Linux IrDA Protocol Stack“
autorius: Dagas Brattli & Jeanas Tourrilhesas
priklauso: crc-ccitt
vermagiškas: 3.16.0-7-amd64 SMP mod_unload modversions
$

Išvestyje yra skirtingi informacijos laukai, tokie kaip visas branduolio modulio kelias, jo slapyvardžio pavadinimas, programinės įrangos licencija, modulio aprašas, autoriai, taip pat branduolio vidinės dalys. Lauke „priklauso“ rodoma, nuo kurių kitų branduolio modulių jis priklauso.

Informacijos laukai skiriasi nuo modulio. Norėdami apriboti išvestį iki konkretaus informacijos lauko, modinfo priima parametrą „-F“ (sutrumpintai reiškia „-field“), po kurio nurodomas lauko pavadinimas. 5 sąraše išvestis apsiriboja informacija apie licenciją, pateikiama naudojant licencijos lauką.

5 sąrašas: rodykite tik konkretų lauką.

$ / sbin / modinfo -F licencija irda
GPL
$

Naujesniuose „Linux“ branduoliuose yra naudinga saugos funkcija. Tai apima kriptografiškai pasirašytus branduolio modulius. Kaip paaiškinta „Linux“ branduolio projekto svetainėje [4], „tai leidžia padidinti branduolio saugumą, neleidžiant įkelti nepasirašytų modulių ar modulių
pasirašė negaliojančiu raktu. Modulio pasirašymas padidina saugumą, apsunkindamas kenkėjiško modulio įkėlimą į branduolį. Modulio parašo tikrinimą atlieka branduolys, kad nebūtina turėti „patikimų vartotojo erdvės bitų“.Žemiau pateiktame paveikslėlyje tai parodyta
parport_pc modulis.

Rodyti modulio konfigūraciją naudojant modprobe

Kiekvienas branduolio modulis turi specifinę konfigūraciją. Komandoje „modprobe“, po kurios pateikiama parinktis „-c“ (sutrumpintai reiškia „-showconfig“), pateikiama modulio konfigūracija. Kartu su „grep“ ši išvestis apsiriboja konkrečiu simboliu. 6 sąrašas tai parodo IPv6 parinktims.

6 sąrašas: rodyti modulio konfigūraciją

$ / sbin / modprobe -c | grep ipv6
pseudonimas net_pf_10_proto_0_type_6 dccp_ipv6
pseudonimas net_pf_10_proto_33_type_6 dccp_ipv6
pseudonimas nf_conntrack_10 nf_conntrack_ipv6
slapyvardis nf_nat_10 nf_nat_ipv6
pseudonimas nft_afinfo_10 nf_tables_ipv6
slapyvardis nft_chain_10_nat nft_chain_nat_ipv6
pseudonimas nft_chain_10_route nft_chain_route_ipv6
slapyvardis nft_expr_10_reject nft_reject_ipv6
slapyvardžio simbolis: nf_defrag_ipv6_enable nf_defrag_ipv6
slapyvardžio simbolis: nf_nat_icmpv6_reply_translation nf_nat_ipv6
slapyvardžio simbolis: nft_af_ipv6 nf_tables_ipv6
slapyvardžio simbolis: nft_reject_ipv6_eval nft_reject_ipv6
$

Rodyti modulio priklausomybes

„Linux“ branduolys sukurtas kaip modulinis, o funkcionalumas paskirstytas keliems moduliams. Tai lemia kelias modulių priklausomybes, kurias vėl galima parodyti naudojant modprobe. 7 sąraše naudojama parinktis „-show-priklauso“, kad būtų išvardytos i915 modulio priklausomybės.

7 sąrašas: rodyti modulio priklausomybes

$ / sbin / modprobe - show-priklauso i915
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / i2c / i2c-core.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / i2c / algos / i2c-algo-bit.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / terminis / terminis_sys.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / gpu / drm / drm.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / gpu / drm / drm_kms_helper.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / acpi / video.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / acpi / mygtukas.ko
insmod / lib / moduliai / 3.16.0-7-amd64 / branduolys / tvarkyklės / gpu / drm / i915 / i915.ko
$

Norėdami parodyti priklausomybes kaip medį, panašų į komandą „medis“ arba „lsblk“, gali padėti modmedžio projektas [5] (žr. Toliau pateiktą i915 modulio medžio paveikslą). Nors jis yra laisvai prieinamas „GitHub“, tam reikia tam tikrų pritaikymų, kad būtų laikomasi nemokamos programinės įrangos taisyklių ir taptų „Linux“ platinimo dalimi kaip paketu.

Kraunami moduliai

Modulio įkėlimas į veikiantį branduolį gali būti atliekamas dviem komandomis - insmod („insert module“) ir modprobe. Atminkite, kad tarp šių dviejų yra nedidelis, bet svarbus skirtumas: „insmod“ neišsprendžia modulio priklausomybių, tačiau „modprobe“ yra sumanesnė ir daro tai.

8 sąraše parodyta, kaip įterpti „IrDA“ branduolio modulį. Atkreipkite dėmesį, kad insmode veikia su visu modulio keliu, o modprobe yra patenkintas modulio pavadinimu ir pats jį ieško modulio medyje, kuriame yra dabartinis Linux branduolys.

8 sąrašas: įdėkite branduolio modulį

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

# modprobe irda

Iškrovimo moduliai

Paskutinis žingsnis susijęs su modulių iškrovimu iš veikiančio branduolio. Vėlgi, šiai užduočiai yra dvi komandos - modprobe ir rmmod („pašalinti modulį“). Abi komandos tikisi modulio pavadinimo kaip parametro. 9 sąraše tai parodyta norint pašalinti „IrDA“ modulį iš veikiančio „Linux“ branduolio.

9 sąrašas: branduolio modulio pašalinimas

# rmmod irda

# modprobe -r irda

Išvada

Valdymas „Linux“ branduolio moduliais nėra didelė magija. Tik kelios komandos, kurias reikia išmokti, ir jūs esate virtuvės šeimininkas.

Ačiū

Autorius norėtų padėkoti Axelui Beckertui (ETH Ciurichas) ir Saifui du Plessiui (Hothead Studio Keiptaunas) už pagalbą rengiant straipsnį.

Nuorodos ir nuorodos

  • [1] Branduolio modulis, „Arch Linux“ wiki, https: // wiki.archlinux.org / index.php / Kernel_module
  • [2] Branduolio konfigūracija, https: // tldp.org / HOWTO / SCSI-2.4-HOWTO / kconfig.HTML
  • [3] kmod, https: // git.branduolys.org / pub / scm / utils / kernel / kmod / kmod.git
  • [4] Branduolio modulio pasirašymo galimybė, https: // www.branduolys.org / doc / html / v4.15 / administratoriaus vadovas / modulio pasirašymas.HTML
  • [5] modmedis, https: // github.com / falconindy / modtree
Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...