Linux 引導(dǎo)過(guò)程 - 詳細(xì)描述的 6 個(gè)步驟
操作系統(tǒng) (OS) 是管理資源、控制外圍設(shè)備并為其他軟件提供基本服務(wù)的低級(jí)軟件。在 Linux 中,典型的引導(dǎo)過(guò)程有 6 個(gè)不同的階段。
1. BIOS
BIOS 代表基本輸入/輸出系統(tǒng)。簡(jiǎn)單來(lái)說(shuō),BIOS 加載并執(zhí)行主引導(dǎo)記錄 (MBR) 引導(dǎo)加載程序。
首次打開(kāi)計(jì)算機(jī)時(shí),BIOS 首先對(duì) HDD 或 SSD 執(zhí)行一些完整性檢查。
然后,BIOS 搜索、加載并執(zhí)行引導(dǎo)加載程序,該引導(dǎo)加載程序可以在主引導(dǎo)記錄 (MBR) 中找到。MBR 有時(shí)位于 USB 記憶棒或 CD-ROM 上,例如實(shí)時(shí)安裝的 Linux。
一旦檢測(cè)到引導(dǎo)加載程序,它就會(huì)被加載到內(nèi)存中,BIOS 會(huì)將系統(tǒng)控制權(quán)交給它。
2.MBR
MBR 代表 Master Boot Record,負(fù)責(zé)加載和執(zhí)行 GRUB 引導(dǎo)加載程序。
MBR 位于可引導(dǎo)磁盤(pán)的第一個(gè)扇區(qū),通常為/dev/hda
或/dev/sda
,具體取決于您的硬件。MBR 還包含有關(guān) GRUB 或非常舊系統(tǒng)中的 LILO 的信息。
3. 蠐螬
有時(shí)稱(chēng)為 GNU GRUB,它是 GNU GRand Unified Bootloader 的縮寫(xiě),是大多數(shù)現(xiàn)代 Linux 系統(tǒng)的典型引導(dǎo)加載程序。
GRUB 啟動(dòng)畫(huà)面通常是您在啟動(dòng)計(jì)算機(jī)時(shí)看到的第一件事。它有一個(gè)簡(jiǎn)單的菜單,您可以在其中選擇一些選項(xiàng)。如果您安裝了多個(gè)內(nèi)核映像,則可以使用鍵盤(pán)選擇您希望系統(tǒng)啟動(dòng)的那個(gè)。默認(rèn)情況下,選擇最新的內(nèi)核映像。
初始屏幕將等待幾秒鐘供您選擇和選項(xiàng)。如果不這樣做,它將加載默認(rèn)內(nèi)核映像。
/boot/grub/grub.conf
在許多系統(tǒng)中,您可以在或找到 GRUB 配置文件/etc/grub.conf
。這是一個(gè)簡(jiǎn)單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
4.內(nèi)核
內(nèi)核通常被稱(chēng)為任何操作系統(tǒng)的核心,包括 Linux。它可以完全控制您系統(tǒng)中的所有內(nèi)容。
在引導(dǎo)過(guò)程的這個(gè)階段,GRUB 選擇的內(nèi)核首先掛載文件中指定的根文件系統(tǒng)grub.conf
。然后它執(zhí)行/sbin/init
程序,該程序始終是第一個(gè)要執(zhí)行的程序。您可以通過(guò)它的進(jìn)程 ID (PID) 來(lái)確認(rèn)這一點(diǎn),它應(yīng)該始終為 1。
然后內(nèi)核使用初始 RAM 磁盤(pán) (initrd) 建立一個(gè)臨時(shí)根文件系統(tǒng),直到真正的文件系統(tǒng)被掛載。
5. 初始化
此時(shí),您的系統(tǒng)執(zhí)行運(yùn)行級(jí)程序。有一次它會(huì)尋找一個(gè) init 文件,該文件通常/etc/inittab
用于決定 Linux 運(yùn)行級(jí)別。
現(xiàn)代 Linux 系統(tǒng)使用 systemd 來(lái)選擇運(yùn)行級(jí)別。根據(jù)TecMint,這些是可用的運(yùn)行級(jí)別:
運(yùn)行級(jí)別 0與poweroff.target匹配(并且runlevel0.target是poweroff.target的符號(hào)鏈接)。
運(yùn)行級(jí)別 1與rescue.target匹配(并且runlevel1.target是到rescue.target的符號(hào)鏈接)。
運(yùn)行級(jí)別3 由multi-user.target模擬(并且runlevel3.target是指向multi-user.target的符號(hào)鏈接)。
運(yùn)行級(jí)別 5由 graphics.target 模擬(并且runlevel5.target是到graphics.target的符號(hào)鏈接)。
運(yùn)行級(jí)別 6由reboot.target模擬(并且runlevel6.target是reboot.target的符號(hào)鏈接)。
緊急情況與緊急情況匹配。目標(biāo)。
systemd 然后將開(kāi)始執(zhí)行運(yùn)行級(jí)程序。
6. 運(yùn)行級(jí)程序
根據(jù)您安裝的 Linux 發(fā)行版,您可能會(huì)看到不同的服務(wù)正在啟動(dòng)。例如,您可能會(huì)捕獲starting sendmail …. OK
.
這些被稱(chēng)為運(yùn)行級(jí)別程序,根據(jù)您的運(yùn)行級(jí)別從不同的目錄執(zhí)行。上述 6 個(gè)運(yùn)行級(jí)別中的每一個(gè)都有自己的目錄:
- 運(yùn)行級(jí)別 0 –
/etc/rc0.d/
- 運(yùn)行級(jí)別 1 –
/etc/rc1.d/
- 運(yùn)行級(jí)別 2 –
/etc/rc2.d/
- 運(yùn)行級(jí)別 3 –
/etc/rc3.d/
- 運(yùn)行級(jí)別 4 –
/etc/rc4.d/
- 運(yùn)行級(jí)別 5 –
/etc/rc5.d/
- 運(yùn)行級(jí)別 6 –
/etc/rc6.d/
請(qǐng)注意,這些目錄的確切位置因分布而異。
如果您查看不同的運(yùn)行級(jí)別目錄,您會(huì)發(fā)現(xiàn)以“S”或“K”開(kāi)頭的程序分別表示啟動(dòng)和終止。啟動(dòng)程序在系統(tǒng)啟動(dòng)時(shí)執(zhí)行,在關(guān)機(jī)時(shí)殺死程序。
這就是您需要了解的有關(guān) Linux 引導(dǎo)過(guò)程的所有信息?,F(xiàn)在走出去,讓Tux感到自豪。