啟動程序的順序怎么調整(linux系統啟動流程圖解)
按下電腦上的電源按鈕,片刻之后您就會看到 Linux 登錄提示。
你有沒有想過從按下電源按鈕到 Linux 登錄提示出現在幕后發生了什么?
以下是典型 Linux 引導過程的 6 個高級階段。
1. BIOS
- BIOS 代表基本輸入/輸出系統
- 執行一些系統完整性檢查
- 搜索、加載和執行引導加載程序。
- 它在軟盤、CD-ROM 或硬盤驅動器中查找引導加載程序。您可以在 BIOS 啟動期間按一個鍵(通常是 F12 或 F2,但這取決于您的系統)來更改啟動順序。
- 一旦檢測到引導加載程序并將其加載到內存中,BIOS 就會將控制權交給它。
- 因此,簡單來說,BIOS 加載并執行 MBR 引導加載程序。
2.MBR
- MBR 代表主引導記錄。
- 它位于可引導磁盤的第一個扇區。通常是 /dev/hda 或 /dev/sda
- MBR 的大小小于 512 字節。這包含三個部分:1)第一個 446 字節目中的主引導加載程序信息 2)接下來 64 字節目中的分區表信息 3)最后 2 字節中的 mbr 驗證檢查。
- 它包含有關 GRUB(或舊系統中的 LILO)的信息。
- 因此,簡單來說,MBR 加載并執行 GRUB 引導加載程序。
3. GRUB
-
- GRUB 代表 Grand Unified Bootloader。
- 如果您的系統上安裝了多個內核映像,您可以選擇執行哪一個。
- GRUB 顯示一個啟動屏幕,等待幾秒鐘,如果您不輸入任何內容,它會加載 grub 配置文件中指定的默認內核映像。
- GRUB 了解文件系統(舊的 Linux 加載器 LILO 不了解文件系統)。
- Grub 配置文件是 /boot/grub/grub.conf(/etc/grub.conf 是指向此處的鏈接)。以下是 CentOS 的示例 grub.conf。
#boot=/dev/sdadefault=0timeout=5splashimage=(hd0,0)/boot/grub/splash.xpm.gzhiddenmenutitle CentOS (2.6.18-194.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ initrd /boot/initrd-2.6.18-194.el5PAE.img
- 正如您從上述信息中注意到的,它包含內核和 initrd 映像。
- 因此,簡單來說,GRUB 只是加載并執行內核和 initrd 映像。
4.內核
- 掛載 grub.conf 中“root=”中指定的根文件系統
- 內核執行 /sbin/init 程序
- 由于 init 是 Linux 內核執行的第一個程序,它的進程 id (PID) 為 1。執行 'ps -ef | grep init' 并檢查 pid。
- initrd 代表初始 RAM 磁盤。
- initrd 被內核用作臨時根文件系統,直到內核啟動并掛載真正的根文件系統。它還包含內部編譯的必要驅動程序,這有助于它訪問硬盤驅動器分區和其他硬件。
5. 初始化
- 查看 /etc/inittab 文件已確定 Linux 運行級別。
- 以下是可用的運行級別0 – halt1 – Single user mode2 – Multiuser, without NFS3 – Full multiuser mode4 – unused5 – X116 – reboot
- Init 從 /etc/inittab 中識別默認的 initlevel 并使用它來加載所有適當的程序。
- 在您的系統上執行“grep initdefault /etc/inittab”以識別默認運行級別
- 如果你想惹麻煩,你可以將默認運行級別設置為 0 或 6。既然你知道 0 和 6 的含義,你可能不會那樣做。
- 通常,您會將默認運行級別設置為 3 或 5。
6. 運行級程序
- 當 Linux 系統啟動時,您可能會看到各種服務正在啟動。例如,它可能會說“開始發送郵件……。好的”。這些是運行級別程序,從運行級別定義的運行級別目錄執行。
- 根據您的默認初始化級別設置,系統將從以下目錄執行程序。Run level 0 – /etc/rc.d/rc0.d/Run level 1 – /etc/rc.d/rc1.d/Run level 2 – /etc/rc.d/rc2.d/Run level 3 – /etc/rc.d/rc3.d/Run level 4 – /etc/rc.d/rc4.d/Run level 5 – /etc/rc.d/rc5.d/Run level 6 – /etc/rc.d/rc6.d/
- 請注意,在 /etc 下面這些目錄也有可用的符號鏈接。因此,/etc/rc0.d 鏈接到 /etc/rc.d/rc0.d
- 在 /etc/rc.d/rc*.d/ 目錄下,您會看到以 S 和 K 開頭的程序。
- 以 S 開頭的程序在啟動時使用。S 為啟動。
- 以 K 開頭的程序在關機期間使用。K 表示殺戮。
- 程序名稱中的 S 和 K 旁邊有數字。這些是應該啟動或終止程序的序列號。
- 例如,S12syslog 是啟動 syslog 守護進程,序號為 12。S80sendmail 是啟動 sendmail 守護進程,序號為 80。因此,syslog 程序將在 sendmail 之前啟動。
點個贊! ()