Linux 開機流程簡介

了解 Linux 的開機流程, 對於系統管理員十分重要, 當系統發生問題時, 可以更有效除錯, 以下文章會簡單介紹 Linux 開機的流程, 而 Linux 開機的流程主要會經過以下 6 個步驟:

1 .BIOS
2. MBR
3. GRUB
4. Kernel
5. Init
6. Runlevel Scripts

1. BIOS
當按下電源按鈕後, 最先載入的是 BIOS, BIOS 會載入 CMOS 資料, 並進行自行檢測。
然後 BIOS 會從 硬碟, CD-ROM, USB 隨身碟等搜尋 boot loader, 當 BIOS 從開機啟動裝置順序找到 boot loader 後, 會將控制權交給 MBR.

2. MBR

MBR 全寫是 Master Boot Record, 儲存在啟動裝置的第一個磁區, 裡面包含了 GRUB (以前舊系統用 LILO) 的資訊, MBR 會載及入執行 GRUB boot loader.

3. GRUB

GRUB 全寫是 Grand Unified Bootloader, 進入 GRUB 後, 會出現 splash screen, 如果沒有按任何按鈕, 幾秒後 GRUB 會自動載入預設的 kernel, 如果有安裝多個 kernel, 可以在這時選擇想要啟動的 kernel, 在 Redhat 7 及 CentOS 7 下, GRUB 的設定檔在 /boot/grub2/grub.cfg

4. Kernel

Kernel 會立即載入硬件的設定以及載入所有需要的驅動程式, 然後會執行 /sbin/init, 這是第一個透過 Kernel 執行的程式, 接著 Kernel 根據 initrd 映像檔載入核心模組, 完成後會 unmount initrd 映像檔, 最後 Kernel 會根據 grub.cfg 的設定以 read-only root 分割區 (/),

5. Init

init 從檔案 /etc/inittab 的 “initdefault” 參數讀取預設 run level, 以下是 Linux 的 6 個 run level:

0 – halt (關機)
1 – Single user mode
2 – Multiuser, without NFS (The same as 3, if you do not have networking)
3 – Full multiuser mode
4 – unused
5 – X11
6 – reboot (重新開機)

一般上除了除錯, 圖形介面會用 run level 5, 而多數主機使用的 CLI, run level 會使用 3.

下一步是重新掛載 root 分割區 (/) 成 read-write 模式 (之前是以 read-only 掛載), 及根據 /etc/fstab 的內容掛載分割區.

6. Runlevel Scripts

根據不同的 runlevel, 系統會在不同的目錄讀取初始化 scripts 啟動, 儲存它們的目錄 run level 區分, 分別是:

0 -> /etc/rc.d/rc0.d
1 -> /etc/rc.d/rc1.d
2 -> /etc/rc.d/rc2.d
3 -> /etc/rc.d/rc3.d
4 -> /etc/rc.d/rc4.d
5 -> /etc/rc.d/rc5.d
6 -> /etc/rc.d/rc6.d

一般上儲存在上面目錄的 scripts 只是 symlink, 連結到 /etc/rc.d/init.d 裡面真實的 scripts 檔案.

完成啟動 runlevel scripts 後, Linux 便啟動完成了.




Leave a Reply