Windows环境下如何将Bootloader与Kernel合并为单个.img文件?
在Windows下通过Makefile合并Bootloader和Kernel为单个.img镜像
要在Windows环境下将boot.bin和kernel.bin合并为可被QEMU识别的软盘镜像,你可以利用Windows自带的copy /b命令完成二进制文件的拼接,具体修改Makefile如下:
setup: @if not exist build mkdir build nasm src\boot\boot.asm -f bin -o build\boot.bin nasm src\kernel\main.asm -f bin -o build\kernel.bin copy /b build\boot.bin + build\kernel.bin build\main_floppy.img run: qemu-system-i386 -fda build\main_floppy.img
关键细节说明:
copy /b命令:/b参数指定以二进制模式合并文件,避免文本模式下自动转换换行符等操作破坏二进制数据的完整性。合并顺序必须是boot.bin在前,因为软盘镜像的第一个512字节必须是有效的引导扇区(需包含0xAA55结束标志)。- 创建build目录:添加
@if not exist build mkdir build确保编译输出目录存在,避免因目录缺失导致编译失败(@符号用于隐藏命令本身的输出)。 - Makefile缩进:注意每个命令行前必须使用Tab键缩进,而不是空格,这是Makefile的语法要求。
可选:创建标准大小的软盘镜像
如果需要严格符合1.44MB软盘的规格(QEMU兼容性更好),可以先创建空镜像再写入内容:
setup: @if not exist build mkdir build nasm src\boot\boot.asm -f bin -o build\boot.bin nasm src\kernel\main.asm -f bin -o build\kernel.bin # 创建1.44MB空软盘镜像(1474560字节) fsutil file createnew build\main_floppy.img 1474560 # 将boot.bin写入镜像开头 type build\boot.bin > build\main_floppy.img # 将kernel.bin追加到镜像末尾 type build\kernel.bin >> build\main_floppy.img
内容的提问来源于stack exchange,提问作者Shahzaib Hassan
相关产品推荐
相关产品推荐

