前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >在 UOS 下利用 QEMU 搭建飞腾 ARM64 的开发环境

在 UOS 下利用 QEMU 搭建飞腾 ARM64 的开发环境

作者头像
云水木石
发布2025-01-23 15:28:38
发布2025-01-23 15:28:38
18300
代码可运行
举报
文章被收录于专栏:信创系统开发信创系统开发
运行总次数:0
代码可运行

近年来,在政府的推动下,国产操作系统(主要是统信 UOS 和麒麟 OS)以及相关软件的市场份额不断扩大。越来越多的企业和事业单位开始采用国产操作系统和软件,国产化替代进程正如火如荼地进行。目前,信创产业链上下游百花齐放,国产芯片领域更是群雄并起,如麒麟、兆芯、海光、龙芯、飞腾、申威等。作为产业链中的一环,软件开发者也面临一个普遍问题:需要适配多种硬件平台。

前几天,一位客户询问我们是否提供飞腾架构统信 UOS 下的软件版本。我们之前已经适配了 Windows、兆芯(x86)UOS 和麒麟等平台,但尚未支持飞腾架构。经过查询得知,飞腾 FT-D2000 兼容 64 位 ARMv8 指令集。看到是 ARM64 架构时,我心中有了底,因为此前我们已经做过麒麟 OS ARM 版本的移植,理论上咱们的软件可以直接在飞腾版本的统信 UOS 上运行。即使存在细微差异,经过简单适配也能解决。

然而,我们面临一个现实问题:手头没有搭载飞腾处理器的设备,而在需求尚不明确的情况下,采购一台新设备并不现实。

由于仅需验证软件包是否能够在该平台上运行,且主要关注基本功能的正常性,我们决定使用虚拟机方案。然而,像 VirtualBox 等常见虚拟机并不支持在 x86 架构的设备上创建 ARM 虚拟机,所以我们将目光投向了 QEMU。

QEMU

QEMU 是一个功能强大的开源仿真器和虚拟化工具,能够在不同硬件架构上运行虚拟机。它支持多种硬件架构的仿真,包括 ARM、x86、MIPS 和 RISC-V 等,能够完全仿真目标系统的 CPU、内存、网络和 I/O 设备等。对于 ARM 仿真,QEMU 提供了多种 ARM 处理器和开发板模型,可以运行常见的 ARM 操作系统,如 Linux、Android 等。

在 UOS V20 系统上安装 QEMU 非常简单,只需执行以下命令:

代码语言:javascript
代码运行次数:0
复制
$ sudo apt install qemu-system qemu-efi-aarch64

安装完成后,可通过以下命令查看 QEMU 版本信息:

代码语言:javascript
代码运行次数:0
复制
$ qemu-system-aarch64 --version
QEMU emulator version 3.1.0 (Debian 1:3.1+dfsg.1-1+dde)
Copyright (c) 2003-2018 Fabrice Bellard and the QEMU Project developers

创建模拟器

QEMU 需要一个虚拟硬盘来安装操作系统。使用 qemu-img 工具创建虚拟硬盘:

代码语言:javascript
代码运行次数:0
复制
$ qemu-img create -f qcow2 uos-arm64-disk.qcow2 100G
Formatting 'uos-arm64-disk.qcow2', fmt=qcow2 size=107374182400 cluster_size=65536 lazy_refcounts=off refcount_bits=16

这里的 100G 是虚拟硬盘的大小,可根据实际需求调整。

QEMU 支持 ARM64 的 UEFI 启动,相关的 UEFI 镜像文件会在安装 QEMU 时自动安装,默认路径为 /usr/share/qemu-efi-aarch64/QEMU_EFI.fd。如文件缺失,可执行以下命令重新安装:

代码语言:javascript
代码运行次数:0
复制
$ sudo apt install qemu-efi-aarch64

接下来,请从统信官网上下载 UOS 安装镜像,地址如下:

https://www.chinauos.com/resource/download-professional

UOS 的版本比较多,一定下载正确的版本,我们选择飞腾适配版本:

下载完毕后,最好校验一下 md5 值,避免由于下载文件不完整造成安装失败。

