Tento stručný průvodce vysvětluje, co je modul Linux Kernel , jak vypsat aktuálně načtené moduly jádra pomocí lsmod
a jak zobrazit informace o modulu Linux Kernel pomocí modinfo
příkaz v Linuxu.
Co je modul jádra Linuxu?
Linuxové jádro je hlavní součástí operačního systému GNU/Linux. Funkčnost linuxového jádra lze rozšířit bez nutnosti restartu systému pomocí modulů jádra . Modul jádra je část kódu, kterou lze na vyžádání načíst a uvolnit do jádra.
Některé příklady modulů jádra jsou firmware a ovladače zařízení, které umožňují linuxovému jádru přistupovat a ovládat hardware připojený k systému. Obecně se moduly jádra používají k přidání podpory pro nový hardware (jako ovladače zařízení) a/nebo systémy souborů nebo pro přidání systémových volání .
Bez modulů jádra musíme znovu sestavit a restartovat jádro pokaždé, když chceme novou funkcionalitu. Potřebujeme také vytvořit větší monolitická jádra a přidat nové funkce přímo do obrazu jádra bez modulů jádra. S pomocí modulů jádra se těmto problémům můžeme jednoduše vyhnout.
Moduly jádra jsou obvykle uloženy pod Moduly jsou uloženy v /usr/lib/modules/<kernel_release_directory>
.
$ ls /usr/lib/modules/5.11.18-300.fc34.x86_64/
bls.conf modules.builtin.bin modules.symbols
build modules.builtin.modinfo modules.symbols.bin
config modules.dep source
extra modules.dep.bin symvers.gz
kernel modules.devname System.map
modules.alias modules.drm updates
modules.alias.bin modules.modesetting vdso
modules.block modules.networking vmlinuz
modules.builtin modules.order weak-updates
modules.builtin.alias.bin modules.softdep
Moduly jádra jsou v různých operačních systémech označovány různými názvy. Například modul jádra je ve FreeBSD označován jako kernel loadable module (kld), kernel extension (kext) v macOS, kernel extension module v AIX, ovladač režimu jádra ve Windows NT a downloadable kernel module (DKM) ve VxWorks. Jsou také známé jako kernel loadable modules (nebo KLM) a jednoduše jako kernel modules (KMOD).
Seznam modulů Linux Kernel pomocí příkazu lsmod
Můžeme zobrazit seznam modulů jádra, které jsou aktuálně načteny do jádra pomocí lsmod
(seznam modulů) příkaz jako níže:
$ lsmod
Ukázkový výstup:
Module Size Used by
vhost_net 32768 0
vhost 57344 1 vhost_net
vhost_iotlb 16384 1 vhost
tap 28672 1 vhost_net
tun 57344 1 vhost_net
rfcomm 90112 4
snd_seq_dummy 16384 0
snd_hrtimer 16384 1
xt_CHECKSUM 16384 1
xt_MASQUERADE 20480 3
xt_conntrack 16384 1
ipt_REJECT 16384 2
nf_nat_tftp 16384 0
nf_conntrack_tftp 20480 3 nf_nat_tftp
bridge 290816 0
stp 16384 1 bridge
llc 16384 2 bridge,stp
ccm 20480 6
nft_objref 16384 2
nf_conntrack_netbios_ns 16384 1
nf_conntrack_broadcast 16384 1 nf_conntrack_netbios_ns
nft_fib_inet 16384 1
[...]
Příkaz lsmod získává podrobnosti o aktuálně načtených modulech jádra ze souboru /proc/modules
.
Doufám, že získáte základní představu o tom, co jsou moduly Linux Kernel a jak vypsat aktuálně načtené moduly v Linux Kernel. Pojďme dále a podívejme se, jak zobrazit podrobnosti konkrétního modulu jádra.
Zobrazte informace o modulu Linux Kernel pomocí příkazu modinfo
modinfo
zobrazí podrobné informace o daném modulu jádra. Ve výchozím nastavení uvádí atributy modulu jádra ve tvaru fieldname : value
, pro snadné čtení.
Chcete-li zobrazit informace o modulu jádra systému Linux, například 88XXau
, což je bezdrátový adaptér TP-Link AC600 (Archer T2U Nano) , spustit:
$ modinfo 88XXau
Ukázkový výstup:
filename: /lib/modules/5.11.18-300.fc34.x86_64/extra/88XXau.ko.xz
version: v5.6.4.2_35491.20191025
author: Realtek Semiconductor Corp.
description: Realtek Wireless Lan Driver
license: GPL
srcversion: 4EC0EE17404B8E38B323235
alias: usb:v7392pB611ddcdscdpiciscipin
alias: usb:v7392pA813ddcdscdpiciscipin
alias: usb:v7392pA812ddcdscdpiciscipin
alias: usb:v7392pA811ddcdscdpiciscipin
alias: usb:v3823p6249ddcdscdpiciscipin
alias: usb:v2357p0122ddcdscdpiciscipin
alias: usb:v2357p0120ddcdscdpiciscipin
[...]
Nepřipojujte .ko
rozšíření na konec názvu modulu jádra. Protože názvy modulů jádra nemají přípony, ale jejich odpovídající soubory ano.
Zobrazit určité podrobnosti o modulech jádra
Když spustíte modinfo bez jakýchkoli voleb, zobrazí se celá řada informací o daném modulu jádra. Výsledek můžete zúžit zobrazením pouze určitých polí, jako je author
, description
, license
, parm
, depends
a alias
. Následující příkazy zobrazí podrobnosti o každém poli 88XXau
modul.
1. Zobrazit autora modulu jádra (dodavatele)
Chcete-li zobrazit, kdo napsal modul jádra, použijte author
vlajka.
$ modinfo -F author 88XXau
Realtek Semiconductor Corp.
2. Zobrazit popis modulu jádra
Chcete-li vytisknout popis modulu jádra, použijte description
vlajka.
$ modinfo -F description 88XXau
Realtek Wireless Lan Driver
3. Zobrazit licenci modulu jádra
Znalost licence modulu jádra může být užitečná, když chcete vědět, zda je firmware a ovladače otevřený nebo uzavřený zdroj. Některé distribuce Linuxu mohou ve výchozím nastavení obsahovat nesvobodné ovladače. Chcete-li ověřit, zda je disk zařízení volný nebo nesvobodný, zkontrolujte přiloženou licenci.
$ modinfo -F license 88XXau
GPL
Většina modulů jádra je licencována pod GPL
(GNU Public License). Několik modulů může mít duální licenci, například BSD
a GPL
.
$ modinfo -F license zram Dual BSD/GPL
4. Zobrazit parametry modulu jádra
Chcete-li zobrazit parametry modulu jádra, spusťte:
$ modinfo -F parm 88XXau rtw_wireless_mode: (int) rtw_monitor_overwrite_seqnum:Overwrite the sequence number of injected frames (int) rtw_monitor_retransmit:Retransmit injected frames (int) rtw_monitor_disable_1m:Disable default 1Mbps rate for monitor injected frames (int) rtw_ips_mode:The default IPS mode (int) rtw_lps_level:The default LPS level (int) [...]
5. Zobrazit závislosti modulů jádra
Chcete-li zobrazit závislosti modulu jádra, spusťte:
$ modinfo -F depends 88XXau
cfg80211
Můžete také použít -a/--author
, -d/--description
, -l/--license
, -p/--parameters
flags pro zobrazení konkrétních detailů modulů jádra. Toto jsou pouze zkratky pro --field
autor vlajky, popis, licence a parm. Můžete například použít -l
nebo --license
příznak pro zobrazení licence modulu jádra.
$ modinfo -l kvm
Nebo,
$ modinfo --license kvm
Výše uvedené příkazy jsou ekvivalentní následujícímu příkazu:
$ modinfo -F license kvm
Další podrobnosti o modinfo
příkaz, podívejte se do jeho manuálových stránek.
$ man modinfo
Doufám, že to pomůže.
Související čtení:
- Vypsat nebo zkontrolovat všechna nainstalovaná jádra Linuxu z příkazového řádku
- Spravujte a monitorujte moduly jádra Linuxu pomocí Kmon