不同窗口MBR的前446个字节之间有区别吗?


5

在阅读了很多关于从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(反之亦然)。

Answers:


3

我认为他们可能不同。一些检查确实表明,是的,它们是不同的。

我不希望他们的行为有太大差异。这些446字节的基本工作是识别磁盘的另一部分,该部分具有要执行的附加代码。该附加代码通常存储在分区内。有些人喜欢使用“引导装载程序”,如GAG或可安装XFDisk或RPM(Ranish分区管理器),其中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的引导扇区


根据我的理解,windows在前446个字节之后有分区部分。所以分区信息不应该是一个问题(或有所作为)。问题是,如果每个Windows版本的446个字节不同(假设C是每个系统驱动器)。
托马斯

@Thomas:正如我在早期版本的答案中提到的那样,“我必须做进一步的检查才能确定。” 我现在已经做了足够的检查以确认存在一些已知的差异,如我现在在该答案中更新的文本中所示。
TOOGAM 2015年

1

不同Windows版本安装的mbr代码存在(次要)差异。它们都检查分区表以查找哪个是可引导分区,然后将控制权转移到该分区的第一个扇区。所以不同版本在很大程度上是可以互换的 例如,请参阅http://thestarman.narod.ru/asm/mbr/VistaMBR.htm#INTRO上的页面。Windows在这种mbr代码中没有什么特别之处,它也可以启动任何其他操作系统。许多Linux引导管理器(例如GRUB)安装的MBR代码完全不同,甚至可能根本不查看分区表,并且在没有存储在Linux分区中的GRUB引导文件的系统中将无用,或者它自己的特殊启动分区。

较新的GPT / UEFI启动过程是一个完全不同的世界。


所以446字节在不同的Windows版本之间是不同的,因此使用win xp one for win 7是不明智的,反之亦然?
托马斯

1

问题是“这两种MBR是否不同?” 是不是等同于这个问题:“我可以使用一个Windows版本的一个MBR在不同的Windows版本?”。

不同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,因为它是一个好点,两者不同,两者不能相互交替使用。还有一些有趣的额外信息!
托马斯

“我可以在不同的Windows版本上使用一个Windows版本的MBR吗?” - 在该问题的上下文中,需要重申的是,除了mbr代码之外,这个512字节扇区还保留了分区表的一部分(其余部分分布在分区之间的空间中,作为另外512字节相似扇区的链表结构),所以交换整个部门(许多工具会做)可能会产生有趣的副作用。
rackandboneman 2015年

@rackandboneman这就是为什么我说:除了分区表,当然。我怀疑我可以更明确。
MariusMatutiae

除此之外,分区表似乎在446字节之后开始并占用引导扇区的其余部分。(至少从我读过446的内容是除分区表部分以外的所有内容和446字节是我感到困惑的事情)
托马斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.