Answers:
也许有关可启动媒体的组织方式的一些细节可能有助于定义“使可启动媒体可启动的原因”。
引导过程因架构而异,因此我将坚持使用标准PC(即x86架构)。
首先,要有效地“启动”,BIOS需要在稍后的开机自检(POST)之后选择一种介质。为此,该介质必须标记为bootable,这意味着该介质必须在其第一个扇区中具有启动签名。这是使介质可启动的第一件事。
然后,BIOS加载并引导该引导扇区(无论存储在哪里……因此它很可能直接是合适的实模式程序,但让我们坚持“正常”方案)。因此,为了可引导,介质必须具有这种起作用的引导扇区。
如果介质已分区,则将在该扇区中安装主引导记录(MBR)。此代码将负责检查分区表并查找设置了可启动标志的分区。然后,MBR将加载该分区的第一个扇区,其中包含所谓的卷启动记录(VBR)。请注意,在未分区的介质的情况下,VBR位于介质的第一扇区中,因此被BIOS直接调用。
VBR包含一个引导程序。该程序必须初始化机器(即通过A20 Gate激活扩展内存,从实模式切换到保护模式等),以设置适合于运行“现代”代码的环境,将此代码加载到内存中,然后“跳转” ”。上述代码在引导加载程序的情况下可以是OS内核,在链加载的情况下可以是多引导系统(例如GRUB,LILO)。无论如何,最后,要引导介质,需要运行一些可执行代码。
从可启动媒体组织的角度来看,随后发生的事情(例如,内核解压缩,初始ramdisk安装,在混合内核的情况下加载模块或从微内核启动的服务器等)与严格无关。
注意:我所描述的是硬盘和软盘的处理过程。CD的情况非常相似。此外,要启动,CD必须遵循El-Torito规范,该规范是ISO9660标准的扩展。最初,CD需要包含可引导的软盘映像(即,实际上为1.44M映像),BIOS将其视为软盘并进行了相应的引导。没有这种解决方法,最新的硬件允许直接启动。