亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

概述Linux系統的驅動框架及驅動加載
2007-07-28   網絡

系統初始化過程驅動程序的安裝

在Linux安裝過程中,系統上的硬件會被檢測,基于檢測到的結果安裝程序會決定哪些模塊需要在引導時被載入。Red Hat的安裝程序為anaconda,它提供了自動檢測硬件,并且安裝的機制。

但是,如果計算機內的某些硬件沒有默認的驅動程序,比如一塊SCSI卡,我們可以在啟動后的boot提示符下,輸入“linux dd”,在加載完內核后,系統會自動提示插入驅動盤,這時就有機會把該硬件的Linux驅動程序裝入。

如果在安裝系統時,某種硬件總是因為中斷沖突(ISA總線的設備較常見,比如一塊ISA網卡)沒法正常驅動,或者是缺少驅動程序,那么可以在boot提示符下輸入“linux noprobe”。在這種模式下,安裝程序不會自動配置找到的硬件,可以自己來選擇現有驅動,配置驅動程序的參數,或者選擇用光盤或軟盤加載驅動程序。

定制引導盤

系統啟動時是如何加載驅動的?下面讓我們來看一下Red Hat的安裝光盤是怎樣引導的。當Linux安裝光盤啟動時,加載位于光盤上isolinux中的內核文件vmlinuz,內核運行完畢后,又將initrd.img的虛擬文件系統加載到內存中。這個文件為ext2文件系統的鏡像,經過gzip壓縮,可以通過以下步驟查看該鏡像中的內容:

# mount /mnt/cdrom
# mkdir /mnt/imgdir
# gunzip < /mnt/cdrom/isolinux/initrd.img > /ext2img
# mount -t ext2 -o loop /ext2img /mnt/imgdir
# cd /mnt/imgdir
# ls -F
bin@
dev/
etc/
linuxrc@
lost+found/
modules/
proc/
sbin/
tmp/
var/
# cd modules
# ls 
module-info
modules.cgz
modules.dep
modules.pcimap
pcitable

其中modules.dep為模塊的注冊文件,同時有各種模塊的依存關系。modules.cgz為cpio的打包文件,實際的各種驅動模塊就在該文件中。我們可以通過以下命令解包:

# cpio -idmv < modules.cgz

由此可以看到,解包出來的目錄2.4.21-4XXX。進入該目錄下的i386目錄,就可以看到當前啟動盤中支持的所以驅動程序:

# ls 
3c59x.o
3w-xxxx.o
8139cp.o
8139too.o
8390.o
aacraid.o
acenic.o
aic79xx.o
……

若希望在系統中加入需要的驅動程序,可以相應地修改這些文件,比如在modules.dep中加入該模塊的名字和依存關系,將編譯好的驅動模塊文件加入modules.cgz中,這樣就可以制定自己的安裝光盤。

硬盤上的系統啟動過程與上面類似,但是initrd的鏡像文件要更簡單些,一般在initrd-2.4.XXX.img的虛擬文件系統中,只會在/lib目錄下包含ext3.o jbd.o lvm-mod.o等少數文件,用來驅動硬盤上的ext3的文件系統。加載文件系統后,就可以使用/lib/modules/2.4.XXX/下的modules.dep文件及Kernel目錄中的各種驅動文件。

熱詞搜索:

上一篇:概述Linux系統的驅動框架及驅動加載3
下一篇:Linux內核模塊是如何被調入內核工作的?

分享到: 收藏