【虚拟机】Windows(x86)上部署ARM虚拟机(Ubuntu)
零、起因
最近在学嵌入式,这就不得不涉及ARM指令集,但是电脑是x86指令集的,用手机不太方便,买开发板又要等几天……,总之就是要找个理由在x86的Windows上运行一下ARM的Ubuntu~
壹、准备
我们要在ARM虚拟机上运行Ubuntu系统需要准备下面这些文件(文末提供网盘分享链接):
1. 虚拟机
这边我们使用的是QEMU,QEMU可以模拟很多不同指令集的CPU,目前包括有 ARM、LoongArch、MIPS、RISCV 和 x86_64 等,我们可以到官网下载最新版:https://www.qemu.org/,也可以选择跟我一样的版本,下载后得到一个软件安装包,按照正常的软件安装方法运行安装程序,设置好安装位置,安装安装即可,这里需要记一下安装位置!下载地址:https://qemu.weilnetz.de/w64/2024/qemu-w64-setup-20240423.exe
2. UEFI
统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS(基本输入/输出系统)的替代方案。可扩展固件接口负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。我们的ARM虚拟机需要用到这个,下载地址:http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd
3. Ubuntu
Ubuntu的系统安装包,Ubuntu系统就不多介绍了,可以自行到官网下载,官网地址:https://cn.ubuntu.com/download/server/arm,也可以下载跟我一样的版本,只要下载的是ARM版本的即可,下载地址:https://cdimage.ubuntu.com/releases/24.04/release/ubuntu-24.04-live-server-arm64.iso
贰、安装
1. 虚拟机的安装
直接运行下载得到的qemu-w64-setup-20240423.exe
即可,安装过程中的选项都可以保持默认的,但是要注意记一下安装位置,等下要用到:
我的安装位置:D:\Program Files\qemu
2. 虚拟机环境变量配置(选做)
为了方便,可以把安装路径配置到环境变量中去,这样到时候虚拟机的命令就可以简单一点点,我选择不配置,要配置的同学可以看看:
3. 创建磁盘文件
在安装系统之前,我们需要给虚拟机创建一个磁盘文件,作为虚拟机存储资料的地方,使用如下命令(配置了环境变量后可以省略安装路径):
CMD命令格式:
"QEMU安装路径\qemu-img.exe" create -f qcow2 "保存的文件夹\文件名.qcow2" 文件大小
我的:
"D:\Program Files\qemu\qemu-img.exe" create -f qcow2 "F:\VM\ARM\ubuntu\ubuntu.qcow2" 40G
这样我们会得到一个虚拟磁盘文件:F:\VM\ARM\ubuntu\ubuntu.qcow2
4. 安装Ubuntu系统
CMD命令格式:
"QEMU安装路径\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "下载的 QEMU_EFI.fd 文件路径" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="刚刚创建的磁盘文件的路径",id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file="Ubuntu系统安装包文件路径",id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22
最后一个参数hostfwd
是做的端口映射,把虚拟机的端口号为22的TCP协议映射到主机地址127.0.0.1:2222
中,方便我们使用SSH链接虚拟机。
我的:
"D:\Program Files\qemu\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "F:\VM\ARM\ubuntu\QEMU_EFI.fd" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="F:\VM\ARM\ubuntu\ubuntu.qcow2",id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file="F:\VM\ARM\ubuntu\ubuntu-24.04-live-server-arm64.iso",id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22
运行此命令后会弹出一个窗口,稍作等待即可进入Ubuntu的安装引导程序了,具体如何配置Ubuntu的安装程序我就不多介绍了,系统安装完即可正常使用了,至此我们成功在Windows(x86)上运行了Ubuntu(ARM)。
5. 运行已安装好系统的虚拟机
安装好后把虚拟机窗口关掉了,想再次打开可以使用下面的命令(不需要指定系统安装包了):
CMD命令格式:
"QEMU安装路径\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "下载的 QEMU_EFI.fd 文件路径" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="安装有系统的磁盘文件路径",id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22
我的:
"D:\Program Files\qemu\qemu-system-aarch64.exe" -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios "F:\VM\ARM\ubuntu\QEMU_EFI.fd" -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file="F:\VM\ARM\ubuntu\ubuntu.qcow2",id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp:127.0.0.1:2222-:22
稍作等待,Ubuntu系统成功在ARM虚拟机中启动之后就可以使用了~
可以输入如下命令查看系统使用的CPU指令集:
6. 配置Ubuntu系统
Ubuntu系统安装好后还需要经过一定的配置才好用,这边不详细讲,给同学们找了几篇文章参考:
- 配置SSH:如何在 Ubuntu 上启用 SSH,安全地远程管理和传输数据:https://developer.aliyun.com/article/1375688
- 配置远程连接:【Linux】远程连接Linux虚拟机(MobaXterm):https://blog.csdn.net/XiaoYuHaoAiMin/article/details/140702880
- 配置镜像软件源:【Ubuntu】Ubuntu 配置镜像源(ARM):https://blog.csdn.net/XiaoYuHaoAiMin/article/details/140697174
- 安装编程软件(可选):如何在 Ubuntu 22.04 上安装 GCC:https://cn.linux-console.net/?p=14950
叁、参考文档
- UEFI启动和Bios(Legacy)启动的区别:https://blog.csdn.net/zhangxiangweide/article/details/95342334
- WIN10 x86环境部署ARM虚拟机(银河麒麟)实例:https://blog.csdn.net/weixin_44255842/article/details/120652227
- Linux 查看CPU架构及内核版本:https://blog.csdn.net/lxh_worldpeace/article/details/106916780