启动时,BIOS-CMOS 中的固件需要识别哪个卷具有引导加载程序,以便有效地开始高度运行。但是,在这个阶段,我认为没有驱动程序,也没有特定文件系统的处理程序可以帮助 BIOS/UEFI 找到引导加载程序文件并将其加载到 RAM 中。那么,这样的操作是如何完成的?相关设备的制造商是否遵循某种协议来提供 CPU 和存储设备之间的粗略通信?
答案1
BIOS 不能包含文件系统代码并不一定正确,尽管旧版 BIOS 在这方面相当粗糙,并且读取单一部门进入 RAM。这个扇区称为 MBR,包含从磁盘分区读取更多扇区的代码。需要强调的是,加载 MBR 本身非常简单:它是磁盘上的第一个扇区,通过验证两个字节是否等于硬编码序列来检查。
读取磁盘本身很容易,因为 BIOS 需要提供磁盘读取例程反正。
如今,UEFI 机器拥有足够大的固件存储空间,可以轻松整合文件系统驱动程序、BIOS 设置的 GUI 等。例如,FAT16 驱动程序可以在少于 8 KB 的 AVR 代码;x86 上的 FAT32 驱动程序肯定可以在一个数量级内实现。同时,我的笔记本电脑的 BIOS 更新映像是 16 MiB,如果代码编写得当且紧凑,这个空间就足够了。