如果我希望我的引导加载程序从usb棒启动,我必须包含一个BPB。 usb棒在软盘模拟模式下运行。如here所示,有许多不同的BPB版本。 bios如何知道BPB的类型? GRUB 0.97似乎正在使用另一种BPB格式?
我可以从偏移量0xb填充我的引导加载程序,然后它也可以工作。 是否有标准/通用尺寸可供使用?我没有在USB上使用任何文件系统,只是原始。
我想我需要BPB,因为bios尝试更新一些值,这会覆盖一些代码。由于每个BPB看起来都有点不同,bios如何知道在哪里更新什么值?
答案 0 :(得分:2)
如果您有BPB,并非所有BIOS实施都在关注。具有MBR引导扇区开头的BPB的一般格式如下:
bits 16
org 0 ; BIOS will load the MBR to this location.
bootStart:
jmp _start
nop
osType db 'MSDOS6.0'
bpb
bps dw 512
spc db 8
rs dw 1
fats db 2
re dw 512
ss dw 0
media db 0xf8
spfat dw 0xc900
spt dw 0x3f00
heads dw 0x1000
hidden dw 0x3f00, 0
ls dw 0x5142,0x0600
pdn db 0x80
cheads db 0
sig db 0x29
serialno dw 0xce13, 0x4630
label db 'NO NAME'
fattype db "FAT32"
_start:
; set up the registers
mov ax, 0x07c0
mov ds, ax
mov fs, ax
mov gs, ax
mov ax, 0x0700
mov es, ax
字段总是在同一个地方。系统如果关心BPB,只需解析就可以验证它。