***了解Linux開機啟動順序之前先了解一下Linux運行級別,通過inittab配置文件查看運行級別的定義:
[root@oldboy ~]# cat /etc/inittab
# Default runlevel. The runlevels used are:
0表示系統關機
# 0 - halt (Do NOT set initdefault to this)
1表示單用戶模式,一般用於修改root密碼或系統救援
# 1 - Single user mode
2表示多用戶模式,但沒有NFS網絡文件系統功能
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3表示多用戶模式,一般生產系統就用此級別
# 3 - Full multiuser mode
4表示未使用
# 4 – unused
5表示以圖形介面登錄
# 5 - X11
6表示重啟系統
# 6 - reboot (Do NOT set initdefault to this)
id:3:initdefault: ##系統修改運行級加就在此修改即可
[root@oldboy ~]# runlevel ##查看當前系統運行級別
N 3
[root@oldboy ~]# init 5 ##切換運行級別
Linux 開機啟動順序流程圖:
一、開機加載BIOS自檢設備啟動順序信息、硬盤信息、內存信息等
標注:以VMware WorkStation虛擬機截圖
二、MBR引導
標注:還有另外一種開機加載方式GPT(UEFI+GPT)引導,GUID Partition Table全局唯一標識分區表
MBR(Legacy+MBR)引導,Master Boot Record即硬盤主引導記錄分區 (硬盤0柱面、0磁頭、1扇區,大小為512字節)
(1)、主引導扇區MBR 占446個字節
(2)、分區表DPT 占64個字節(一個硬盤只能分四個主分區,一個分區占用16個字節)
(3)、分區表有效性標記 占用2個字節
三、Boot Loader引導加載(以GRUB引導菜單為例),系統讀取內存中的grub配置信息,
並依照此配置信息來啟動不同的操作系統,可以通過/boot/grub/grub.conf進行配置
四、加載內核Kernel
五、啟動第一個進程init
六、執行/etc/rc.d/rc.sysinit腳本文件初始化設置
七、讀取inittab配置文件設定運行等級,執行/etc/rc.d/rc3.d目錄相應的腳本程序
標注:kdump 是一個系統意外崩潰時收集錯誤信息的工具,可以關閉,不影響系統啟動
八、啟動mingetty進程,進入登錄狀態
標注:在啟動mingetty進程時,系統會先執行/etc/rc/rc.local開機自動啟用戶自定義的動程序命令的文件
感謝老男孩博客提供參考 https://blog.51cto.com/oldboy