在为引导加载程序编写一些基本代码之后,我制作了一个.img
图像来测试它。在Bochs上,它按预期运行;但是,当我将图像写入USB并尝试在真实设备上进行测试时,我突然收到No bootable device found
消息。在互联网上进行了一些网络爬行之后,我发现我可能需要一个BIOS参数块(BPB)。我复制并粘贴了一个我找到的BPB,然后突然一切正常。以下是代码,如果需要的话:
bpbBytesPerSector: DW 512
bpbSectorsPerCluster: DB 1
bpbReservedSectors: DW 1
bpbNumberOfFATs: DB 2
bpbRootEntries: DW 224
bpbTotalSectors: DW 2880
bpbMedia: DB 0xF0
bpbSectorsPerFAT: DW 9
bpbSectorsPerTrack: DW 18
bpbHeadsPerCylinder: DW 2
bpbHiddenSectors: DD 0
bpbTotalSectorsBig: DD 0
bsDriveNumber: DB 0
bsUnused: DB 0
bsExtBootSignature: DB 0x29
bsSerialNumber: DD 0xa0a1a2a3
bsVolumeLabel: DB "AOS Floppy "
bsFileSystem: DB "FAT12 "
根据我的理解,BPB描述了存储设备的物理属性。我也理解BPB的各个组成部分。但是,我没有看到单个BPB如何描述可以从中加载引导加载程序的许多文件系统。
也就是说,根据最终用户决定用于安装和运行操作系统的设备,这些值中的某些值是否会发生变化? BPB是否描述了引导加载程序的卷?如果是这样,这些属性也不会因用户的设备而异吗?