歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux系統開機過程描述

Linux系統開機過程描述

日期:2017/2/28 14:43:22   编辑:Linux教程

本文描述Linux系統開機過程,屬於個人理解范疇,如果文中表述有誤請大家批評指正!

計算機開機之後,首先要加載BIOS(基本輸入輸出系統)信息,BIOS包含了很多重要的信息,包括CPU信息,設備啟動順序信息,硬盤信息,內存信息,時鐘信息等。

由BIOS進行POST(加電自檢),然後依據BIOS內設置的引導順序從硬盤、軟盤或者CDROM中讀入引導塊。Linux系統是從BIOS中的OxFFFFO處開始引導的。BIOS的第一個工作時POST,POST的工作就是對硬件進行檢測。第二個工作是進行本地設備的枚舉和初始化。

BIOS是由兩部分組成:POST代碼和運行時的服務。當POST完成之後就會被從內存中清理出來,但是BIOS運行時服務依然會保留在內存中。BIOS會按照設置中定義的順序來搜索處於活動狀態並且可以引導的設備。

引導設備可以是硬盤上的某個分區、CD-ROM、軟盤、網絡上的某個設備或者是USB設備。Linux通常是從硬盤上進行引導的,其中主引分區MBR包含了主引導加載程序。當MBR加載到RAM中後,BIOS將控制權轉交給MBR,MBR 又叫主引導扇區,是計算機開機後訪問硬盤時必須要讀取的首個扇區,位於0柱面,0磁道,1扇區。MBR的主引導程序是一個512字節的映像。前446字節是主引導加載程序,接下來的64個字節包含了分區表的信息,還有兩個特殊的字節OxAA55用來檢查MBR的有效性。

如果系統要想啟動就必須啟動內核,顯然MBR是放不下內核的,但是MBR中有個小程序可以載入其他位置的內核,這個小程序就是boot loader 即GRUB。GRUB允許用戶可以選擇要啟動的操作系統。GRUB包裹三個重要的文件,Stage1、Stage2、Stage1.5. Stage1通常放在MBR中,作用就是在系統啟動時用於加載Stage2,並將控制權轉交給它。Stage2就是GRUB的核心,所有的功能都由它完成。Stage1.5介於Stage1和Stage2之間,是他們之間的橋梁,因為Stage2較大,通常放在文件系統中,但是Stage1不能識別文件系統,Stage1.5來引導位於某個文件系統中的Stage2。Stage2是GRUB的核心但不是Linux的核心,grub加載以後就是為了加載Linux的內核,grub的配置

是通過/boot/grub/grub.conf來實現的。

接下來就要加載內核映像到內存中,內核映像是被zlib進行壓縮過的,通常是一個zimage或者是bzimage,在映像前有一個例程可以實現少量的硬件設置,並對內核映像解壓並將其放到內存中,之後該例程會調用內核,開始啟動內核引導過程。內核啟動後會向bios查詢電腦的所有硬件信息,然後自己開始管理這些設備,以便提供給Linux使用內核會嘗試驅動這些設備,,這些設備的驅動一部分包含在內核中,叫做靜態驅動,一部分放在文件系統中,由於此時還沒有掛在任何文件系統,因此還不能使用,所以內核會嘗試掛在根文件系統,根文件系統至少包含/etc、/bin、/boot、/lib、/dev5大目錄,缺一不可,根文件系統掛在是以只讀方式掛載,因為這是Linux還在啟動階段,不穩定,避免破壞系統資料。

在內核完成引導後,就在本進程空間內加載init程序,進程號是1,init進程是所有進程的發起者和控制者,它是第一個運行的進程,init進程會根據/etc/inittab判斷要進入的運行級別,然後直接執行/etc/rc.d/rc.sysinit進行系統初始化,並將啟動的相關信息加載到/var/log/dmesg文件中。系統所有的服務啟動之後在執行/etc/rc.d/rc.local腳本,將需要開機運行的程序啟動。

Copyright © Linux教程網 All Rights Reserved