系統初始化過程驅動程序的安裝
在Linux安裝過程中,系統上的硬件會被檢測,基于檢測到的結果安裝程序會決定哪些模塊需要在引導時被載入。Red Hat的安裝程序為anaconda,它提供了自動檢測硬件,并且安裝的機制。
但是,如果計算機內的某些硬件沒有默認的驅動程序,比如一塊SCSI卡,我們可以在啟動后的boot提示符下,輸入“linux dd”,在加載完內核后,系統會自動提示插入驅動盤,這時就有機會把該硬件的Linux驅動程序裝入。
如果在安裝系統時,某種硬件總是因為中斷沖突(ISA總線的設備較常見,比如一塊ISA網卡)沒法正常驅動,或者是缺少驅動程序,那么可以在boot提示符下輸入“linux noprobe”。在這種模式下,安裝程序不會自動配置找到的硬件,可以自己來選擇現有驅動,配置驅動程序的參數,或者選擇用光盤或軟盤加載驅動程序。
定制引導盤
系統啟動時是如何加載驅動的?下面讓我們來看一下Red Hat的安裝光盤是怎樣引導的。當Linux安裝光盤啟動時,加載位于光盤上isolinux中的內核文件vmlinuz,內核運行完畢后,又將initrd.img的虛擬文件系統加載到內存中。這個文件為ext2文件系統的鏡像,經過gzip壓縮,可以通過以下步驟查看該鏡像中的內容:
|
其中modules.dep為模塊的注冊文件,同時有各種模塊的依存關系。modules.cgz為cpio的打包文件,實際的各種驅動模塊就在該文件中。我們可以通過以下命令解包:
|
由此可以看到,解包出來的目錄2.4.21-4XXX。進入該目錄下的i386目錄,就可以看到當前啟動盤中支持的所以驅動程序:
|
若希望在系統中加入需要的驅動程序,可以相應地修改這些文件,比如在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目錄中的各種驅動文件。