如何在 x86 架构的 Windows 设备上仿真运行 arm 架构的 CentOS?

2022-10-27 17:02:17 +08:00
 LxnChan

如题,目前个需求是把程序跑在 arm 架构的 CentOS 上,目标 CentOS 版本为 7.9Minimal ,需要同时运行三个实例,同时每个实例都必须有虚拟网卡直接连到外部交换机上。

我第一反应是 QEMU ,于是下了一个最新版的,按照记忆和网上查的教程创建了磁盘、下载了 arm 版本的 centos7.9-2009 的 ISO ,并用命令跑起来了一个 qemu 实例。

qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios E:\ITP-arm\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=E:\vm-arm\maindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=D:\CentOS-7-aarch64-Minimal-2009.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom  -net nic -net user,hostfwd=tcp::2222-:22

可是跑起来之后直接报错:

Failed to set MokListRT: Invalid Parameter 
Something has gone seriously wrong: import_mok_state () failed
: Invalid Parameter

查了一下说是 CentOS 版本太新,换了 7.5(1804)能看到 GRUB 了,不过点 Install 之后就黑屏了,只有光标在闪。

想问一下大家如何在 x86 架构的 Windows ( Ubuntu 也行)上仿真运行 arm 架构的 CentOS7 ,要求能跑 Gitlab 就行,同时网卡要能桥接到和主机平齐的交换机上。


使用的 EFI 固件:http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd

QEMU 版本:qemu-w64-setup-20220831

主机 CPU:Intel(R) Core(TM) i7-10870H CPU @ 2.20GHz 2.21 GHz

1400 次点击
所在节点    程序员
2 条回复
superchijinpeng
2022-10-27 17:13:35 +08:00
Nerdctl
adoal
2022-10-27 18:57:35 +08:00
我在 X64 的 Debian 11 里用 QEMU 跑过 ARM64 的 Debian 9 、Alpine 3.13 ,MIPS 的 Debian 9 ,都没有问题。ARM64 的是用 UEFI 启动,MIPS 的用外置 Kernle 启动。

估计你这个就是 QEMU 硬件设置和虚拟机里系统的版本兼容性问题吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/890443

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX