MBR:BIOS如何确定驱动器是否可引导?


12

尝试在askubuntu上回答此问题时:如何卸载GRUB我阅读了MBR上Wikipedia文章,并且在Superuser 还找到了一个相关问题完美答案,但是,我仍然不清楚一件事:

是什么让BIOS决定驱动器是否可引导?如果系统中安装了多个驱动器,引导顺序如何从驱动器#1跳过并继续尝试从驱动器#2引导?

我的理解是,BIOS通常检查MBR的唯一内容是它在512字节扇区末尾的签名,然后它将控制权转移到位于引导扇区前446个字节中的初始引导加载程序。

是否意味着即使磁盘不可引导,引导扇区的前446个字节也必须包含一些有意义的引导加载程序代码?

BIOS将控制权转移到驱动器#1上的引导加载程序后,碰巧没有“可引导”分区-在第二个驱动器上调用引导加载程序的方式是什么?

如果这太技术性,很抱歉:)简短的问题是:“ BIOS如何完全跳过驱动器并继续尝试从下一个驱动器引导?”

Answers:


16

是什么让BIOS决定驱动器是否可引导?

BIOS根据16字节的分区记录( MBR代码区之后)保存该驱动器是否可引导(该记录保存在从第446 字节开始的表中)。每个分区记录中的第一个字节代表驱动器的可引导状态(并设置为0x80是否可引导0x00)。某些BIOS可能会检查MBR的其他部分(例如,分区类型,校验和),但基本要求是可引导标志。

如果系统中安装了多个驱动器,引导顺序如何从驱动器#1跳过并继续尝试从驱动器#2引导?

这取决于实现,这就是为什么您需要正确选择启动顺序的原因。在大多数情况下,BIOS将按照您设置的顺序浏览每个存储介质,并确定它是否可以从该设备引导(通过MBR数据)。如果可以,它会-否则,它将继续遍历其他设备(同样,按照您选择的顺序)。

BIOS将控制权转移到驱动器#1上的引导加载程序后,碰巧没有“可引导”分区-在第二个驱动器上调用引导加载程序的方式是什么?

一旦找到有效的启动设备(即,设置了可启动标志,并且通过了其他附加检查),BIOS将MBR扇区复制到RAM中。然后,BIOS将指令指针重新定位到该位置的开头(使用JUMP指令),即MBR代码段所在的位置,然后计算机启动。

如果BIOS支持BIOS引导规范,则MBR代码可以通过特定指令将控制权返回给BIOS,以信号通知引导失败并提示其尝试下一个设备。较旧的BIOS只是打印一条错误消息。一个很好的判断,就是您的BIOS是否支持它是否可以从USB引导。

我的理解是,BIOS通常检查MBR的唯一内容是它在512字节扇区末尾的签名,然后它将控制权转移到位于引导扇区前446个字节中的初始引导加载程序。

这是正确的,尽管应该注意,大多数现代BIOS也会寻找GUID分区表以及较旧的常规MBR样式表。

是否意味着即使磁盘不可引导,引导扇区的前446个字节也必须包含一些有意义的引导加载程序代码?

,但是驱动器必须具有有效的MBR或GUID分区表-否则,计算机将无法检测到该表。尽管MBR的代码部分确实可以为空,但驱动器的第一个扇区必须具有格式正确的MBR / GPT。


感谢您提供非常详细的答案。因此,有效的可启动设备的标准是分区表中是否存在可启动分区,并进行了“其他检查”?我有点困惑,因为在AskUbuntu上的原始问题中,作者表明驱动器上的所有分区都不可引导,但他仍然看到由GRUB损坏引起的错误-根本不应该由BIOS调用因为驱动器不符合“可启动”条件,所以BIOS应该只是跳过了该驱动器而转到下一个驱动器
Sergey 2012年

@Sergey我看着这个问题,不确定。MBR可能已损坏,或者可启动标志设置为无效值(fdisk尽管原始版本 确实标记了无效的MBR标头,但不确定如何处理这些情况)。我建议OP发布原始MBR标头,但他/她还可能希望“切换”打开/关闭可启动标志(手动设置/重置标志)。
2012年

请记住,BIOS代码不是通用的。它非常特定于每个主板,因此它知道可能将哪种驱动器连接到哪些端口。
LatinSuD 2014年

这个答案并不完全正确。FWIU,检查活动分区,“默认” MBR引导代码(而不是BIOS)执行的操作是什么。NeoSmart给出了一个更合理的描述:“在与IBM兼容的PC(基本上是所有东西)上,512字节MBR的最后两个字节称为启动签名,BIOS用来确定所选的启动驱动器是否实际上可启动或可启动。不。” 最后一部分是错误的。旧版BIOS可以从GPT启动(具有适当的BIOS启动代码),因为它实际上是“自由式”启动。
Daniel B

@DanielB这两个问题都直接在答案中得到了解决:“ BIOS通常检查MBR是它在512字节扇区末尾的签名,然后将控制权转移到位于前446字节的初始引导加载程序中引导扇区”“大多数现代BIOS还将寻找GUID分区表以及较旧的常规MBR样式表”
突破
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.