背景

最近在实现一个混沌测试工具,对汽车上分布式系统执行测试。计划运行在 Linux aarch64 环境,需要确定在目标环境能不能运行,但自己和实验室的电脑都是 x86_64,所以打算建一个虚拟机。

通过 Docker容器或VMware都不支持在 x86_64 宿主机运行 aarch64 容器/虚拟机, Virtual Box 似乎也不支持,QEMU支持。

主要参考了 CSDN 菠萝蚊鸭 《Windows11 上使用 QEMU 创建 aarch64(ARM64)虚拟机》 。实测按照这篇文章可以成功创建 openEuer 虚拟机。

步骤要点

一、下载QEMU

https://qemu.weilnetz.de/w64/

Windows11 上使用 QEMU 创建 Ubuntu aarch64(ARM64)虚拟机-LMLPHP

我实际用的几个月前下载的 8.0.2 版,当时尝试没成功。

二、下载 QEMU UEFI 固件文件

https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd

实测是兼容 ubuntu-20.04.5-live-server-arm64 的

三、Ubuntu 光盘镜像文件

https://cdimage.ubuntu.com/releases/focal/release/

https://cdimage.ubuntu.com/releases/focal/release/ubuntu-20.04.5-live-server-arm64.iso

实际用的 ubuntu-20.04.5-live-server-arm64 ,考虑 LTS 可能比较稳定,旧版可能可参考资料多一些。

四、安装设置 QEMU

默认安装,可能需要手动配环境变量?

五、创建虚拟网卡

1、安装 tap-windows

下载地址:https://build.openvpn.net/downloads/releases/

Win10版本的: https://build.openvpn.net/downloads/releases/tap-windows-9.24.7-I601-Win10.exe

默认配置安装即可,看起来最新的就是Win10版,实测可以用于 Win11。

2、重命名新网卡

控制面板\网络和 Internet\网络连接
Windows11 上使用 QEMU 创建 Ubuntu aarch64(ARM64)虚拟机-LMLPHP
不知道为什么右键->重命名没反应,选中后点击名字重命名可行。

3、共享物理网卡的网络

Windows11 上使用 QEMU 创建 Ubuntu aarch64(ARM64)虚拟机-LMLPHP
右键单击本机物理网卡,点击“属性”按钮,在弹出的界面中选择“共享”选项。选中“允许其它网络通过此计算机的Internet连接来连接”复选框,“家庭网络连接”项选择刚才新增加的网卡(且是修改过名字后的名称),选中“允许其它网络用户控制或禁用共享的Internet连接”,确定即可。

注意物理网卡用哪个选哪个。

六、创建硬盘镜像

创建一个名为 ubuntu-20.04.5-live-server-arm64.img 的 20GB 硬盘

qemu-img create -f qcow2 ubuntu-20.04.5-live-server-arm64.img 20G

七、从iso镜像安装虚拟机

qemu-system-aarch64 -m 4000 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios QEMU_EFI.fd -net nic -net tap,ifname=tap1212 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=ubuntu-20.04.5-live-server-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=ubuntu-20.04.5-live-server-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0

-m 4000 表示分配给虚拟机的内存最大4000MB,可以直接使用 -m 4G
-cpu cortex-a72 指定CPU类型,还可以选择cortex-a53、cortex-a57等
-smp 4,cores=4,threads=1,sockets=1 指定虚拟机最大使用的CPU核心数等
-M virt 指定虚拟机类型为virt,具体支持的类型可以使用 qemu-system-aarch64 -M help 查看
-bios F:\QEMU\QEMU_EFI.fd 指定UEFI固件文件
-net tap,ifname=tap1212 启用网络功能(ifname=tap1212中的tap1212请修改为前面步骤中自己修改后的网卡名称)
-device nec-usb-xhci -device usb-kbd -device usb-mouse 启用USB鼠标等设备
-device VGA 启用VGA视图,对于图形化的Linux这条很重要!
-drive if=none,file=ubuntu-20.04.5-live-server-arm64.iso,id=cdrom,media=cdrom 指定光驱使用镜像文件
-device virtio-scsi-device -device scsi-cd,drive=cdrom 指定光驱硬件类型
-drive if=none,file=ubuntu-20.04.5-live-server-arm64.img 指定硬盘镜像文件
————————————————
以上内容:
版权声明:本文为CSDN博主「菠萝蚊鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_25117757/article/details/128302530

ubuntu的图形界面非常简陋,安装过程中应该需要选中安装 openSSH

不知道为什么不能通过 Shift+其它按键 的方式输入上档字符,可能需要某些QEMU参数?
网络不稳定可能需要重试,可能安装失败,产生一个类似 /var/crash/1694074051.472850323.install_fail.crash 的文件,原因不明,重试就成功了。

八、启动镜像

安装完成后会提示重启,但重启后会显示一些错误。
关闭后用以下命令启动:
qemu-system-aarch64 -m 4000 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios QEMU_EFI.fd -net nic -net tap,ifname=tap1212 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=ubuntu-20.04.5-live-server-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0

九、连接 ssh

ubuntu不需要手动启动网卡,用 ip addr 看一下 IP 地址,通过 ssh 连接即可。

过程中 powershell 执行的命令和输出

PS E:\QEMU\ubuntu> qemu-img create -f qcow2 ubuntu-20.04.5-live-server-arm64.img 20G
Formatting 'ubuntu-20.04.5-live-server-arm64.img', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=21474836480 lazy_refcounts=off refcount_bits=16
PS E:\QEMU\ubuntu> qemu-system-aarch64 -m 4000 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios QEMU_EFI.fd -net nic -net tap,ifname=tap1212 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=ubuntu-20.04.5-live-server-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=ubuntu-20.04.5-live-server-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0

(qemu:32448): Gtk-WARNING **: 16:43:21.287: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
PS E:\QEMU\ubuntu> qemu-system-aarch64 -m 4000 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios QEMU_EFI.fd -net nic -net tap,ifname=tap1212 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=ubuntu-20.04.5-live-server-arm64.img,id=hd0 -device virtio-blk-device,drive=hd0 -k en-us

(qemu:9712): Gtk-WARNING **: 17:24:37.157: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
PS E:\QEMU\ubuntu>

09-09 11:00