Ser*_*gey 12 bios boot mbr boot-partition
在尝试在 askubuntu 上回答这个问题时:How do I Uninstall GRUB我阅读了关于 MBR的维基百科文章以及关于 Superuser上一个相关问题的完美答案,但是,我仍然不清楚一件事:
究竟是什么让 BIOS 决定驱动器是否可启动?如果系统中安装了多个驱动器,引导顺序如何从驱动器#1 跳过并继续尝试从驱动器#2 引导?
我的理解是 BIOS 通常检查 MBR 的唯一内容是它在 512 字节扇区末尾的签名,然后它只是将控制权转移到位于引导扇区前 446 字节的初始引导加载程序。
这是否意味着即使磁盘不可引导,引导扇区的前 446 个字节也必须包含一些有意义的引导加载程序代码?
在 BIOS 将控制权转移到驱动器 #1 上的引导加载程序后,该驱动器碰巧没有“可引导”分区——第二个驱动器上的引导加载程序究竟是如何被调用的?
抱歉,如果这太技术性了 :) 简短的问题是:“BIOS 究竟如何跳过驱动器并继续尝试从下一个驱动器启动?”
Bre*_*ugh 17
究竟是什么让 BIOS 决定驱动器是否可启动?
BIOS 根据MBR 代码区之后的 16 字节分区记录决定驱动器是否可引导(保存在从第 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。
归档时间: |
|
查看次数: |
8894 次 |
最近记录: |