Boot

Linux 如何處理單獨的 /boot 分區?

  • March 2, 2018

我有興趣了解 Linux 如何處理單獨的引導分區。我對實際執行此操作感興趣,但我想知道它是如何在幕後工作的。

考慮一個硬碟驅動器sda,它有兩個分區sda1sda2. 假設這sda2是包含 Linux 作業系統的root分區。/

我的理解是引導載入程序GRUB2安裝到/boot. 但是,當目錄/boot位於單獨的分區上時,在實際掛載sda2之前怎麼會發生這種情況?/

在這種情況下,BIOS、主引導記錄和 GRUB(或文件)之間的互動如何/boot成功發生?是不是這個早期的數據/boot實際上並沒有掛載到文件系統?/

注意:這個問題涉及掛載根分區,但不討論單獨的引導分區。

這是您理解的問題:

我的理解是引導載入程序 GRUB2 安裝到 /boot。

GRUB 未在引導時“掛載”。GRUB安裝/boot,並從主引導記錄中的程式碼載入。以下是現代引導過程的簡化概述,假設具有 MBR/BIOS(不是 GPT/UEFI)的 GNU/Linux 發行版:

  1. BIOS 載入。
  2. BIOS 載入主引導記錄中的一小段程式碼。
  3. GRUB 不適合 440 字節,即主引導記錄的大小。因此,實際上傳入的程式碼只是解析分區表,找到/boot分區(我相信這是在將 GRUB 安裝到主引導記錄時確定的),並解析文件系統資訊。然後它載入第 2 階段的 GRUB。(這就是簡化的地方。)
  4. 第 2 階段 GRUB 載入它需要的所有內容,包括 GRUB 配置,然後顯示一個菜單(或不顯示,取決於使用者配置)。
  5. 選擇引導順序。這可能是由於超時、使用者選擇菜單項或啟動命令列表。
  6. 引導序列開始執行。這可以做很多事情——例如,載入核心、鍊式載入到另一個引導載入程序——但讓我們假設引導順序是標準的 GNU/Linux。
  7. GRUB 載入 Linux 核心。
  8. GRUB 載入初始 ramdisk
  9. 初始 ramdisk 掛載(可能//new_root加密方式解鎖),啟動 udev,啟動 resume-from-swap 等。
  10. 初始 ramdisk 使用pivot_root實用程序設置/new_root為 real /
  11. init開始。分區被掛載,守護程序啟動,系統啟動。

注意核心是如何僅在第 7 步載入的。因此,在第 7步之前沒有掛載的概念。這就是為什麼/boot必須在第 9 步中再次掛載的原因,即使 GRUB 已經使用了它。

查看 GRUB上的 Wikipedia 頁面的GRUB 2 部分也可能有用。

引用自:https://unix.stackexchange.com/questions/111237