无法使用 QEMU 6.2.0 在 mac os 上启动 aarch64 alpine linux

无法使用 QEMU 6.2.0 在 mac os 上启动 aarch64 alpine linux

我试图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

最终,我的目标不是模拟而是使用hvfQEMU 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 上遇到了同样的问题,但按照此处的说明可以使其正常工作:

http://www.redfelineninja.org.uk/daniel/2018/02/running-an-iso-installer-image-for-arm64-aarch64-using-qemu-and-kvm/

长/博士:

您必须首先创建并指定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-aarch64UEFI 来启动,传统的 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只是我的偏好)

相关内容