首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从qemu中的AHCI hhd启动

无法从qemu中的AHCI hhd启动
EN

Stack Overflow用户
提问于 2019-10-17 22:25:58
回答 1查看 800关注 0票数 1

我最近开始为教育目的开发我自己的引导加载程序和内核。

我首先使用qemu-system-i386 -fda image.bin从软盘启动,然后使用qemu-system-i386 -hda image.bin从硬盘启动

然后,我开始开发一个ahci驱动程序,用于从sata hhds读取/写入。

问题出在使用这些参数启动qemu时(取自this question)

代码语言:javascript
复制
qemu-system-i386 \
 -drive id=disk,file=image.bin,if=none \
 -device ahci,id=ahci \
 -device ide-drive,drive=disk,bus=ahci.0

基本输入输出系统似乎找不到硬盘,它输出-

代码语言:javascript
复制
SeaBIOS (version rel-1.12.-0-ga5cab58e9a3f-prebuilt.qemu.org)

iPXE (http://ipxe.org) 00:03.0 C980 PCI2.10 PnP PMM+07F914C0+07EF14C0 C980

Booting from Hard Disk...
Boot failed: could not read the boot disk

Booting from Floppy...
Boot failed: could not read the boot disk

Booting from ROM...
...

-boot menu=on启动qemu确实显示了ahci驱动器,但当我选择它时,它只是从上面打印相同的输出。

我尝试在linux和windows上使用qemu 4.1.50,在linux上使用2.8.1,所有版本的结果完全相同。

我发现的一个变通方法(用于处理驱动程序)是使用

代码语言:javascript
复制
qemu-system-i386 \
 -hda image.bin
 -drive id=disk,file=other.bin,if=none \
 -device ahci,id=ahci \
 -device ide-drive,drive=disk,bus=ahci.0

来引导内核。(但我确实希望从与我交互的同一硬盘驱动器引导),然后枚举pci总线并找到ahci控制器(作为驱动程序初始化的一部分)。但随后读取活动端口的sata状态会导致ipm为0,det为1(设备存在,但连接尚未初始化),根据this osdev页面,bios应该初始化,所以现在我假设这是相同的问题。

我是不是做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 05:54:05

在将我的引导加载程序与支持ahci hhd的不同操作系统进行比较和更多的研究之后,我发现我的mbr中缺少一个有效的partition table,所以BIOS不认为它是可引导的。

我不知道为什么它在qemu-system-i386 -hda image.bin上工作,因为它应该仍然是一个带分区的硬盘驱动器,如果我弄清楚了,我会编辑这个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58434936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档