Linux Booting Process steps - RHEL/Centos7

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


Linux Booting Process steps

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ù)如

  1. 設(shè)定主機(jī)名
  2. 初始化網(wǎng)絡(luò)
  3. 初始化SeLinux
  4. 設(shè)置歡迎標(biāo)語
  5. 初始化硬件
  6. 掛在文件系統(tǒng)
  7. 清理 var 等
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容