我试图qemu-system-aarch64
在 mac M1/apple 芯片上运行 alpine linux,但是,我总是得到 QEMU 监视器 [1],而不是从提供的 ISO 启动。
以下工作没有任何问题,它从 ISO 启动,最终我可以登录并获得可用的 shell,正如我所期望的那样(请注意,它是x86_64
):
qemu-system-x86_64 -boot d -cdrom ~/Downloads/alpine-standard-3.15.0-x86_64.iso -m 2048
当我尝试(在我看来)与aarch64版本非常相似时,我得到了前面提到的QEMU监视器(显然没有默认机器,所以我使用virt
):
qemu-system-aarch64 -boot d -cdrom ~/Downloads/alpine-standard-3.15.0-aarch64.iso -m 2048 -machine virt
最终,我的目标不是模拟而是使用hvf
QEMU 6.2.0 中提供的新功能,因此我假设我会运行类似的东西,但同样,我只得到 QEMU 监视器窗口:
qemu-system-aarch64 -boot d -cdrom ~/Downloads/alpine-standard-3.15.0-aarch64.iso -m 2048 -cpu host -machine virt,highmem=off -accel hvf
您对我做错了什么有什么建议吗?
[1] 监视器是一个带有某种交互式 shell 的单独窗口,并显示以下内容(我尝试了帮助,但没有找到任何相关内容):
compat_monitor0 console
QEMU 6.2.0 monitor - type `help` for more information
(qemu)
答案1
我在 Linux 上遇到了同样的问题,但按照此处的说明可以使其正常工作:
长/博士:
您必须首先创建并指定pflash
磁盘映像和virtio
变量存储文件。
qemu-img create -f qcow2 varstore.img 64M
qemu-img create -f qcow2 alpine.img +20G
并使用合适的 QEMU EFI 文件启动。
wget http://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-AARCH64/RELEASE_GCC5/QEMU_EFI.img.gz
gunzip QEMU_EFI.img.gz
跑步:
sudo /home/user/qemu-6.2.0/build/qemu-system-aarch64 \
-cpu cortex-a57 -M virt -m 2048 -nographic \
-drive if=pflash,format=raw,file=QEMU_EFI.img \
-drive if=pflash,file=varstore.img \
-drive if=virtio,file=alpine.img \
-drive if=virtio,format=raw,file=alpine-virt-3.15.0-aarch64.iso \
-net nic \
-net user \
-no-reboot
答案2
@客人的答案对我有用。我的回答是补充。 (本来想发评论的,结果发现字数比我想象的多了一点)
我遇到了同样的问题,要么qemu-7.2.0
是 from Homebrew
,要么qemu-7.1.0
是 from Macports
。我拥有的是一台配备“Apple M1”芯片和 macOS Monterey 12.3 的 Macbook Pro 16 英寸。
我了解到的是——似乎需要qemu-system-aarch64
UEFI 来启动,传统的 BIOS 不起作用。 (谷歌 ”qemu aarch64 uefi”,第一个 google 页面中所有文章/博客/文档中的示例都表明它们qemu-system-aarch64
是使用 UEFI 映像调用的)
因此,我最终的命令行是这样的,
qemu-system-aarch64 -m 512 -smp 1 \ -boot d -cdrom alpine-virt-3.17.0-aarch64.iso \ -ngraphic \ -M virt,accel=hvf,highmem=off \ -drive if=pflash,format=raw,file=edk2-aarch64-code.fd -cpu 主机
edk2-aarch64-code.fd
是软件包附带的 UEFI 映像qemu
,位于/opt/local/share/qemu/
forMacports
或/opt/homebrew/share/qemu/
for文件夹中Homebrew
。
我发现我必须使用-cpu <...>
它。我尝试了以下CPU,一切正常。没有它就无法工作。
host
max
cortex-a57
我还发现可能没有必要使用小图像作为 EFI 变量存储(如varstore.img
中所述@客人的答案)。我不能 100% 确定这一点,因为我没有进行完整的测试。
(-nographic
只是我的偏好)