![MBR活動分區的用途是什麼?](https://rvso.com/image/1592544/MBR%E6%B4%BB%E5%8B%95%E5%88%86%E5%8D%80%E7%9A%84%E7%94%A8%E9%80%94%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F.png)
在 UEFI 上啟動開機載入程式的概念非常簡單,就像將開機載入.efi
程式放在 EFI 系統分割區上一樣。然後該.efi
檔案載入相應的作業系統。但是,我仍然不明白為什麼 MBR 需要活動分割區來啟動作業系統。
根據我迄今為止的研究,MBR 引導程式碼駐留在磁碟的前 446 個位元組上,該程式碼將在 POST 後由 BIOS 自動執行(作為事實上的標準)。它可以直接載入作業系統,但大多數時候,程式碼非常小,其主要工作是載入位於另一個分割區上的實際引導程式。
為什麼我們需要將分區設定為活動分區才能從它啟動?理論上,MBR 引導程式碼可以從任何地方運行。
答案1
為什麼我們需要將分區設定為活動分區才能從它啟動?理論上,MBR 引導程式碼可以從任何地方運行。
是的,在實踐中,MBR 引導程式碼通常就是這樣做的。
但引導程式碼需要一些方法尋找引導程式的下一階段的儲存位置。 (整個引導程式絕不只是 446 位元組;MBR 只是它的第 1 階段。)
擁有一個解析MBR 分區表並查找“活動”標誌的引導扇區恰好是解決此問題的一個非常通用的解決方案– 它允許完全靜態的引導扇區(無需特殊工具來生成它),並且任何引導扇區都可以因此適用於任何作業系統。
例如,系統LinuxMBR 開機磁區似乎可以與 Windows MBR 開機磁區完全互換。如果您雙重開機 Linux 和 Windows,則無論您擁有哪個開機磁區,它們都執行相同的操作,因此您始終可以交換「活動」位元來交換作業系統。 (安裝開機磁區只是將 mbr.bin 複製到原始磁碟。)
但不同的引導程式肯定有不同的做法:例如,流行的Linux GRUB2將其第二階段儲存在「後MBR間隙」中,並根據其位置動態產生引導程式碼;即 MBR 開機磁區知道第二階段從哪個 LBA 開始(完全忽略分割區表和「活動」標誌),而這可能會因磁碟而異,因此開機磁區必須grub-install
由程式單獨為每個磁碟寫入。
(GRUB2 通常也不使用分區 VBR;雖然它能「chainload」那些,其典型配置實際上直接存取真實檔案系統並載入作業系統核心檔案。
答案2
看 維基百科主引導記錄 有關 MBR 格式歷史的資訊。
基本上,對活動分區的需求是早期 IBM/DOS 引導程式的設計選擇,並且從那時起一直如此。
這些早期的引導程式會掃描 MBR 嵌入式分割區表中的分割區列表,以找到唯一標有活動標誌的分割區,然後載入並執行該活動分割區的磁碟區開機記錄 (VBR)。
這只是 IBM PC 生命中的另一個早期設計決策,該決策後來永遠存在,沒有其他原因,只是一些早期開發團隊的決定(甚至可能只是一個人做出的)。