根據主引導記錄,GRUB 階段 2 在我的可引導緊湊型快閃記憶體上的什麼位置?
我試圖了解 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 ~]$
由於輸出提到
stage1
andstage2
,我們在這裡討論的是 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
不足以找出下一階段的位置:您需要阻止列表塊的內容才能找到它。