Linux的開機啓動順序
第一步:當然是加電了
第二步:加載BIOS設置,選擇啓動盤。這是因爲因爲BIOS中包含了CPU的相關信息、設備啓動順序信息、硬盤信息、內存信息、時鐘信息、PnP特性等等。在此之後,計算機心裏就有譜了,知道應該去讀取哪個硬件設備了。在BIOS將系統的控制權交給啓動硬盤第一個扇區之後,就開始由Linux來控制系統了。
第三步:加載磁盤中MBR中的grub
MBR(Master Boot Record):即主引導分區,是啓動盤的前512字節,裏面存放了預啓動信息和分區信息。前446個字節,即是grub引導程序後66個字節是分區表的信息
第四步:加載Linux內核系統到內存當中,運行超級進程/sbin/init進程。在Linux系統中,init進程的進程號永遠是1,也就是說,系統中的所有進程的父進程都是init進程。可以使用命令pstree進行查看。
第五步:加載配置文件。init程序啓動之後,會讀取/etc/inittab文件,來決定系統的運行級別,Linux系統的運行級別有7中,從0-6
# 0 - 關機模式(千萬不要把initdefault設置爲0 ,要不然你永遠開不了機)
# 1 - 單用戶模式 (此模式相當於救援模式,內核損壞,root忘記密碼等可以使用此模式進行恢復。相當於windows下的安全模式)
# 2 - 多用戶,但是沒有NFS
# 3 - 完全多用戶模式 (文本命令行界面,一般服務器都是此模式)
# 4 - 保留未使用
# 5 - 圖形桌面(系統啓動之後會進入到圖形化桌面系統中)
# 6 - 重新啓動(千萬不要把initdefault設置爲6 )
平時我們常用的也就是1,3,5。可以使用init 3 ,init 5進行切換。運行級別決定之後,加載相應的配置文件。第一個用戶層文件就是/etc/rc.d/rc.sysinit腳本程序,它做的工作非常多,包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啓動swap分區、設定/proc等等
第六步:加載內核模塊,具體是依據/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內核模塊。
第七步:根據運行級別,系統會運行rc0.d到rc6.d中的相應的腳本程序,來完成相應的初始化工作和啓動相應的服務。
第八步:啓動init.d下的系統進程
第九步:出現登錄系統的畫面。
至此,Linux開啓啓動完成。