Linux 引導過程的 6 個階段(啟動順序)
按下電腦上的電源按鈕,片刻之后您會看到 linux 登錄提示。

你有沒有想過從按下電源按鈕到 linux 登錄提示出現(xiàn)在幕后發(fā)生了什么?
以下是典型 Linux 引導過程的 6 個高級階段。
1. BIOS
BIOS 代表基本輸入/輸出系統(tǒng)
執(zhí)行一些系統(tǒng)完整性檢查
搜索、加載和執(zhí)行引導加載程序。
它在軟盤、CD-ROM 或硬盤驅動器中查找引導加載程序。您可以在 BIOS 啟動期間按一個鍵(通常是 F12 或 F2,但這取決于您的系統(tǒng))來更改啟動順序。
一旦檢測到引導加載程序并將其加載到內存中,BIOS 就會將控制權交給它。
因此,簡單來說,BIOS 加載并執(zhí)行 MBR 引導加載程序。
2.MBR
MBR 代表主引導記錄。
它位于可引導磁盤的第一個扇區(qū)。通常是 /dev/hda 或 /dev/sda
MBR 的大小小于 512 字節(jié)。這包含三個部分:1)第一個 446 字節(jié)中的主引導加載程序信息 2)接下來 64 字節(jié)中的分區(qū)表信息 3)最后 2 字節(jié)中的 mbr 驗證檢查。
它包含有關 GRUB(或舊系統(tǒng)中的 LILO)的信息。
因此,簡單來說,MBR 加載并執(zhí)行 GRUB 引導加載程序。
3.?GRUB
GRUB 代表 Grand Unified Bootloader。
如果您的系統(tǒng)上安裝了多個內核映像,您可以選擇執(zhí)行哪一個。
GRUB 顯示一個啟動屏幕,等待幾秒鐘,如果您不輸入任何內容,它會加載 grub 配置文件中指定的默認內核映像。
GRUB 了解文件系統(tǒng)(舊的 Linux 加載器 LILO 不了解文件系統(tǒng))。
Grub 配置文件是 /boot/grub/grub.conf(/etc/grub.conf 是指向此的鏈接)。以下是 CentOS 的示例 grub.conf。
#boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title 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 只是加載并執(zhí)行內核和 initrd 映像。
4.內核
掛載 grub.conf 中“root=”中指定的根文件系統(tǒng)
內核執(zhí)行 /sbin/init 程序
由于 init 是 Linux 內核執(zhí)行的第一個程序,它的進程 id (PID) 為 1。執(zhí)行 'ps -ef |?grep init' 并檢查 pid。
initrd 代表初始 RAM 磁盤。
initrd 被內核用作臨時根文件系統(tǒng),直到內核啟動并掛載真正的根文件系統(tǒng)。它還包含內部編譯的必要驅動程序,這有助于它訪問硬盤驅動器分區(qū)和其他硬件。
5. 初始化
查看 /etc/inittab 文件以確定 Linux 運行級別。
以下是可用的運行級別
0 – halt
1 – Single user mode
2 – Multiuser, without NFS
3 – Full multiuser mode
4 – unused
5 – X11
6 – reboot
Init 從 /etc/inittab 中識別默認的 initlevel 并使用它來加載所有適當?shù)某绦颉?/p>
在您的系統(tǒng)上執(zhí)行“grep initdefault /etc/inittab”以識別默認運行級別
如果你想惹麻煩,你可以將默認運行級別設置為 0 或 6。既然你知道 0 和 6 的含義,你可能不會那樣做。
通常,您會將默認運行級別設置為 3 或 5。
6. 運行級程序
當 Linux 系統(tǒng)啟動時,您可能會看到各種服務正在啟動。例如,它可能會說“開始發(fā)送郵件……。好的”。這些是運行級別程序,從運行級別定義的運行級別目錄執(zhí)行。
根據(jù)您的默認初始化級別設置,系統(tǒng)將從以下目錄之一執(zhí)行程序。
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 旁邊有數(shù)字。這些是應該啟動或終止程序的序列號。
例如,S12syslog 是啟動 syslog 守護進程,序號為 12。S80sendmail 是啟動 sendmail 守護進程,序號為 80。因此,syslog 程序將在 sendmail 之前啟動。
Linux
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。