暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

基于 Windows 平台利用 QEMU 部署 ARM 架构的虚拟机

部署背景

    平常以开发桌面版的应用程序居多,经常需要涉及到跨平台的测试,ARM 架构的平台测试是无法绕过去的。
    随着信创产业发展持续深化,采用ARM、LoongArch64等架构的设备逐步增多,各种架构的设备入手一台也不现实,要么租一台云设备,要么就模拟一台ARM虚拟机。
    各种查资料,了解到了可以通过 QEMU 来进行模拟一个 ARM 环境,方便地测试和验证应用程序在不同平台上的运行情况,确保它们在不同硬件上都能够顺利工作。
    这样通过 QEMU 搭建 ARM 虚拟机环境,无需实际设备,就可以进行跨平台开发、调试和测试,提高开发效率。

动态001.gif

部署所用资源

  • 部署主机: i7/64G/4TB
  • 操作系统: Windows 10 专业版 64位
  • 麒麟桌面操作系统ARM版: Kylin-Desktop-V10-SP1-General-Release-2303-ARM64.iso
    • 存储目录: D:\OS\Kylin\ARM
  • QEMU 软件: qemu-w64-setup-20231126.exe(V8.1.91)
  • EFI文件: QEMU_EFI
  • 虚拟网卡软件: tap-windows-9.24.7-I601-Win10.exe
  • ARM虚拟机拟安装目录: D:\qemu\kylinv10
  • 连接工具: MobaXterm V22.1

动态004.gif

部署步骤

安装 QEMU

QEMU 下载

arm0001.png

QEMU 安装

  • 双击运行文件“qemu-w64-setup-20231126.exe”,正常安装应用程序即可;
  • 安装过程中记住软件的安装路径;

arm0002.png

arm0003.png

arm0004.png

arm0005.png

arm0006.png

arm0007.png

arm0008.png

配置部署主机环境变量

  • 右击“此电脑”——“属性”,在弹出的系统窗口中点击“高级系统设置”;
  • 在系统属性窗口中,点击“环境变量”按钮;

arm0009.png

  • 设置Path环境变量

arm0010.png

arm0011.png

  • 查看 QEMU 版本, 在cmd窗口中输入命令
qemu-system-aarch64 -version

arm0012.png

动态002.gif

安装虚拟网卡

  • 双击运行文件“tap-windows-9.24.7-I601-Win10.exe”,进行虚拟网卡的安装;

arm0013.png

arm0014.png

arm0015.png

arm0016.png

arm0017.png

arm0018.png

  • 安装完成后,网络连接里会出现一个“TAP-Winodws-Adapter V9”的本地连接网卡;

arm0019.png

  • 将网卡的名称修改为tap0;

arm0020.png

arm0021.png

  • 共享物理网卡
    • 右击物理网卡——属性;
    • 切换到“共享”标签页;
    • 勾选“允许其它网络通过此计算机的Internet连接来连接”;
    • “家庭网络连接”项选择新增加的网卡:tap0;
    • 勾选“允许其它网络用户控制或禁用共享的 Internet 连接”;
    • 点击“确定”按钮;

arm0022.png

arm0023.png

动态002.gif

创建虚拟机

  • 创建虚拟磁盘镜像

在拟创建目录的地址栏输入 cmd ,打开 cmd 窗口;

arm0024.png

arm0025.png

# 在 cmd 窗口中输入 qemu-img create -f qcow2 D:\qemu\kylinv10\Kylin-Desktop-10-SP1-ARM64.img 200G # qcow2 是一种支持快照和压缩等高级特性的虚拟磁盘格式,通常用于虚拟机的存储。

arm0026.png

arm0027.png

  • EFI文件拷贝到镜像目录中(D:\qemu\kylinv10)

arm0028.png

  • 使用 qemu-system-aarch64 命令安装麒麟操作系统
qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios D:\qemu\kylinv10\QEMU_EFI.fd -net nic -net tap,ifname=tap0 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=D:\OS\Kylin\ARM\Kylin-Desktop-V10-SP1-General-Release-2303-ARM64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\qemu\kylinv10\Kylin-Desktop-10-SP1-ARM64.img,id=hd0 -device virtio-blk-device,drive=hd0 # -m 8192 表示分配给虚拟机的内存最大8192MB,可以直接使用 -m 8G # -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 D:\qemu\kylinv10\QEMU_EFI.fd 指定UEFI固件文件 # -net tap,ifname=tap0 启用网络功能(ifname=tap0中的tap0,修改为前面步骤中自己修改后的网卡名称) # -device nec-usb-xhci -device usb-kbd -device usb-mouse 启用USB鼠标等设备 # -device VGA 启用VGA视图,对于图形化的Linux这条很重要! # -drive if=none,file=D:\OS\Kylin\ARM\Kylin-Desktop-V10-SP1-General-Release-2303-ARM64.iso,id=cdrom,media=cdrom 指定光驱使用镜像文件 # -device virtio-scsi-device -device scsi-cd,drive=cdrom 指定光驱硬件类型 # -drive if=none,file=D:\qemu\kylinv10\\Kylin-Desktop-10-SP1-ARM64.img 指定硬盘镜像文件

