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

近年来,在政府的推动下,国产操作系统(主要是统信 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 非常简单,只需执行以下命令:

$ sudo apt install qemu-system qemu-efi-aarch64

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

$ 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 工具创建虚拟硬盘:

$ 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。如文件缺失,可执行以下命令重新安装:

$ sudo apt install qemu-efi-aarch64

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

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

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

925c96307f2a74deaa954cbf00cbded2.png

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

$ md5sum uos-desktop-20-professional-1070-arm64-202408.iso 
8757bd794ec7f7d6af13ed4053c2c92a  uos-desktop-20-professional-1070-arm64-202408.iso

安装 UOS V20 飞腾版

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

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 等并不是在所有机器上都能比较好的虚拟,可能需要根据实际运行情况,调整一下,多尝试几回。

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

8169a2b8f0ae3dbd037073a06118f385.png

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

acb2862a620af6217e7fab13fd62132a.png

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

b774385460c04a7434787c8aa1fa6679.png

2f8fa324c4df804f630fc8b4f113e722.png

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

ea495d4d5f432524da71a7503d17e9a6.png

查看一下系统信息:

acb8b0ebc5e46e11c12ca6cb8f2f4130.png

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

20ba74fe959e334c6c848e25025d2684.png

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

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 指令的纯软件仿真效率较低,运行过程中会出现明显的延迟。此方案更适合进行简单的测试和验证。

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

<think>好的,用户之前已经询问了如何在统信UOS上离线安装Docker,现在他们问的是关于UOS的aarch64环境。我需要先理解用户的需求是什么。可能用户在使用UOSARM架构系统时遇到了问题,或者想了解这个环境的特点,以及如何在该环境下进行开发或部署应用。 首先,我得确认aarch64是什么。aarch64ARM架构的64位版本,常见于服务器和嵌入式设备,比如华为鲲鹏处理器或者树莓派。统信UOS支持这个架构,所以用户可能在ARM设备上使用UOS,需要相关的信息。 接下来,我需要整理UOS在aarch64环境下的特点,比如兼容性、性能优化、应用生态等。用户可能想知道在这个架构下能做什么,有哪些限制,或者如何安装软件,特别是之前提到的Docker是否支持。 然后,用户可能关心开发环境搭建。比如,如何在aarch64安装开发工具,编译程序,处理依赖问题。或者,在离线环境下如何部署应用,比如之前提到的Docker离线安装是否有不同步骤。 还需要考虑常见问题,比如依赖包是否齐全,驱动支持,性能问题,以及如何验证环境是否正确配置。比如,用户安装Docker后,可能需要确认是否支持ARM架构的镜像,或者运行时的性能如何。 另外,用户可能遇到了具体的问题,比如软件兼容性或者安装错误,但这次提问比较笼统,可能需要给出一般性建议,同时提示用户提供更多信息以便进一步帮助。 最后,要确保回答结构清晰,分点说明,帮助用户逐步理解UOS的aarch64环境,并给出实际的操作步骤和验证方法。同时,注意之前用户提到的离线安装Docker,可能需要在这里补充aarch64架构下的特别注意事项,比如下载正确的.deb包,依赖是否不同等。</think>以下是对统信UOS操作系统在aarch64ARM架构)环境下的详细介绍: --- ### 一、架构特点 1. **硬件适配** - 专为ARMv8-A架构设计(鲲鹏、飞腾、麒麟等国产CPU) - 支持64位指令集扩展(AArch64执行状态) - 优化了大小核调度和NUMA架构支持 2. **软件生态** - 兼容.deb格式的ARM64软件包 - 支持Docker ARM镜像(需使用`linux/arm64`标签) - 通过QEMU实现x86_64二进制兼容(性能会有损耗) --- ### 二、环境验证 ```bash # 确认CPU架构 lscpu | grep Architecture # 应显示aarch64 # 查看系统详细信息 uos-config -v # 验证内核架构 uname -m # 应显示aarch64 ``` --- ### 三、开发环境搭建 1. **基础工具链** ```bash sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu ``` 2. **交叉编译配置** ```makefile # 示例CMake配置 set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_PROCESSOR aarch64) ``` 3. **容器化开发** ```bash # 必须使用ARM基础镜像 FROM arm64v8/ubuntu:20.04 ``` --- ### 四、软件兼容性管理 1. **多架构支持** ```bash # 添加x86_64支持(需开启QEMU模拟) sudo dpkg --add-architecture amd64 sudo apt update ``` 2. **专属软件仓库** - 在`/etc/apt/sources.list`中优先使用ARM源: ``` deb [arch=arm64] https://enterprise-packages.chinauos.com/desktop-professional eagle main ``` --- ### 五、性能优化建议 1. **编译器参数** ```bash -mcpu=native -mtune=native # 自动检测本地CPU特性 ``` 2. **内存对齐优化** - 使用`__attribute__((aligned(128)))`进行缓存行对齐 3. **NUMA控制** ```bash numactl --cpunodebind=0 --membind=0 ./program ``` --- ### 六、常见问题处理 1. **动态库缺失** ```bash # 定位缺失库 ldd /path/to/binary # 安装专用运行库 sudo apt install libhfui-dev-arm64 ``` 2. **硬件加速异常** ```bash # 检查加密指令支持 grep -i crypto /proc/cpuinfo # 应显示pmull/sha2等特性 ``` --- ### 七、典型应用场景 1. 信创领域服务器部署 2. 边缘计算设备(如智能网关) 3. 国产化办公终端 4. 军工/金融专用设备 --- ### 特别提示 1. 使用`apt search ^.*:arm64`命令可过滤ARM原生软件包 2. 需注意驱动兼容性(建议使用UOS认证硬件列表中的设备) 3. 在虚拟机环境中,需启用KVM加速: ```bash qemu-system-aarch64 -enable-kvm -cpu host ``` 如需特定场景的配置说明(如深度学习环境搭建),可提供更详细需求进一步分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云水木石

但行好事,莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值