Linux引导流程的基本指南

每次您開啟 Linux 個人電腦時,它都會在最終顯示提示您輸入使用者名稱或密碼的登入畫面之前,經歷一系列階段。在典型的開機過程中,每個 Linux 發行版都會經歷 4 個明確的階段。

User Login Prompt

在本指南中,我們將突顯 Linux 作業系統從開機到登入的各個步驟。請注意,本指南僅考慮目前被廣泛使用的 現代 Linux 發行版 中的 GRUB2 引導程序和 systemd init。

開機過程包括以下 4 個步驟,我們將更詳細地討論:

  • BIOS 完整性檢查(POST
  • 引導程序(GRUB2)的載入
  • 核心初始化
  • 啟動所有進程的 systemd 父進程

1. BIOS 完整性檢查(POST)

通常,當使用者按下 開機 按鈕(如果電腦已經關機)或使用 GUI 或命令列重新啟動系統時,開機過程就會啟動。

當 Linux 系統啟動時,BIOS基本輸入輸出系統)啟動並執行 自我測試POST)。這是一個執行大量診斷檢查的完整性檢查。

發布探測組件的硬體可操作性,如硬碟固態硬碟鍵盤RAMUSB端口和任何其他硬體。如果未檢測到某些硬體設備,或者如果任何設備存在故障,例如損壞的硬碟或固態硬碟,則會在屏幕上顯示錯誤消息,提示您進行干預。

在某些情況下,尤其是在缺少RAM模塊的情況下,會發出嗡嗡聲。但是,如果預期的硬體存在且正常工作,則引導過程將繼續進行到下一階段。

2. 引導加載程式(GRUB2)

一旦發布完成且無障礙,BIOS會探查MBR主引導記錄)以獲取引導加載程式和磁盤分區信息。

MBR是位於硬碟的第一扇區上的512字節代碼,通常是/dev/sda/dev/hda,具體取決於您的硬碟架構。然而,需要注意的是,有時MBR可以位於Linux的Live USBDVD安裝中。

Linux中有3種主要類型的引導加載程式:LILOGRUBGRUB2GRUB2引導加載程式是現代Linux發行版中的最新和主要引導加載程式,我們決定不包括其他兩種引導加載程式,因為它們隨著時間的推移已經過時。

GRUB2代表第2版的GRand Unified Bootloader。一旦BIOS找到grub2引导加载程序,它会执行并加载到主内存(RAM)中。

grub2菜单允许您做一些事情。它允许您选择要使用的Linux内核版本。如果您多次升级系统,可能会看到列出的不同内核版本。此外,它通过按键组合给您编辑一些内核参数的能力。

Select Kernel Version

此外,在具有多个操作系统安装的双引导设置中,grub菜单允许您选择要引导到哪个操作系统。grub2配置文件是/boot/grub2/grub2.cfg文件。GRUB的主要目标是将Linux内核加载到主内存中。

3. 内核初始化

内核是任何Linux系统的核心。它将PC的硬件与底层进程进行接口连接。内核控制您Linux系统上的所有进程。一旦引导加载程序加载了所选的Linux内核,它必须从其压缩版本中自我提取,然后才能执行任何任务。自我提取后,所选的内核会挂载根文件系统并初始化/sbin/init程序,通常称为init

Kernel Initialization Process

初始化是始终第一个执行的程序,分配的进程ID或PID为1。它是生成各种守护进程并挂载在/etc/fstab文件中指定的所有分区的初始化进程。

然后内核挂载初始RAM磁盘(initrd),它是一个临时的根文件系统,直到真正的根文件系统被挂载。所有内核都位于/boot目录中,与初始RAM磁盘映像一起。

4.启动Systemd

最后,内核加载Systemd,它是旧SysV init的替代品。Systemd是所有Linux进程的母进程,并管理文件系统的挂载、启动和停止服务等功能。

Systemd使用/etc/systemd/system/default.target文件来确定Linux系统应该引导到的状态或目标。

  • 对于桌面工作站(带有GUI),默认目标值为5,这相当于旧的SystemV init的运行级别5。
  • 对于服务器,默认目标是multi-user.target,对应于SysV init中的运行级别3。

以下是systemd目标的详细说明:

  • poweroff.target(运行级别0):关闭系统。
  • rescue.target(运行级别1):启动救援shell会话。
  • multi-user.target(运行级别2,3,4):将系统配置为非图形(控制台)多用户系统。
  • graphical.target (runlevel 5): 設置系統使用具有網絡服務的圖形多用戶界面。
  • reboot.target (runlevel 6): 重新啟動系統。

要檢查系統上當前的目標,運行以下命令:

$ systemctl get-default
Check Run Level

您可以通過在終端上運行以下命令來切換到另一個目標:

$ init runlevel-value

例如,init 3 將系統配置為非圖形狀態。

命令init 6重新啟動您的系統,而init 0關閉系統電源。切換到這兩個目標時,請務必調用sudo 命令

引導過程在systemd加載所有守護進程並設置目標或運行級別值後結束。此時,系統會提示您輸入用戶名和密碼,然後您就可以進入Linux系統了。

Source:
https://www.tecmint.com/linux-boot-process/