【问题标题】:QEMU, No bootable device, Windows Subsystem for LinuxQEMU,无可启动设备,适用于 Linux 的 Windows 子系统
【发布时间】:2017-01-07 01:04:15
【问题描述】:

我正在学习如何使用https://intermezzos.github.io 构建基本的操作系统内核

我已经创建了我的.iso 文件并且我正处于运行qemu-system-x86_64 -cdrom os.iso 的位置 当我按下回车键时,QEMU 会运行一个带有以下输出的窗口:

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

Booting from DVD/CD...
Boot failed: Could not read from CDROM (code 0004)
Booting from ROM...
iPXE (PCI 00:03.0) starting execution...ok
iPXE initializing devices...ok

iPXE 1.0.0+git-20131111.c3d1e78-2ubuntu1.1 -- Open Source Network Boot Firmware
-- http://ipxe.org
Features: HTTP HTTPS iSCSI DNS TFTP AoE bzImage ELF MBOOT PXE Menu

net0: 52:54:00:12:34:56 using 82549em on PCI00:03.0 (open)
  [Link:up, TX:0 TXE:0 RX:0 RXE:01]
Configuring (net0 52:54:00:12:34:56)...ok
net0: 10.0.2.15/255.255.255.0 gw 10.0.2.2
Nothing to boot: No such file for directory (http://ipxe.org/2d03e13b)
No more network devices

No bootable device.

我访问了输出中列出的网站 (http://ipxe.org/2d03e13b),其中一个提示是我可能会 Use the iPXE command line to perform DHCP manually,但是当我按 CTRL + B 访问 cli 时,我无法这样做。

我在哪里可以解决无法启动我的.iso 的问题?
如何让 QEMU 能够访问键盘输入?


更新
我不知道怎么做,但我现在可以使用 CTRL + B 访问 iPXE 命令行。

这似乎是开始诊断我的.iso 无法启动问题的好地方。

我在寻找什么?


更新 2
感谢下面 Peter Maydell 的建议,我测试了一个已知良好的 iso 映像 (https://alpinelinux.org/),运行 qemu-system-x86_64 -cdrom alpine-3.4.3-x86_64.iso,它的启动完全符合我的预期。

我已经从https://intermezzos.github.io 重写了我的文件以创建一个新的iso 图像,这次从存储库中复制并粘贴代码,以防我之前输入了错别字。

仍然无法启动。进入下一条线索……

【问题讨论】:

  • 不确定 QEMU 是如何工作的,但如果它使用任何类型的 Linux 内核驱动程序间接挂载 CDRom iso 文件,它将无法工作。这是一个有趣的问题,可能值得将其作为问题发布到 BashOnWindows Github 站点(尽管最好在发布日志之前更新到 build 14915,据说在最新版本中对 Mount 命名空间有更多支持,因为以及更好的套接字支持)。
  • 在此处为可能发现此问题的其他人添加注释...问题是无法启动的 ISO,并且由于失败,它移动到下一个启动设备并最终到达 iPXE(网络boot) 也按预期失败 - 但这绝不是 iPXE 的错误
  • 看来ISO的文件名也有关系。在 macOS 11 Big Sur 下,默认名称“ubuntu-20.04.2-live-server-amd64.iso”不会被识别为可启动设备,但将名称更改为“ubuntu.iso”后,它就可以正常工作了。

标签: qemu windows-subsystem-for-linux ipxe


【解决方案1】:

首先要做的是检查这个命令行和 ISO 映像是否在正常的 Linux 主机系统上工作。这将告诉您问题是 (a) Linux 的 Windows 子系统没有正确实现 QEMU 所依赖的东西,还是 (b) 您的 ISO 映像实际上不是可引导的 CDROM。

您也可以尝试启动已知良好的 ISO 映像,例如用于 Linux 发行版的 ISO 映像。

(这里的一般原则是尝试进行诊断测试,将“可能是什么问题”的空间分成更小的部分,并确定您的问题在哪一边。)

【讨论】:

  • 非常感谢您的建议。我成功启动了一个 Alpine Linux 映像,我对此感到高兴,因为这似乎意味着我的环境设置没问题。现在我只需要弄清楚我的代码有什么问题,尽管我不确定下一步该往哪里看,因为我试图通过遵循教程来学习。
【解决方案2】:

问题的简单解决方案。与使用 EFI 引导的系统有关。

source

我需要apt-get install grub-pc-bin 然后重建图像。

【讨论】:

  • 我不知道为什么或如何,但是当我尝试grub-mkrescue 一个小内核时,这已经解决了这个非常神秘的问题。非常感谢!
  • 已更新解决方案来源链接:intermezzos.github.io/book/first-edition/appendix/…(显然“编辑队列已满”,所以无法直接编辑答案中的链接)
  • @natiiix 感谢您让我知道链接断开 :-) 已修复
猜你喜欢
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2017-04-06
  • 2019-01-09
  • 2017-11-10
相关资源
最近更新 更多