本帖最后由 yn_88 于 2022-9-8 17:03 编辑
bios启动有真正的引导代码,如vistaldr.bin是真正的代码,光盘启动时要运行。如果指定的是软盘映像,也是要执行其中的引导扇区中的代码的。
光盘efi启动没有真正的引导代码,启动时efi固件根据启动目录中的eif入口,建立fat12虚拟盘,执行其中的bootx64.efi
(efisys.bin虽然有一个启动扇区,但那是dos的,没有用它)
如果,这个bootx64.efi用bootmgfw.efi代替(名字改为bootx64.efi),光盘根目录不需要bootmgr.efi,也即光盘efi启动,实际是做2件事情: 1、根据efi入口数据,建立虚拟fat12,
2、执行其中的bootx64.efi 就这么简单,这是efi优秀支撑环境带来的好处。
下面是一个双启动光盘(2个启动都是映像),启动目录中的数据。
上面的启动目录中有4个入口,每个入口32字节,1是验证入口,3是section头入口,可能指明下一个入口是efi入口,重点关注2入口和4入口,是真正的入口。
2入口(bios启动入口): 88 02,88指明是可引导 02 代表是1.44m映像,07c0表示将读到内存地址,0001表示读一个扇区(启动扇区),0156表示映像所在的扇区号(光盘1扇区2048字节)。如果不是模拟式的启动,如win10安装光盘,88 02就变为88 00,代表是启动文件(代码)
4入口(efi启动入口): 88 00,00可能代表不是模拟式引导(也即不执行引导),0b40H=2880个虚拟扇区(512字节),也就是1.44m,用来模拟fat12。
|