概況
系統的引導和初始化是作業系統實現控制的第一步,也是集中體現系統優劣的重要部分。LINUX作為一個免費的准UNIX作業系統,在眾多業餘愛好者以及小型商業處理市場表現不俗,成為繼WINDOWS系列後的另一個主流。瞭解LINUX系統的初始化,對於進一步掌握UNIX系統是十分有協助的。
通常,LINUX系統的初始化可以分為兩部分:核心部分和init程式部分。核心主要完成系統的硬體檢測和初始化,init程式則主要完成系統的各項配置。
核心初始化詳解
通常情況下,電腦首先用LILO程式引導核心的一部分(這部分沒有被壓縮),以此來引導核心的其他部分。LILO程式是最常用的、也是比較完善的LINUX系統引導器,PC機通常從硬碟的開機磁區讀取這部分程式。關於LILO程式的詳細內容可以參照其他資料。
核心被解壓縮並裝入記憶體後,開始初始化硬體和裝置驅動程式。下面是核心初始化系統的具體步驟(各個版本之間會有一定的差異,下面是2.2.16-22版本的一個例子):
(1) 檢測CPU的主頻和控制台的顯示類型,並對CPU速度用Bogo MIPS程式進行估算。
(2) 此後核心通過外設顯示系統記憶體資訊:如131072k(128M),127820k剩餘,使用的具體情況為:1048k核心代碼,412k保留,1728k資料等。爾後是各類hash table的資訊。
(3) 核心載入磁碟空間限量支援,完成CPU檢測(包括檢查數學副處理器),以及POSIX適應性檢測。
(4) 初始化PCI BIOS,檢測系統的PCI裝置,並載入TCP/IP網路支援。
(5) 核心開始檢測其他各種硬體裝置:如PS/2連接埠裝置,串列口裝置,硬碟,磁碟片,SCSI等。
此後,核心將啟動init程式,形成系統的第一個進程。下面是dmesg記錄的核心初始化資訊(部分):
Detected 499845 kHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 996.15 BogoMIPS
Memory: 127820k/131072k available (1048k kernel code, 412k reserved, 1728k data, 64k init, 0k bigmem)
Dentry hash table entries: 262144 (order 9, 2048k)
Buffer cache hash table entries: 131072 (order 7, 512k)
Page cache hash table entries: 32768 (order 5, 128k)
VFS: Diskquotas version dquot_6.4.0 initialized
CPU: Intel Celeron (Mendocino) stepping 05
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.35a (19990819) Richard Gooch (rgooch@atnf.csiro.au)
PCI: PCI BIOS r