出于好奇,是什么让媒体可启动?如果有解释链接就更好了。
答案1
也许有关可启动媒体如何组织的一些细节可以帮助定义“是什么让可启动媒体可启动”。
启动过程因架构不同而不同,因此我只会坚持使用标准 PC(即 x86 架构)。
首先,为了有效地“启动”,BIOS 需要在开机自检 (POST) 后选择一个介质。为此,介质必须标记为可启动,这意味着它的第一个扇区必须有一个引导签名。这是使介质可引导的首要条件。
然后,BIOS 加载并将任务交给这个引导扇区(无论那里存储了什么……因此它很可能直接是一个合适的实模式程序,但我们还是坚持“正常”方案)。因此,要实现可引导,介质必须具有这样的功能引导扇区。
如果介质已分区,则此扇区中会安装主引导记录 (MBR)。此代码将负责检查分区表并查找具有可引导标志设置。然后,MBR 将加载此分区的第一个扇区,其中包含所谓的卷引导记录 (VBR)。请注意,在未分区的介质的情况下,VBR 位于介质的第一个扇区中,因此由 BIOS 直接调用。
VBR 包含引导程序。该程序必须初始化机器(即通过 A20 门激活扩展内存、从实模式切换到保护模式等),以设置适合“现代”代码运行的环境,将该代码加载到内存中,然后“跳转”到该代码。上述代码可以是引导加载程序中的操作系统内核,也可以是链式加载中的多重引导系统(例如 GRUB、LILO)。无论如何,最终,介质需要运行一些可执行代码才能启动。
接下来的内容(例如内核解压缩、初始 ramdisk 挂载、混合内核或微内核服务器启动时的模块加载等)从可启动媒体组织的角度来看并不严格相关。
注意:我描述的是硬盘和软盘的过程。但 CD 的情况非常相似。此外,要启动 CD,必须遵循 El-Torito 规范,这是 ISO9660 标准的扩展。最初,CD 需要包含可启动软盘映像(即 1.44M 映像),BIOS 将其视为软盘并相应地启动。较新的硬件允许直接启动,而无需此解决方法。
答案2
使可启动介质可启动的条件是
- 可启动媒体的标准,其定义如下:
- 引导加载程序适用的硬件平台。
- 引导加载软件在介质上的位置。
- 加载该软件的过程。
- 在可连接媒体的硬件中实现这些标准。
维基百科有一个文章描述启动过程。