內核模塊加載命令

一、lsmod 列加以掛載的內核模塊;

lsmod 是列出目前系統中已加載的模塊的名稱及大小等;另外咱們還能夠查看 /proc/modules ,咱們同樣能夠知道系統已經加載的模塊;
代碼:[root@localhost beinan]# lsmod
二、modinfo 查看模塊信息;

modinfo 能夠查看模塊的信息,經過查看模塊信息來斷定這個模塊的用途;
代碼:[root@localhost beinan]# moinfo  模塊名   
舉例:
代碼:[root@localhost beinan]# modinfo ne2k-pci
filename:       /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.ko
author:         Donald Becker / Paul Gortmaker
description:    PCI NE2000 clone driver
license:        GPL
parmtype:       debug:int
parmtype:       options:array of int
parmtype:       full_duplex:array of int
parm:           debug:debug level (1-2)
parm:           options:Bit 5: full duplex
parm:           full_duplex:full duplex setting(s) (1)
vermagic:       2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0
depends:        8390
alias:          pci:v000010ECd00008029sv*sd*bc*sc*i*
alias:          pci:v00001050d00000940sv*sd*bc*sc*i*
alias:          pci:v000011F6d00001401sv*sd*bc*sc*i*
alias:          pci:v00008E2Ed00003000sv*sd*bc*sc*i*
alias:          pci:v00004A14d00005000sv*sd*bc*sc*i*
alias:          pci:v00001106d00000926sv*sd*bc*sc*i*
alias:          pci:v000010BDd00000E34sv*sd*bc*sc*i*
alias:          pci:v00001050d00005A5Asv*sd*bc*sc*i*
alias:          pci:v000012C3d00000058sv*sd*bc*sc*i*
alias:          pci:v000012C3d00005598sv*sd*bc*sc*i*
alias:          pci:v00008C4Ad00001980sv*sd*bc*sc*i*
srcversion:     6ACE95F441CD26DF9DC31C2上
面的例子是咱們查看 ne2k-pci 這個模塊的信息,經過查看,咱們知道ne2k-pci 模塊是8029網卡(PCI NE2000 clone
driver)的驅動;模塊是位於 /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/
中ne2k-pci.ko
咱們如今經常使用的網卡也有8139的,8139網卡所用的驅動是 8139too ;查查看?
代碼:[root@localhost beinan]# modinfo 8139too 
咱們再查查vfat 和ntfs 的模塊信息;
代碼:[root@localhost beinan]# modinfo vfat
[root@localhost beinan]# modinfo ntfs 
本身嘗試一下;
注意: 模塊名是不能帶有後綴的,咱們經過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;

三、modprobe 掛載新模塊以及新模塊相依賴的模塊

