x86 系統中 Linux 核心 (vmlinuz) 的開機磁區,bzImage 格式

x86 系統中 Linux 核心 (vmlinuz) 的開機磁區,bzImage 格式

使用十六進位檢視器,我正在查看 X86 架構中的 vmlinuz Linux 核心 3.14.28,其格式為 bzImage。該檔案的引導磁區如下所示:

在此輸入影像描述

它定義了兩個分割區:分割區 1 具有大小為 18.9 GB 的 Ext2 檔案系統(處於活動狀態),以及內部沒有邏輯分割區的擴充分割區。這是否意味著 Linux 核心假定使用者已在其係統上建立了這兩個分割區?為什麼Linux核心要定義這兩個分割區呢?

答案1

這個資料塊主要是 Linux 從軟碟啟動並且不需要啟動載入程式的時代遺留下來的。它確實是一個引導磁區,但實模式 x86 程式碼在執行時只是說「使用開機載入程式。取出磁碟並按任意鍵重新啟動」。

末尾的資料不是分區表,但末尾的空間用於向核心傳達 VGA 模式、根設備和一些標誌等設定。如果您仔細研究這些值,您會發現它們作為分區表沒有任何意義。

不過,引導塊仍然有一定的意義,這就是我上面說「主要」的原因。文件的開頭經過精心設計,看起來也像 UEFI 應用程序,這使得內核本身能夠充當自己的引導程式。該檔案以魔術字串 MZ 開頭(就像 DOS .exe),並包含 PE/COFF 標頭。

相關內容