題 不同窗口MBR的前446個字節之間有區別嗎?


在閱讀了很多關於從linux安裝windows的安裝算法之後,除了windows之外還要安裝linux,....我想知道一點。

從我讀到的例如從Linux安裝Windows的方法來看,大多數方法都是從Windows MBR的前446個字節中創建一個副本(或它們自己的)MBR並使用它 然後在要安裝Windows的計算機上設置MBR的前446個字節(或者在出現問題時恢復那些446個字節)。

現在引起我興趣的是,有一個名為ms-sys的linux程序(在sourceforge上是開源的),可以用於win xp,win 7,....創建這樣合適的MBR備份。

在網上讀到的東西後,前446個字節是MSDOS的剩餘部分(可以這麼說)我想知道以下內容:

不同Windows版本(XP,Windows 7,Windows 8,...)的MBR(僅限前446個字節)是否有任何差異? 或者這些446字節的Windows XP可以用於Windows 7(反之亦然)。


6
2017-12-28 07:46


起源




答案:


我認為他們可能不同。一些檢查確實表明,是的,它們是不同的。

我不希望他們的行為有太大差異。這些446字節的基本工作是識別磁盤的另一部分,該部分具有要執行的附加代碼。該附加代碼通常存儲在分區內。有些人喜歡使用“引導加載程序”,比如 插科打諢 或者可以使用XFDisk或RPM(Ranish Partition Manager)安裝的那些,其中446字節略有不同,例如提供交互式界面,以便用戶可以選擇將控制傳遞給不同的分區。基本上,這可以啟用“啟動菜單”,以便人們可以輕鬆選擇從不同的操作系統啟動,啟用“多啟動”選項(這樣一個人可以輕鬆啟動不同的操作系統)。

這項基本工作可能在很長一段時間內沒有太大變化。 (但是,關於它如何執行功能的確切細節已經改變。)如果有更新的操作系統有任何有用的更新,那麼我會想像這些更新可以做一些事情,比如支持更大的磁盤大小。所有最新Windows版本(包括XP)的啟動代碼都可能支持最高2TB(MBR格式的限制)。

(我應該注意,這個答案旨在解決依賴於“MBR”的基本分區信息的系統。使用GPT的系統也可能有一個MBR,它需要滿足GPT標準規定的特定要求。)

更新

我必須得出結論,不同版本的Windows確實在前446個字節中存在一些差異。到目前為止我發現的最引人注目的文檔是 TechNet:Windows Vista詳細信息:Bootsect命令行選項 這表明用戶可以指定/ nt52或/ nt60開關來安裝不同版本的啟動代碼。

也許還有更多。看起來像 MSDN:高級格式(4K)磁盤兼容性更新 “是針對Windows 7 SP1和Windows Server 2008 R2 SP1發布的。此更新包含許多新信息,其中一些僅適用於Windows 8和Windows Server 2012。”我還沒有確認這些更改是否也改變了前446個字節,但是由於進行了更改以允許引導過程具有不同的硬件兼容性,因此可能性似乎很強。

如果你想了解更多有關446字節內容的詳細信息,我確實找到了一些關於某些舊版本的文檔。 Win2K引導扇區細節 是一個較舊的文件,比新的更新 MS KB 140418:Win NT 3.x的引導扇區


3
2017-12-28 07:53



根據我的理解,windows在前446個字節之後有分區部分。所以分區信息不應該是一個問題(或有所作為)。問題是,如果每個Windows版本的446個字節不同(假設C是每個系統驅動器)。 - Thomas
@Thomas:正如我在早期版本的答案中提到的那樣,“我必須做進一步的檢查才能確定。”我現在已經做了足夠的檢查以確認存在一些已知的差異,如我現在在該答案中更新的文本中所示。 - TOOGAM


不同Windows版本安裝的mbr代碼存在(次要)差異。它們都檢查分區表以查找哪個是可引導分區,然後將控制權轉移到該分區的第一個扇區。所以不同版本在很大程度上是可以互換的例如,參見頁面 http://thestarman.narod.ru/asm/mbr/VistaMBR.htm#INTRO 。 Windows在這種mbr代碼中沒有什麼特別之處,它也可以啟動任何其他操作系統。許多Linux引導管理器(例如GRUB)安裝的MBR代碼完全不同,甚至可能根本不查看分區表,並且在沒有存儲在Linux分區中的GRUB引導文件的系統中將無用,或其自己的特殊啟動分區。

較新的GPT / UEFI啟動過程是一個完全不同的世界。


1
2017-12-28 08:57



所以446字節在不同的Windows版本之間是不同的,因此使用win xp one for win 7是不明智的,反之亦然? - Thomas


問題是“這兩種MBR是否不同?”是  相當於“我可以在不同的Windows版本上使用一個Windows版本的MBR嗎?”這個問題。

不同Windows版本的MBR之間存在一些差異。我所知道的最廣泛的在線參考是 Starman的網頁

關於Win2000 / WinXP的MBR的頁面 它陳述:

這個512字節扇區的前300字節(000h到12Bh)是可執行代碼......

而在 關於Windows 7/8的MBR的頁面 我們可以讀到:

這個512字節扇區的前355字節(000h到162h)是可執行代碼

然後:

但是這段代碼必須先將自己複製到Memory的另一個區域。這是必要的,因為代碼還必須將活動分區的引導扇區加載到它剛剛加載後佔用的內存區域!與Windows 2000 / XP MBR不同,此代碼將其所有512個字節複製到新位置,從0000:0600開始。只有前三條說明與Windows 2000 / XP MBR相同,所以如果你要比較兩者,請保持眼睛清晰。

這表明兩者之間存在差異。

然而TheStarman表示(我自己從未嘗試過這個,這就是為什麼我只是簡單地報告這個),對於上面的兩個MBR:

注意:與本系列中提供的所有其他代碼一樣,如果滿足列出的條件,此MBR代碼仍可用於在x86 PC上啟動任何操作系統 這裡

然後:

即使我們正在檢查由Microsoft操作系統創建的代碼,只要該操作系統是以下操作系統,該MBR也可用於啟動基於x86-CPU的(PC)計算機上任何操作系統的引導記錄的引導過程:1)在Primary Master硬盤驅動器上,2)設置為唯一的Active分區,3)它在該分區的第一個扇區中有一個引導加載程序。

最後,我應該提到相同的Web頁面報告所有MBR的完整版本(當然除了分區表),這在任何情況下都可以幫助恢復丟失/損壞的MBR。標準分區表可以手工重建,也可以使用TheStarman網頁提供的儀器重建。


1
2017-12-28 09:38



你得到了我+1,因為它是一個好點,兩者不同,兩者不能相互交替使用。還有一些有趣的額外信息! - Thomas
“我可以在不同的Windows版本上使用一個Windows版本的MBR嗎?” - 在該問題的上下文中,需要重申的是,除了mbr代碼之外,這個512字節的扇區也保存了分區表的一部分(其餘部分分佈在分區之間的空間中,作為另外512字節相似扇區的鍊錶結構),所以交換整個部門(許多工具會做)可能會產生有趣的副作用。 - rackandboneman
@rackandboneman這就是我說的原因: 當然,除了分區表。我懷疑我可以更明確。 - MariusMatutiae
除此之外,分區表似乎在446字節之後開始並佔用引導扇區的其餘部分。 (至少從我讀過446的內容是除分區表部分之外的所有內容,446字節是我感到困惑的) - Thomas