modprobe 咱們經常使用的功能就是掛載模塊,在掛載某個內核模塊的同時,這個模塊所依賴的模塊也被同時掛載;固然modprobe 也有列出內核全部模塊,還有移除模塊的功能;下在咱們舉個例子說一說我們經常使用的功能和參數;
代碼:modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ]  [parameters...]
modprobe -r [-n] [-i] [-v]  ...
modprobe -l -t  [ -a  ...]
上面是modprobe 的用法,具體更爲詳細的幫助,咱們能夠查看 man modprobe ;
代碼:[root@localhost beinan]# modprobe -c
modprobe -c 能夠查看modules 的配置文件,好比模塊的別名是什麼等;
代碼:[root@localhost beinan]# modprobe -l
modprobe
-l 是列出內核中全部的模塊,包括已掛載和未掛載的;經過modprobe -l
,咱們能查看到咱們所須要的模塊,而後根據咱們的須要來掛載;其實modprobe -l 讀取的模塊列表就位於
/lib/modules/'uname -r' 目錄中;其中uname -r 是內核的版本;
代碼:[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/
經過上面的命令,本身試試看?
代碼:[root@localhost beinan]# modprobe   模塊名   注:掛載一個模塊;
舉例:
代碼:[root@localhost beinan]# modprobe ne2k-pci  注:掛載 ne2k-pci 模塊;
[root@localhost beinan]# modprobe vfat  注:掛載vfat 模塊
[root@localhost beinan]# modprobe ntfs   注:掛載ntfs 模塊
[root@localhost beinan]# lsmod    注:列出已掛載模塊, 咱們會看到ne2k-pci ,vfat ,ntfs的模塊 ;
注意: 模塊名是不能帶有後綴的,咱們經過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
代碼:[root@localhost beinan]# modprobe -r  模塊名   注:移除已加載的模塊,和rmmod 功能相同;
注意:模塊名是不能帶有後綴的,咱們經過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
代碼:[root@localhost beinan]# modprobe -r  模塊名 
舉例:
代碼:[root@localhost beinan]# modprobe  -r ne2k-pci
就說這麼多吧,更爲詳細的仍是用 man modprobe 來查看和嘗試;

四、rmmod 移除已掛載模塊;

命令格式:
代碼:rmmod  模塊名
注意: 模塊名是不能帶有後綴的,咱們經過modprobe -l 所看到的模塊,都是帶有.ko 或.o後綴;
舉例:
代碼:[root@localhost beinan]# rmmod  vfat  注:移除已掛載的模塊vfat 

五、depmod 建立模塊依賴關係的列表


個模塊管理工具是建立模塊依賴關係的列表,有幾個參數咱們注意一下就好了,目前的的Linux
發行版所用的內核是2.6x版本,是自動解決依賴關係,因此這個命令知道就好了;模塊以前也有依賴關係,好比咱們想驅動USB
移動硬盤,目前有兩種驅動,一種是udev ,在內核中有,但目前不太穩定;另外一種辦法是用usb-storage驅動,而usb-storage
依賴的模塊是scsi 模塊,因此咱們要用usb-storage 的模塊,也得把scsi 編譯安裝;
再舉個例子:sata的硬盤,在
Linux中的設備表示的是/dev/sd* ,好比 /dev/sda,/dev/sdb 等... 系統要驅動
sata硬盤,則須要把sata在內核中選中,或編譯成模塊,或內置於內核之中,在此同時,還須要在內核中選中ide ,scsi 的支持等;
depmod 工具的洋文原意:depmod — program to generate modules.dep and map files.(我譯的:爲modules.dep 文件或映射文件建立依賴關係)
代碼:[root@localhost beinan]# depmod  -a    注:爲全部列在/etc/modprobe.conf 或/etc/modules.conf  中的全部模塊建立依賴關係,而且寫入到modules.dep文件;
[root@localhost beinan]# depmod -e     注:列出已掛載但不可用的模塊;
[root@localhost beinan]# depmod  -n    注:列出全部模塊的依賴關係,但僅僅是輸出出來 (Write the dependency file on stdout only)
注:modules.dep 位於 /lib/modules/內核版本 目錄
好比 Fedora Core 4.0 中,系統默認的內核: 
代碼:[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/modules.dep
/lib/modules/2.6.11-1.1369_FC4/modules.dep

六、insmod 掛載模塊;

insmod
這個工具,和modprobe 有點相似,但功能上沒有modprobe 強,modprobe
在掛載模塊是不用指定模塊文件的路徑,也不用帶文件的後綴.o 或.ko ;而insmod
須要的是模塊的所在目錄的絕對路徑,而且必定要帶有模塊文件名後綴的(modulefile.o 或modulesfile.ko );
對於這個工具,咱們只是介紹一下, 並不推薦使用。由於模塊有依賴關係,對於新手來講,可能不知道這個模塊依賴和哪一個模塊依賴;
舉例:
代碼:[root@localhost beinan]# insmod /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko
咱們要到 /lib/modules/內核版本 uname -r 的命令輸出/kernel/drivers 中找相對應的模塊才行,要有絕對路徑,並且必需要用到文件名的全稱,不能把文件名的後綴省略;

5、與內核模塊加載相關的配置文件;


一、模塊的配置文件 modules.conf 或 modprobe.conf 


核模塊的開機自動掛載模塊通常是位於一個配置文件,通常的Linux發行版本都有 /etc/modules.conf 或
/etc/modprobe.conf 。好比Fedora Core 4.0 內核模塊開機自動加載文件是 /etc/modprobe.conf
;在這個文件中,通常是寫入模塊的加載命令或模塊的別名的定義等;好比咱們在modules.conf 中可能會發行相似的一行 ;
代碼:alias eth0 8139too 而8029的網卡應該是
代碼:alias eth0 ne2k-pci 
這樣系統啓動的時候,首先會modprobe 8139too ,而後再爲8139too 指定別名爲 eth0,而後咱們在登陸的時候,用 ifconfig 就會查看到網卡的IP 等狀況,固然您得爲網卡設置IP 才行;

般的狀況下,modproe.conf 或modules.conf的內容
是咱們用相應的硬件配置工具而生成的;若是您的硬件驅動是沒有被內核支持,您本身到硬件的廠商下載而來的驅動。通常的狀況下都有安裝和幫助文件。他們的驅
動在配置時,他會寫入硬件的支持到modules.conf 或modprobe.conf 文件中。
再好比咱們的聲卡在modules.conf 或modprobe.conf 中也有相應的內容,這是由alsaconf 配置工具生成的,明白了吧;同理網卡在modprobe.conf 或modules.conf中的內容也是由網卡的配置工具而來的。
有些硬件是之內核模塊的方式驅動的,模塊一旦加載上就能用,也沒有什麼配置工具,好比vfat 和ntfs 的支持;若是是硬件驅動不以模塊的方式支持,而是直接編入內核,也不會用在modprobe.conf 或 modules.conf 中加入什麼內容;
若是您有些模塊不能開機加載,您想讓一些模塊加機自動加載,就能夠把modprobe 模塊 直接寫入配置文件;

二、內核模塊其它配置文件

內核模塊的其它配置文件仍是須要了解的,好比 /lib/modules/內核版本目錄下的幾個文件;瞭解一下就行;好比:
代碼:[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/
build   misc           modules.ccwmap  modules.ieee1394map  modules.isapnpmap  modules.symbols  source
kernel  modules.alias  modules.dep     modules.inputmap     modules.pcimap     modules.usbmap

6、硬件驅動在系統中的目錄;


硬件驅動在內核中以模塊支持的目錄;

硬件驅動是必須由內核支持的,不管是咱們本身安裝驅動,仍是內核自帶的驅動都是如此。硬件驅動若是是之內核模塊支持的,驅動目錄位於: /lib/modules/內核版本/kernel/目錄 或 /lib/modules/內核版本/kernel/drivers 目錄中;
代碼:[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel
arch  crypto  drivers  fs  lib  net  sound
注:只有驅動在內核中以模塊的方法支持,驅動才位於 /lib/modules/相應的目錄;若是是直接置入內核的,不會出如今/lib/modules驅動相關的目錄;

7、本身編譯驅動的辦法;


過源碼編譯驅動通常是./configure ;make;make install ,有時程序不提供./configure
,咱們能夠make或make install ,或者執行make;make install ;若是不能make install
,則須要咱們本身複製.o或者.ko文件到 /lib/modules/內核版本/kernel/目錄 或
/lib/modules/內核版本/kernel/drivers 目錄中相應的驅動目錄;
這個仍是本身嘗試吧,說也說不清楚,遇到問題後就知道怎麼弄了;具體的仍是驅動的REAME和INSTALL爲準;
如今大多驅動都是在編譯安裝時,都自動複製.o或.ko 文件到內核模塊目錄,大多不用咱們本身動手複製過去。若是您嘗試編譯安裝聲卡驅動 alsa-drivers 就會明白我所說的意思;html



本身正好在看這個,發現了一篇不錯的資料,須要查看原文的複製此連接:http://linux.chinaunix.net/techdoc/system/2006/09/06/939607.shtmllinux

相關文章
相關標籤/搜索