了解 RHEL/Centos7 的Linux 啟動過程十分重要,了解了Linux的啟動過程,就很容易理解操作系統(tǒng)的運行級別問題。

1. BIOS
當(dāng)打開系統(tǒng)電源后,他將讀取所有設(shè)備配置,并進(jìn)行POST(加電自檢)。這個過程是從系統(tǒng)固件(現(xiàn)代的通用擴(kuò)展固件接口(UEFI)或經(jīng)典的基本輸入輸出系統(tǒng)(BIOS))中開始。完成硬件的啟動初始化后,將加載MBR(主引導(dǎo)記錄)以用于進(jìn)一步的啟動過程。
2.MBR(主引導(dǎo)記錄)
主引導(dǎo)記錄位于Linux引導(dǎo)硬盤的第一個扇區(qū),此信息是有BIOS預(yù)加載到ROM(只讀存儲器)中。MBR的大小僅為512字節(jié),其中包含用于446字節(jié)用于引導(dǎo)操作啟動的bootloader程序和64字節(jié)分區(qū)表還有2字節(jié)的“ Magic Number”(用于錯誤監(jiān)測)。

MBR發(fā)現(xiàn)可引導(dǎo)設(shè)備,并將GRUB2引導(dǎo)加載程序加載到內(nèi)存中,并將控制權(quán)轉(zhuǎn)移給該可引導(dǎo)設(shè)備
3. GRUB2 (Grand Unified Bootloader 2)
加載引導(dǎo)加載程序。
GRUB 2配置文件位于/boot/grub2/grub.cfg ,是Centos 7 的默認(rèn)引導(dǎo)程序。
在生成 grub.cfg 的配置文件時,grub2的默認(rèn)配置來自 /etc/default/grub 文件中
# cat /etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
可以使用 grub2-mkconfig 生成一個 grub2 的配置文件。
# grub2-mkconfig -o /boot/grub2/grub.cfg
- grub2 會在 /boot 目錄中搜索壓縮后的內(nèi)核映像文件,也稱做vmlinuz
- grub2 會將 vmlinuz 加載到內(nèi)存中,并經(jīng)intramfs 映像文件的內(nèi)容提取到基于內(nèi)存的臨時文件系統(tǒng) tmpfs 中。
- 初始化RAM磁盤(initrd)是在實際根文件系統(tǒng)之前安裝的
初始根文件系統(tǒng)。
intramfs
- 初始化RAM文件系統(tǒng)的工作是預(yù)加載塊設(shè)備模塊,例如用于 IDE,SCSI或者RAID的塊設(shè)備模塊,以便隨后可以訪問和安裝這些模塊所在的根文件系統(tǒng)
4. 加載內(nèi)核
- systemd進(jìn)程仍然從 initrd (初始根系統(tǒng))中加載必要的驅(qū)動程序模塊。
- 引導(dǎo)加載程序(grub2)可以向用戶顯示引導(dǎo)菜單,或者將其配置為自動啟動默認(rèn)的操作系統(tǒng)
- 啟動Linux, 將內(nèi)核與initramfs包含啟動所需要的所有硬件的內(nèi)核模塊,以及進(jìn)行下一啟動階段所需要的初始化腳本。
- initramfs 包含完整的操作系統(tǒng),可以用來排障
5. 啟動systemd
內(nèi)核開始以pid 1 啟動 systemd 進(jìn)程
- systemd 是系統(tǒng)引導(dǎo)后的第一個進(jìn)程,引導(dǎo)最好階段并使用系統(tǒng),
- systemd 讀取 /etc/systemd/system/default.target 鏈接的文件 (例如 /usr/lib/systemd/system/multi-user.target), 以確認(rèn)默認(rèn)的系統(tǒng)目標(biāo)(運行級別)。系統(tǒng)目標(biāo)文件定義了systemd啟動的服務(wù)。
- systemd 允許管理系統(tǒng)上的各種類型的單元,包括服務(wù)(name.service)和目標(biāo)(name.target)設(shè)備(name.device), 文件系統(tǒng)的安裝點(name.mount)和套接字(name.socket)
systemd 進(jìn)入系統(tǒng)后開始執(zhí)行系統(tǒng)初始化任務(wù)如
- 設(shè)定主機(jī)名
- 初始化網(wǎng)絡(luò)
- 初始化SeLinux
- 設(shè)置歡迎標(biāo)語
- 初始化硬件
- 掛在文件系統(tǒng)
- 清理 var 等