歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> RedHat Linux 9內核模塊

RedHat Linux 9內核模塊

日期:2017/2/27 9:47:01   编辑:更多Linux

Linux 內核具有模塊化設計。在引導時,只有少量的駐留內核被載入內存。這之後,無論何時用戶要求使用駐留內核中沒有的功能,某 內核模塊(kernel module) ,有時又稱 驅動程序(driver) 。就會被動態地載入內存。

在安裝過程中,系統上的硬件會被探測。基於探測結果和用戶提供的信息,安裝程序會決定哪些模塊需要在引導時被載入。安裝程序會設置動態載入機制來透明地運行。

如果安裝後添加了新硬件,而這個硬件需要一個內核模塊,系統必須被配置來為新硬件載入正確的內核模塊。當系統使用新硬件引導後, Kudzu 程序會運行,如果新硬件被支持,它就會被檢測到,該程序還會為它配置模塊。你也可以通過編輯模塊配置文件 /etc/modules.conf 來手工指定這個模塊。

注記: 用來顯示 X 窗口系統界面的視頻卡模塊是 XFree86 軟件包的一部分,而不是內核的一部分;因此,本章並不應用於該模塊。

例如,如果某系統包括了一個 SMC EtherPower 10 PCI 網卡,模塊配置文件包含以下行:

alias eth0 tulip

如果系統上添加了第二個網卡,它和第一個網卡一模一樣,在 /etc/modules.conf 中添加這一行:

alias eth1 tulip

要獲得內核模塊的字母順序列表以及這些模塊所支持的硬件,請參閱 《Red Hat Linux 參考指南》 。

31.1. 內核模塊工具

如果安裝了 modutils 軟件包,你還可以使用一組管理內核模塊的命令。使用這些命令來判定模塊是否被成功地載入了,或為一件新硬件試驗不同的模塊。

/sbin/lsmod 命令顯示了當前載入了的模塊列表。例如:

Module Size Used by Not tainted iptable_filter 2412 0 (autoclean) (unused) ip_tables 15864 1 [iptable_filter] nfs 84632 1 (autoclean) lockd 59536 1 (autoclean) [nfs] sunrpc 87452 1 (autoclean) [nfs lockd] soundcore 7044 0 (autoclean) ide-cd 35836 0 (autoclean) cdrom 34144 0 (autoclean) [ide-cd] parport_pc 19204 1 (autoclean) lp 9188 0 (autoclean) parport 39072 1 (autoclean) [parport_pc lp] autofs 13692 0 (autoclean) (unused) e100 62148 1 microcode 5184 0 (autoclean) keybdev 2976 0 (unused) mousedev 5656 1 hid 22308 0 (unused) input 6208 0 [keybdev mousedev hid] usb-uhci 27468 0 (unused) usbcore 82752 1 [hid usb-uhci] ext3 91464 2 jbd 56336 2 [ext3]




對每行而言,第一列是模塊名稱;第二列是模塊大小;第三列是用量計數。

用量計數後面的信息對每個模塊而言都有所不同。如果 (unused) 被列在某模塊的那行中,該模塊當前就沒在使用。如果 (autoclean) 被列在某模塊的那行中,該模塊可以被 rmmod -a 命令自動清洗。當這個命令被執行後,所有自從上次被自動清洗後未被使用的被標記了“autoclean”的模塊都會被卸載。Red Hat Linux 不默認執行自動清洗行動。

如果模塊名稱被列舉在行尾的括號內,括號內的模塊就依賴於列舉在這一行的第一列中的模塊。例如,在以下行中:

usbcore 82752 1 [hid usb-uhci]

hid 和 usb-uhci 內核模塊依賴於 usbcore 模塊。

/sbin/lsmod 輸出和查看 /proc/modules 的輸出相同。

要載入內核模塊,使用 /sbin/modprobe 命令,然後跟著內核模塊的名稱。按照默認設置, modprobe 試圖從 /lib/modules/ <kernel-version> /kernel/drivers/ 子目錄中載入模塊。每類模塊都有一個子目錄,如用於網絡接口驅動程序的 net/ 子目錄。某些內核模塊有模塊依賴關系,這意味著你必須首先載入其它模塊才能載入這些模塊。 /sbin/modprobe 命令檢查這些依賴關系,並在載入指定模塊前載入滿足這些依賴關系的模塊。

例如:

/sbin/modprobe hid

這個命令載入任何滿足依賴關系的模塊,然後再載入 hid 模塊。

要在 /sbin/modprobe 執行命令的時候把它們都顯示在屏幕上,使用 -v 選項。例如:

/sbin/modprobe -v hid

所顯示的輸出和下面相似:

/sbin/insmod /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.o Using /lib/modules/2.4.20-2.47.1/kernel/drivers/usb/hid.o Symbol version prefix 'smp_'

你還可以使用 /sbin/insmod 命令來載入內核模塊;不過它不解決依賴關系。因此,推薦你使用 /sbin/modprobe 命令。

要卸載內核模塊,使用 /sbin/rmmod 命令和模塊名稱。 rmmod 工具只卸載不在使用的、和不是被正使用的模塊所依賴的模塊。

例如:

/sbin/rmmod hid

這個命令卸載 hid 內核模塊。

另一個有用的模塊工具是 modinfo 。使用 /sbin/modinfo 命令來顯示關於內核模塊的信息。一般語法是:

/sbin/modinfo [options] <module>

包括 -d 在內的選項顯示了關於模塊的簡短描述, -p 選項列舉了模塊所支持的參數。要獲取選項的完整列表,請參閱 modinfo 的說明書頁( man modinfo )。



另一個有用的模塊工具是 modinfo 。使用 /sbin/modinfo 命令來顯示關於內核模塊的信息。一般語法是:

/sbin/modinfo [options] <module>

包括 -d 在內的選項顯示了關於模塊的簡短描述, -p 選項列舉了模塊所支持的參數。要獲取選項的完整列表,請參閱 modinfo 的說明書頁( man modinfo )。



Copyright © Linux教程網 All Rights Reserved