我正在开发一个操作系统,并且一直在使用包含我的引导加载程序和内核的 BIN 文件。我一直在使用带有 -drive 选项的 QEMU 运行 BIN 文件,一切都按预期工作。但是,现在我想将操作系统加载到真实硬件上,并使用以下命令从 BIN 文件创建 ISO:
xorriso -as mkisofs \
-b io_os.bin \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-o bin/io_os.iso bin/io_os.bin
当我尝试从 ISO 启动时,无法加载内核。当我使用十六进制转储检查 ISO 时,我看到数千行都充满了零。我怀疑 ISO 中引导加载程序和内核的结构方式可能存在问题,但我不确定到底出了什么问题。
任何人都可以帮助我理解为什么会发生这种情况并提出解决方法吗?
您的 io_os.bin 是否已准备好接受修补程序 覆盖字节 8 到 63 的引导信息表? 如果没有,则省略选项 -no-emul-boot 。
如果不是,io_os.bin 大小为 2048 字节,未准备好 对于启动信息表,则省略选项 -boot-load-size 4 。
如果您的 .bin 实际上是磁盘映像,请尝试如果 您省略选项 -no-emul-boot 来获得软盘模拟,或者如果您 将其替换为选项 -hard-disk-boot 以获取硬盘模拟。 您可能需要阅读 El Torito 可启动 CD-ROM 规格。维基百科指出: https://web.archive.org/web/20080218195330/http://download.intel.com/support/motherboards/desktop/sb/specscdrom.pdf