Linux的啟動流程大致上如下圖.
現在詳細說明一下每個步驟:
-
第一階段
當系統啟動時,系統首先會加載BIOS。BIOS的首先會檢查各硬件設備,當檢查完畢沒有問題之后。BIOS會根據設定的BootSequence來尋找可以引導系統的設備。一般而言,Linux是通過磁盤上MBR來引導系統的。
-
第二階段
MBR是Master Boot Record,是位于磁盤第0磁道的第1扇區,大小是512字節。其中開始的446字節是主bootloader,接著的64字節是磁盤分區表,剩下的2個字節就是校驗碼。當系統加載MBR的時候,MBR上的bootloader就會開始發揮作用。
-
第三階段
Bootloader就是主引導加載器。CentOS5,CentOS6上使用的Bootloader是grub ,而CentOS7上使用的是grub2.以grub為例,grub大體上是分為2步,第一步是stage1,stage1就是尋找位于磁盤上的stage2,第二步就是stage2,就是把內核加載在內存中的特定空間中,解壓、展開,并把系統控制權交給內核Kernel。
-
第四階段
內核Kernel獲得控制權之后,會探測可識別到的所有硬件設備;加載硬件驅動程序(有可能會借助于ramdisk加載驅動);以只讀方式掛載根文件系統(rootfs);運行用戶空間上的第一個程序,CentOS5/6上的是init(于/sbin/init)。
-
第五階段
init在啟動的時候,首先會讀取位于/etc/inittab的配置文件來以設定的運行級別。這里介紹Linux上的運行級別分別有:
0:關機
1:單用戶模式(root, 無須登錄), single, 維護模式;
2: 多用戶模式,會啟動網絡功能,但不會啟動NFS;維護模式;
3:多用戶模式,正常模式;文本界面;
4:預留級別;可同3級別;
5:多用戶模式,正常模式;圖形界面;
6:重啟
接著init會以設定的運行級別,來運行系統初始腳本(會執行/etc/rc.d/rc#.d上的腳本,#代表對應的運行級別的數字)、完成系統初始化。然后關閉對應下需要關閉的服務,啟動需要啟動服務。最后就會設置登陸終端,用戶就能開始登陸,使用系統。
原創文章,作者:Net17_Tim,如若轉載,請注明出處:http://www.www58058.com/11913
寫的不錯,感謝分享。。。。