代码语言:javascript
代码运行次数:0
复制
$ md5sum uos-desktop-20-professional-1070-arm64-202408.iso 
8757bd794ec7f7d6af13ed4053c2c92a  uos-desktop-20-professional-1070-arm64-202408.iso

安装 UOS V20 飞腾版

准备工作完成后,即可在虚拟机中安装 UOS V20 飞腾版。将下载的系统镜像和虚拟硬盘文件置于同一目录,执行以下命令启动虚拟机:

代码语言:javascript
代码运行次数:0
复制
qemu-system-aarch64 -M virt -cpu cortex-a72 -smp 8 -m 8096 \
    -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd \
    -device virtio-gpu-pci,xres=1920,yres=1080 \
    -display gtk \
    -device usb-ehci -device usb-tablet -device usb-kbd \
    -drive if=none,file=uos-arm64-disk.qcow2,id=hd0 \
    -device virtio-blk-device,drive=hd0 \
    -cdrom uos-desktop-20-professional-1070-arm64-202408.iso \
    -netdev user,id=net0 -device virtio-net-device,netdev=net0

qemu 命令行参数比较多,这里简单说明一下各个参数的含义:

  • -M virt:指定 ARM 的虚拟机类型。
  • -cpu cortex-a72:指定虚拟 CPU 类型。
  • -smp 8:设置虚拟机 CPU 核心数为 8 个。
  • -m 8096:为虚拟机分配 8GB 内存,可根据需要调整。
  • -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd:UEFI 镜像文件
  • -device virtio-gpu-pci,xres=1920,yres=1080:启用 virtio 图形设备,并指定分辨率
  • -device usb-ehci -device usb-tablet -device usb-kbd:为虚拟机配置鼠标、键盘支持。
  • -drive if=none,file=uos-arm64-disk.qcow2,id=hd0:指定虚拟硬盘文件。
  • -device virtio-blk-device,drive=hd0:使用 virtio 作为硬盘驱动,提升虚拟机性能。
  • -cdrom uos-desktop-20-professional-1070-arm64-202408.iso:挂载 ISO 文件,虚拟光驱。
  • -netdev user,id=net0 -device virtio-net-device,netdev=net0:为虚拟机配置网络支持。

这其中可能需要注意的,虚拟机支持多种显示设备虚拟,如 std, virtio, cirrus, 或 qxl。使用 std 最保险,但可能无法支持较高的分辨率。virtio、cirrus 等并不是在所有机器上都能比较好的虚拟,可能需要根据实际运行情况,调整一下,多尝试几回。

如果启动成功,将出现第一个安装界面:

敲一下回车键,然后耐心等待(这个过程需要多长时间,取决于你主机的性能,我这边大约等了两三分钟),出现图形安装界面。

接下来的安装过程和在 PC 上安装 UOS 一样,一般情况下使用默认安装即可。

重新启动,然后又是一阵等待,终于出现 UOS 的界面:

查看一下系统信息:

进入控制面板查看系统信息:

至此,整个系统安装就完成了。后面如果要启动这个虚拟的 UOS 系统,修改上面的命令,去掉挂载光盘参数:

代码语言:javascript
代码运行次数:0
复制
qemu-system-aarch64 -M virt -cpu cortex-a72 -smp 8 -m 8096 \
    -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd \
    -device virtio-gpu-pci,xres=1920,yres=1080 \
    -display gtk \
    -device usb-ehci -device usb-tablet -device usb-kbd \
    -drive if=none,file=uos-arm64-disk.qcow2,id=hd0 \
    -device virtio-blk-device,drive=hd0 \
    -netdev user,id=net0 -device virtio-net-device,netdev=net0

建议将该命令保存为脚本文件,便于日后快速启动。

小结

通过 QEMU 安装飞腾版 UOS 系统虽有一定的局限性,但在某些场景下,尤其是硬件资源有限的情况下,依然是一个不错的验证手段。然而,由于 x86 平台上 ARM 指令的纯软件仿真效率较低,运行过程中会出现明显的延迟。此方案更适合进行简单的测试和验证。

本文记录了安装过程,供有类似需求的开发者参考。如果有更好的方案,欢迎留言讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云水木石 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • QEMU
  • 创建模拟器
  • 安装 UOS V20 飞腾版
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档