不要关掉 CMD 窗口!!!

不要关掉 CMD 窗口!!!

不要关掉 CMD 窗口!!!

arm0029.png

  • 选择“Install Kylin-Desktop V10-SP1”,回车;

arm0030.png

借此回忆一波安装麒麟桌面版操作系统的过程

arm0031.png

arm0032.png

arm0034.png

arm0035.png

arm0036.png

arm0037.png

arm0038.png

arm0039.png

arm0040.png

安装过程主打一个字:慢,要有耐心,有耐心,有耐心!!!

安装过程主打一个字:慢,要有耐心,有耐心,有耐心!!!

安装过程主打一个字:慢,要有耐心,有耐心,有耐心!!!

arm0041.png

arm0042.png

arm0043.png

  • 安装完成后,再次启动虚拟机
# 无需再次指定iso文件启动 qemu-system-aarch64 -m 8192 -cpu cortex-a72 -smp 4,cores=4,threads=1,sockets=1 -M virt -bios D:\qemu\kylinv10\QEMU_EFI.fd -net nic -net tap,ifname=tap0 -device nec-usb-xhci -device usb-kbd -device usb-mouse -device VGA -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -drive if=none,file=D:\qemu\kylinv10\Kylin-Desktop-10-SP1-ARM64.img,id=hd0 -device virtio-blk-device,drive=hd0

arm0045.png

arm0044.png

arm0055.png

adigoldsteinEUsVwEOsblEunsplash.jpg

问题

重启 QEMU 虚拟机后,可能会出现无法连接外网

此问题是 Windows 网络共享的问题,在宿主机种右键物理网卡,点击“属性”按钮,在弹出的界面中选择“共享”选项,先取消共享,点击确定后,再次选择共享即可。

系统启动后,ssh没有安装

安装 ssh 的过程

sudo apt-get install openssh-server E:dpkg 被中断,您必须手工运行'sudo dpkg --configure -a' 解决此问题。

arm0046.png

sudo dpkg --configure -a

arm0047.png

# 再次运行 sudo apt-get install openssh-server

arm0048.png

arm0049.png

arm0050.png

MobaXterm 连接 ssh

arm0051.png

arm0052.png

arm0053.png

arm0054.png

结语

640.png

    QEMU 是一个强大的工具,可以模拟多种硬件架构,包括 ARM。通过 QEMU,你可以在自己的开发环境中建立一个 ARM 虚拟机,进行跨平台开发、调试和测试,而不用依赖实际的硬件设备。

  • 跨平台开发和测试: 使用 QEMU 创建 ARM 架构平台可以让软件开发者更方便地进行跨平台开发和测试。ARM 架构广泛应用于嵌入式系统、移动设备等领域,通过在 QEMU 中模拟 ARM 环境,开发者可以在自己的开发环境中轻松测试和验证应用在 ARM 平台上的运行情况,节省了实际硬件的需求和实施的复杂性。
  • 底层调试和研究: QEMU 提供了强大的模拟功能,可以模拟 ARM 指令集和寄存器架构等底层细节,这对于软件开发者来说是一个非常有价值的工具。通过在 QEMU 中创建 ARM 架构平台,开发者可以更深入地了解 ARM 架构的工作原理,进行底层调试和研究,对于理解嵌入式系统和底层编程有很大的帮助。
  • 提高开发效率: 使用 QEMU 创建 ARM 架构平台可以大大提高开发效率。开发者无需购买实际的ARM硬件设备,也不需要实际部署和调试大量的设备,节省了时间和资源。此外,QEMU 的快速启动和快速模拟能力使得开发者可以迅速进行软件的测试和调试,加快了开发迭代的速度。

    总体而言, 选择使用 QEMU 创建 ARM 架构平台的软件开发者可以享受跨平台开发和测试的便利性,深入研究和调试 ARM 架构的底层细节,并提高开发效率。QEMU 为软件开发者提供了一个强大而灵活的工具,使我们能够更好地应对ARM平台上的开发挑战。

最后修改时间:2023-12-18 15:21:02
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论