我正在创建一个操作系统,并且能够创建一个简单的多任务内核(虽然代码已经丢失)和一个没有BIOS中断的IDE / ATA PIO驱动程序。我希望创建一个引导加载程序,将系统置于保护模式,禁用分页,创建平面内存模型,然后长时间跳转到FAT32格式化的硬盘根目录中名为OS.SYS的文件的0x0偏移量驾驶。我知道除了一件事之外怎么做:改变磁盘的引导扇区。我知道如何格式化硬盘驱动器作为FAT32,以获得正确的BPB等文件的开头,但我不知道如何复制代码,以便BPB没有损坏。即使在DD可用的Linux中,我也无法克服这个障碍 - 我总是使用自定义文件系统。我现在看到了这方面的缺点,例如无法使用像文件管理器这样的简单工具来移动文件进行测试。
基本上,总结一下,我问的是如何更改已经运行的FAT32文件系统上的引导扇区代码,而不会弄乱BPB。
注意:我使用的是Windows 10和NASM,并打算将虚拟硬盘与QEMU或Virtualbox一起使用。