概要
Linux運(yùn)維經(jīng)典面試題:
請(qǐng)簡(jiǎn)述Linux啟動(dòng)過程
最近刷面試題發(fā)現(xiàn)平斩,網(wǎng)上很多關(guān)于Linux啟動(dòng)流程
的面試題標(biāo)準(zhǔn)答案,都是基于10年前的CentOS 6 版本的咽块。但隨著Systemd
普及后绘面,現(xiàn)在的系統(tǒng)啟動(dòng)流程有比較大的變化。所以我嘗試重新寫一份答案侈沪,兼顧了新舊兩種版本的Linux發(fā)行版本的啟動(dòng)流程揭璃。
Linux啟動(dòng)流程答案
1. 主板固件
加載硬盤
- 傳統(tǒng)服務(wù)器用
BIOS(基本輸入輸出系統(tǒng))
自檢 - 新服務(wù)器也可能用
UEFI(統(tǒng)一可擴(kuò)展固件接口)
自檢
2. 讀取引導(dǎo)文件
- 傳統(tǒng)的引導(dǎo)文件是
MBR(Master Boot Record)
- 大于2T的硬盤只能用
GPT(GUID Pattition Table)
引導(dǎo)(主板固件必須是UEFI)
3. GRUB 引導(dǎo)菜單(Boot Loader)
4. 加載內(nèi)核kernel
5. Kernerl 執(zhí)行 init
- 傳統(tǒng)版本:init 啟動(dòng)調(diào)用 System V init
- Systemd 版本: init 啟動(dòng)
systemd
, 并將PID設(shè)置為1
6. 設(shè)定運(yùn)行級(jí)別
- 傳統(tǒng)版本: 根據(jù)
inittab
文件 - Systemd版本: 根據(jù)
/lib/systemd/system/default.target
7. 根據(jù)(/etc/fstab)加載文件系統(tǒng)
- 傳統(tǒng)版本:init進(jìn)程執(zhí)行掛載任務(wù)
- Systemd版本: init進(jìn)程執(zhí)行掛載任務(wù)亭罪。具體:systemd 會(huì)先啟動(dòng)服務(wù)瘦馍,如 local-fs.target, swap.target 和 cryptsetup.target,用于掛載文件系統(tǒng)
8. 啟動(dòng)服務(wù)
- 傳統(tǒng)版本:init調(diào)用
/etc/init.d/rcS
, 按順序啟動(dòng)服務(wù)应役,同時(shí)間只能啟動(dòng)一個(gè)服務(wù) - Systemd版本:根據(jù)服務(wù)配置文件的After和Before參數(shù)決定啟動(dòng)順序情组,可以并發(fā)啟動(dòng)服務(wù)(service)
9. 執(zhí)行自定義開機(jī)任務(wù)
- 傳統(tǒng)版本:運(yùn)行
/etc/rc.local
( 紅帽系是/etc/rc.d/rc.local
) - Systemd版本: 調(diào)用
rc-local.service
, 如果/etc/rc.local
( 紅帽系是/etc/rc.d/rc.local
)文件屬性是可執(zhí)行箩祥,則執(zhí)行它呻惕。
10. 進(jìn)入系統(tǒng)登錄界面
- 傳統(tǒng)版本:
/etc/init.d/xdm
運(yùn)行圖形界面或者登錄提示符,以便用戶登錄和使用系統(tǒng) - Systemd版本: systemd (systemd-logind.service)會(huì)運(yùn)行圖形界面或者登錄提示符滥比,以便用戶登錄和使用系統(tǒng)
參考資料
UEFI是什么?與BIOS的區(qū)別在哪里做院?
MBR VS GPT
The Difference Between System V and SystemD
CentOS8啟動(dòng)流程