跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 系統 / 管理核心模組
適用範圍 SUSE Linux Enterprise Server 15 SP4

28 管理核心模組

雖然 Linux 屬於單核心,但可透過核心模組加以延伸。這些特殊物件可以插入到核心中,並可視需要移除。就實際角度而言,核心模組使新增和移除核心自身未包含的驅動程式和介面成為現實。Linux 提供了數個用於管理核心模組的指令。

28.1 使用 lsmod 和 modinfo 列出載入的模組

使用 lsmod 指令可檢視目前載入了哪些核心模組。該指令的輸出可能如下所示:

> lsmod
Module                  Size  Used by
snd_usb_audio         188416  2
snd_usbmidi_lib        36864  1 snd_usb_audio
hid_plantronics        16384  0
snd_rawmidi            36864  1 snd_usbmidi_lib
snd_seq_device         16384  1 snd_rawmidi
fuse                  106496  3
nfsv3                  45056  1
nfs_acl                16384  1 nfsv3

輸出內容分為三欄:Module 欄列出所載入模組的名稱,Size 欄顯示各模組的大小。Used by 欄顯示參考模組的程序數及其名稱。請注意,此清單可能不完整。

若要檢視有關特定核心模組的詳細資訊,請使用 modinfo MODULE_NAME 指令。其中 MODULE_NAME 為所需核心模組的名稱。請注意,modinfo 二進位檔案位於使用者的 PATH 環境變數中未包含的 /sbin 目錄下。這意味著,當您以普通使用者身分執行 modinfo 指令時,必須指定該二進位檔案的完整路徑:

> /sbin/modinfo kvm
filename:       /lib/modules/5.3.18-57-default/kernel/arch/x86/kvm/kvm.ko.xz
license:        GPL
author:         Qumranet
suserelease:    SLE15-SP3
srcversion:     3D8FBA9060D4537359A06FC
depends:        irqbypass
supported:      yes
retpoline:      Y
intree:         Y
name:           kvm
vermagic:       5.3.18-57-default SMP mod_unload modversions

28.2 新增和移除核心模組

雖然可以使用 insmodrmmod 分別新增和移除核心模組,但建議使用 modprobe 工具來執行這些操作。modprobe 具有多項重要優勢,包括自動解析相依項以及將核心模組加入黑名單。

如果不指定任何參數,使用 modprobe 指令會安裝指定的核心模組。必須使用 root 特權來執行 modprobe

> sudo modprobe acpi

若要移除核心模組,請使用 -r 參數:

> sudo modprobe -r acpi

28.2.1 開機時自動載入核心模組

您可以選擇不手動載入核心模組,而是使用 system-modules-load.service 服務在開機期間自動載入這些模組。若要啟用核心模組,請將 .conf 檔案新增到 /etc/modules-load.d/ 目錄下。建議為組態檔案指定與模組相同的名稱,例如:

/etc/modules-load.d/rt2800usb.conf

組態檔案中必須包含所需核心模組的名稱 (例如 rt2800usb)。

透過上述的這個技巧,無需指定任何參數即可載入核心模組。如果您需要使用特定選項載入核心模組,請將組態檔案新增到 /etc/modprobe.d/ 目錄下。該檔案的副檔名必須為 .conf。檔案名稱必須符合以下命名慣例:priority-modulename.conf,例如:50-thinkfan.conf。組態檔案中必須包含核心模組名稱及所需參數。您可以使用以下範例指令來建立包含核心模組名稱及其參數的組態檔案:

> echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/thinkfan.conf
注意
注意:載入核心模組

當偵測到裝置或使用者空間要求特定功能時,系統會自動載入大多數核心模組。因此,很少需要手動將模組新增到 /etc/modules-load.d/

28.2.2 使用 modprobe 將核心模組加入黑名單

將某個核心模組加入黑名單後,開機期間便不再會載入該模組。要停用您懷疑可能導致系統出現問題的某個模組時,此功能十分實用。請注意,您仍可透過使用 insmodmodprobe 工具來手動載入加入黑名單的核心模組。

若要將模組列入黑名單,請建立包含以下內容的 /etc/modprobe.d/60-blacklist-MODULE_NAME.conf 檔案:

blacklist MODULE_NAME

以 root 身分執行 dracut 指令以產生新的 initrd 影像,然後將機器重新開機 (以目前 initrd 的名稱取代 NAME,以目前執行的核心取代 KERNELVERSION):

> su
echo "blacklist nouveau" >> /etc/modprobe.d/60-blacklist-nouveau.conf
/usr/bin/dracut --logfile /var/log/YaST2/mkinitrd.log --force /boot/$initrd-NAME $KERNELVERSION
reboot

如果只想暫時停用某個核心模組,可在開機期間即時將其加入黑名單。若要實現此目標,請在開機螢幕顯示時按 E 鍵。這樣,您會進入一個可供您修改開機參數的小編輯器。找到如下所示的行:

linux /boot/vmlinuz...splash= silent quiet showopts

modprobe.blacklist=MODULE_NAME 指令新增到該行結尾處。例如:

linux /boot/vmlinuz...splash= silent quiet showopts modprobe.blacklist=nouveau

F10CtrlX 以依照指定的組態開機。

若要透過 GRUB 將某個核心模組永久加入黑名單,請開啟要編輯的 /etc/default/grub 檔案,將 modprobe.blacklist=MODULE_NAME 選項新增到 GRUB_CMD_LINUX 指令中。然後執行 sudo grub2-mkconfig -o /boot/grub2/grub.cfg 指令使變更生效。