1、BIOS加電自檢
計算機啟動后,首先會進行固件BIOS的自檢,即所謂的POST,然后把保持在MBR主引導記錄中的主引導加載程序到內存中
2、加載主引導加載程序(MBR)
主引導加載程序通過分區表查找活動分區,然后將活動分區的次引導加載程序從設備讀入內存并運行
3、加載次引導加載程序(GRUB)
次引導加載程序顯示GRUB選擇界面,根據選擇把相應操作系統的內核加載到內存中。如果用戶不進行選擇,那么GRUB會在5秒后自動
啟動grub.conf文件設置的默認操作系統,GRUB確定要啟動的操作系統后,它就會定位相應的內核映像所在的/boot/vmlinuz-<內核版本>。
GRUB會把內存映像加載到內存中,由于內核映像并不是一個可執行的內核,而是經過壓縮的內核映像,GRUB需要對內核進行解壓,然后加載到內存中并執行。至此引導加載程序GRUB完成它的任務,它會把控制權交給內核映像,由內核繼續完成接下來的系統引導工作。GRUB的配置主要通過修改/boot/grub/grub.conf文件來完成,介紹其中2個參數:
(1)root(hdx,y):設置內核所在的磁盤分區,GRUB的硬盤表示方法和Linux是不同的。GRUB是由0開始計數,(hd0,0)則表示第一塊硬盤的第一個分區,而linux中的表示則是hda1;(hd0,1)表示第一塊硬盤的第一個邏輯分區,而Linux中則是hda5
(2)設置內核文件的名稱,放在/boot文件中
4、Linux內核映像
在內核的引導過程中,會加載必要的系統模塊,以掛載根文件系統/,完成后內核會啟動init進程,并把引導的控制器交給init進程
5、init進程
init進程會掛載/etc/fstab中設置的文件系統,并根據/etc/fstab文件來執行相應的腳本進行系統初始化,如設備鍵盤、字體、設置網絡、啟用應用程序等。init進程是linux進程的起點,內核在完成內核引導后,便會加載init進程,其進程號是1,init進程啟動后,會初始化操作系統,并啟動特定的運行級別(Runlevel)下的自動運行程序。用戶可以通過更改相關配置文件或使用圖形化配置工具服務配置,自定義需要在系統啟動時自動運行的服務。
內核映像在完成引導后,便會啟動init進程。init進程對應的執行文件為/sbin/init,他的是系統中進程的發起者和控制者,的進程都是由它所衍生。如果init進程出現問題,系統的其他進程也會隨之而受影響,由于是系統中第一個運行的進程,init進程的進程號永遠是1。
init進程主要有兩作用
(1)作為所用進程的父進程參照對象
(2)運行不同級別的程序:init進程另一個作用就是初始化操作系統,在進入特定的運行級別