Grub2

根據主引導記錄,GRUB 階段 2 在我的可引導緊湊型快閃記憶體上的什麼位置?

  • September 21, 2021

我試圖了解 GRUB 階段 2 在我的可啟動緊湊型快閃記憶體上的位置。下面是針對緊湊型快閃記憶體的 MBR(前 512 個字節)的映像執行的文件命令的輸出。

它表示第 2 階段地址是 0x2000,或十進制 8192,這將把它放在第 16 個扇區(每個扇區 8192 字節/512 字節)。

我認為引導載入程序的第二階段應該位於 VBR 或 PBR 的可引導分區中。如果是這種情況,那麼我希望它的地址是 0x100000,這是 2048 扇區的可引導分區的開始。(2048 個扇區 x 512 字節 = 1048576 = 0x100000)

那麼在下面的輸出中,0x2000 的階段 2 地址和 0x200 的階段 2 段是什麼意思?

[centos@centos6 ~]$ file SQFlash_MBR
SQFlash_MBR: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3,
stage2 address 0x2000, stage2 segment 0x200;
partition 1: ID=0x83, active, starthead 1, startsector 2048, 1880064 sectors, code offset 0x48
[centos@centos6 ~]$

由於輸出提到stage1and stage2,我們在這裡討論的是 GRUB Legacy(即 GRUB 版本 0.97 或更早版本)。現代版本將有一個“核心圖像”和一組模組。

stage2 address並且stage2 segment不要引用磁碟扇區;它們指的是第2 階段將被載入到的*記憶體地址。*該地址採用 x86 處理器在 8086 兼容模式(“實模式”)中使用的段:偏移量格式。

由於這是 GRUB Legacy,當 GRUB 安裝到您的緊湊型快閃記憶體時,GRUB 將讀取的下一個磁碟塊的編號作為單個 32 位值嵌入到 MBR 程式碼中。MBR 是塊#0,GRUB 將讀取的下一個塊通常是塊#1:它將包含定義下一階段要讀取的磁碟塊序列的 GRUB 塊列表。下一階段可以是“stage1.5”(單個只讀文件系統驅動程序)或完整的“stage2”。

如果使用 stage1.5,它將依次嵌入(磁碟、分區)標識符 + 路徑名,用於將 stage2 的位置標識為特定分區上文件系統中的正常文件。磁碟部分可能會被省略,在這種情況下,假設磁碟與包含 stage1.5 組件的磁碟相同。/grub/stage2如果使用單獨的/boot分區,或者/boot/grub/stage2只是/boot根文件系統上的正常目錄,則路徑名通常是。

顯示的資訊file不足以找出下一階段的位置:您需要阻止列表塊的內容才能找到它。

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