一、BIOS/UEFI啟動
BIOS/UEFI是計算機的基本輸入輸出系統,負責硬體的初始化和系統的引導。
當計算機啟動時,首先會運行BIOS/UEFI程序。此時,BIOS/UEFI程序將會從指定的存儲設備(例如硬碟、U盤、光碟等)的引導扇區讀取啟動代碼(bootloader)到內存,並跳轉到該代碼開始執行。在Linux系統中通常使用GRUB2作為bootloader。
二、GRUB2啟動
當BIOS/UEFI載入了GRUB2之後,GRUB2會讀取到Linux系統的內核文件vmlinuz及initramfs(初始根文件系統)文件。GRUB2成功載入內核文件後,會將控制權轉交給內核。
# GRUB2配置文件 menuentry 'CentOS 7' { search --no-floppy --fs-uuid --set=root xxxx-xxxx-xxxx-xxxx-xxxx linux /vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8 initrd /initramfs-3.10.0-693.el7.x86_64.img }
三、內核啟動
內核作為系統的核心,負責管理系統所有資源,包括內存、硬碟、CPU等,在完成硬體初始化後,會根據/boot/grub2/grub.cfg配置文件中的參數,啟動root文件系統。root文件系統是系統的根目錄,包含了系統啟動所需的所有文件及目錄。
當內核啟動時,會在用戶空間運行第一個進程systemd,進而完成整個系統的啟動,並掛載文件系統。
四、systemd啟動
在Linux系統中,systemd已經取代了傳統的system V init進程。systemd通過控制cgroups(控制group)進程組,來管理系統中的所有進程。
systemd會掃描所有unit文件,以確定需要啟動的服務。根據需求,將按照指定的順序,依次將每個服務啟動、停止或重啟。systemd會保留系統日誌,並通過journalctl命令展示。
五、總結
以上便是Linux系統啟動的主要流程。從BIOS/UEFI啟動開始,到GRUB2載入內核及初始根文件系統,再到內核啟動並掛載文件系統,最終交由systemd進程啟動及管理服務進程。
對於Linux系統運維工程師而言,深入了解Linux系統的啟動流程,可以更好地理解系統的運行機制,有效地識別和排除系統的啟動故障。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192850.html