
是否有(Win NT)規則規定 MBR 主分區必須位於擴充分區之前?
活動分割區位於 rdisk(0) 上
我有一個帶有 4/5 個分割區的輔助磁碟機(取決於您如何計算),parted 顯示:
1 主要 2 擴展,包含 (3) 個邏輯 4 主要 5 主要
要引導邏輯分割區,使用 boot.ini,
multi(0)disk(0)rdisk(1)partition(4)\WINDOWS="14" /noexecute=optin /fastdetect
parted 列出了所有 5 個分區:已知 NTLDR 不會統計容器分區,並在枚舉主分區後枚舉邏輯分區,因此邏輯分區為(4)。
到目前為止,我無法從接下來的兩個主分區載入HAL.DLL
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="12" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(3)\WINDOWS="13" /noexecute=optin /fastdetect
這是 NTLDR 的已知問題嗎——主分區必須位於擴展分區之前? (或者只是我在其他地方出錯了。)
答案1
您可以考慮幾個問題/因素。
1. 1024缸問題。
在開機過程中,Windows NT 4.0 使用 INT13 BIOS 功能來存取磁碟機。 INT13 函數的最大「範圍」為 256 個磁頭、1024 個柱面和 63 個磁區。這大約為 7.8 GB(每個扇區 512 位元組)。
因此整個系統分區必須低於 1024 個氣缸。
系統分區定義為包含系統初始啟動所需檔案的分區。對於 Windows NT,這些檔案是 Ntdetect.com、NTLDR、Boot.ini,有時還有 Ntbootdd.sys
2. Boot.ini 和分區號。
我不是 100% 確定 pri - 擴展 - pri 分區順序是一個問題,我確實知道這在那些日子裡很不尋常,如果這是一個問題,也不會感到驚訝。所以我肯定會避免它。 IOW,將主分割區放在擴展分割區之前以避免問題。
看來您已經知道 boot.ini 如何計算分區,但無論如何對於那些閱讀過但沒有閱讀過的人來說:
- 分區號碼從 1(而不是 0)開始分配。
- 首先為主分割區分配編號。
- 接下來為邏輯分割區分配編號。
- 擴充分割區根本沒有分配編號。
對於主分區,我們需要考慮分區表中分區的實際順序。分區佈局的順序可以與主分區表中的分區順序不同。所以考慮3個主分區
分區 a - 分區 b - 分區 c
而分區表看起來像
Partition b
Partition c
Partition a
如果Partition a
是“系統分割區”,則 boot.ini 條目可能需要指向分割區(3)而不是您期望的分割區(1),這是根據磁碟機上分割區的位置而期望的。
當時存在一些工具,可以按照分區表條目在驅動器上出現的順序對其進行排序。