原来boot sector signature验证是在BIOS中执行
匿名2023/07/31 19:52:24提问
    lab1student
222

先前以为boot sector signature(0x55aa)验证在bootloader中做。

可在做lab1练习2时,没有发现bootloader检查引导扇区的这个签名,只看到由bootloader装入8个磁盘扇区后核对kernel映像是否符合ELF格式。(好像boot时,ucore没有分MBR和活动分区,直接在一个扇区代码中加载kernel(映像)(即所谓Single Stage Bootloader),对此我没有仔细分析。)

qemu绑定的BIOS是开源的SeaBIOS,查看其boot.c源文件中有MBR_SIGNATURE(0xaa55)判断----原来由BIOS来检查这个签名。

仔细一想,BIOS加载磁盘扇区到RAM,如果由bootloader来验证boot sector签名,因为这个签名又是扇区为bootloader的保障,就会陷入先有鸡还是先有蛋的矛盾境地。

为避免发生程序控制权进入一个无效的bootloader情况(可能导致意想不到的后果),由BIOS验证boot sector signature来得安全可靠(如果签名不对,可由BIOS显示"Boot failed: not a bootable disk",然后死机)。

我的想法全面吗?

(顺便提一下,在实验楼目前可以做实验到lab2,请课程组开启剩余的实验项目。)

回答(2
    推荐问答
      Simple Empty
      暂无数据