rust-os.01 bootloader
Contents
在x86上,有两个固件标准:“基本输入/输出系统”(BIOS)和更新的“统一可扩展固件接口”(UEFI)。 BIOS标准很旧且过时,但自1980年代以来,在任何x86机器上都得到了简单且良好的支持。
打开计算机时,它会从主板上的某些特殊闪存中加载BIOS。 BIOS运行硬件的自检和初始化例程,然后寻找可引导磁盘。 如果找到一个,则将控件转移到其引导加载程序,该引导加载程序是存储在磁盘开头的可执行代码的512字节部分。 大多数引导加载程序都大于512字节,因此引导加载程序通常分为一个小的第一阶段(适合512字节)和一个第二阶段,第二阶段随后由第一阶段加载。
引导加载程序bootloader三个作用:
1.必须确定内核映像在磁盘上的位置,并将其加载到内存中。
2.它还需要先将CPU从16位实模式切换到32位保护模式,然后再切换到64位长模式,在该模式下可以使用64位寄存器和完整的主存储器。
3.它的第三项工作是从BIOS查询某些信息(例如内存映射)并将其传递给OS内核。
为了避免每个操作系统都实现自己的引导加载程序,该引导加载程序仅与单个OS兼容,自由软件基金会于1995年创建了一个称为Multiboot的开放式引导加载程序标准。该标准定义了引导加载程序和操作系统之间的接口,因此任何Multiboot 兼容的引导程序可以加载任何兼容Multiboot的操作系统。 参考实现是GNU GRUB,它是Linux系统上最流行的引导程序。
Author sorvik
LastMod 2020-02-20