You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自制简易OS遇QEMU无法识别可引导设备问题求助

QEMU提示未找到可引导设备,Bootloader构建正常但无法引导自定义OS

问题详情

  • 运行环境:Intel架构macOS,使用QEMU模拟器运行自定义操作系统镜像
  • 构建状态:make命令执行无错误,完整构建输出如下:
$ make
--> Compiled:  boot.asm
i686-elf-ld: warning: /Users/fabboy/CLionProjects/os/build/boot.bin has a LOAD segment with RWX permissions
--> Created:  boot.bin
--> Compiled:  Entry.c
--> Created:  kernel.bin
2880+0 records in
2880+0 records out
1474560 bytes transferred in 0.014243 secs (103528751 bytes/sec)
17+1 records in
17+1 records out
8708 bytes transferred in 0.000143 secs (60895105 bytes/sec)
10+1 records in
10+1 records out
5448 bytes transferred in 0.000111 secs (49081081 bytes/sec)
  • 构建后目录结构:
$ tree
├── build
│   ├── boot.bin
│   ├── bootloader
│   │   └── boot.obj
│   ├── kernel
│   │   └── c
│   │       └── Entry.obj
│   ├── kernel.bin
│   ├── kernel.map
│   └── os_image.img
  • 核心问题:执行make run启动QEMU时,模拟器提示未找到可引导设备,无法加载操作系统。

排查方向与解决建议

1. 检查Bootloader引导签名

  • 确认boot.asm在第一个扇区(512字节)的末尾添加了0xAA55引导签名,这是BIOS识别可引导介质的必要标记。
  • 验证boot.bin的文件大小:执行ls -l build/boot.bin,确保大小为512字节。如果超过,说明代码或数据溢出,导致引导签名不在正确位置。

2. 镜像生成逻辑校验

  • 检查Makefile中生成os_image.img的步骤,确认boot.bin被正确写入镜像的第一个扇区。例如,是否使用了类似dd if=build/boot.bin of=build/os_image.img bs=512 count=1 conv=notrunc的命令,保证引导扇区覆盖到镜像起始位置。
  • 确认os_image.img是标准1.44MB软盘镜像(对应2880个512字节扇区),同时检查make run中的QEMU命令是否用-fda build/os_image.img参数指定软盘镜像。

3. Linker脚本正确性检查

  • 检查bootloader的linker.ld,确保代码被链接到实模式下的正确内存地址(通常为0x7c00)。如果链接地址错误,BIOS加载后无法正常执行代码。
  • 修复ld的RWX权限警告:虽然该警告不一定直接导致引导失败,但可通过调整linker脚本的段权限解决(代码段设为RX,数据段设为RW),避免潜在问题。

4. QEMU启动参数验证

  • 确认make run中的QEMU命令是否强制使用BIOS启动(自定义OS基于BIOS的情况下)。在Intel Mac上,可尝试添加-bios /usr/local/share/qemu/bios-256k.bin参数,避免默认使用UEFI模式导致无法识别BIOS引导扇区。

5. Bootloader代码调试

  • 在boot.asm中添加BIOS中断调试输出(如用int 0x10打印字符),直观确认bootloader是否被BIOS加载执行。
  • 使用QEMU调试功能:执行qemu-system-i386 -s -S -fda build/os_image.img,配合GDB连接调试,查看bootloader的执行流程是否符合预期。

内容的提问来源于stack exchange,提问作者Fab boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:15:24