2026/8/12 15:48:13

ARM架构国产系统虚拟化实战:UOS宿主机部署银河麒麟V10虚拟机

ARM架构国产系统虚拟化实战:UOS宿主机部署银河麒麟V10虚拟机 1. 项目概述与背景最近在折腾国产化软硬件环境手头有一台基于ARM架构的统信UOS桌面系统但有些特定的开发或测试需求需要在银河麒麟V10同样是ARM版的环境下进行。直接装双系统太折腾重装又影响主系统工作流最理想的方案就是在UOS里跑一个麒麟V10的虚拟机。听起来像是“套娃”但在国产化替代和软硬件适配测试的场景里这种需求其实挺常见的。比如你手头的软件或驱动需要针对麒麟V10做验证或者想学习、对比不同国产操作系统的特性又或者像我一样纯粹是技术爱好者的折腾之心在燃烧。这个项目说白了就是在统信UOSARM版这个“宿主”系统上安装并配置一个虚拟机软件然后在这个虚拟机里安装银河麒麟V10ARM版这个“客户”系统。整个过程涉及几个关键点一是虚拟机软件的选择在ARM架构的Linux上主流选择是QEMU/KVM二是镜像的准备必须找到对应ARM架构的麒麟V10镜像三是安装过程中的参数配置与性能优化让虚拟机既能流畅运行又能和宿主机良好交互。对于不熟悉虚拟化或者刚接触ARM版国产系统的朋友可能会在软件源、网络配置、图形界面加速这些地方踩坑。接下来我就把这次从零开始的操作过程、遇到的坑以及解决思路详细拆解一遍。2. 核心需求与方案选型2.1 需求场景深度解析为什么要在ARM版的UOS里装ARM版的麒麟虚拟机这绝不是为了炫技。从我接触的实际案例来看主要有以下几类刚性需求软件兼容性测试与验证这是最核心的场景。很多政务、金融行业的应用软件发布前需要拿到“麒麟软件兼容性列表”的认证。开发团队可能主力开发环境是统信UOS但必须确保软件在银河麒麟V10上也能完美运行。拥有一个本地的、可快速重置的测试环境效率远高于申请物理机。系统管理与运维学习国产操作系统在命令、包管理、系统配置上既有共通点也有差异。例如统信UOS主要用aptDeepin系而银河麒麟V10 SP1之后也转向了apt但其软件源地址、一些特有的系统管理工具如麒麟的kylin-software-center需要熟悉。在虚拟机里操作可以大胆尝试而不用担心搞崩主力机。驱动与硬件适配开发为ARM平台开发硬件驱动或进行固件适配时可能需要针对不同内核版本UOS和麒麟的内核版本可能不同进行编译和测试。虚拟机提供了隔离的编译和测试环境。构建特定工具链环境有些旧的或特定的开发工具链可能只提供了针对麒麟系统的优化版本或安装说明。在虚拟机里搭建一个纯净的麒麟环境来运行这些工具可以避免污染宿主机的开发环境。2.2 虚拟化方案对比与选型在x86平台上VMware Workstation或VirtualBox是桌面虚拟化的首选。但在ARM架构的Linux上情况有所不同VMware Workstation截至目前VMware并未提供ARM Linux版本的Workstation Pro。因此这个选项直接排除。VirtualBoxOracle官方提供了ARM64版本的VirtualBox但在我实际测试UOS 20专业版内核5.10中安装过程复杂且对较新的Linux内核和图形界面支持不稳定容易遇到内核模块编译失败或虚拟机启动黑屏的问题。QEMU/KVM这是Linux原生、最成熟的开源虚拟化方案。KVMKernel-based Virtual Machine是Linux内核的一个模块它提供CPU虚拟化的能力QEMU则是一个通用的机器模拟器可以处理I/O设备模拟。两者结合qemu-kvm就能实现高性能的“硬件辅助虚拟化”。在ARM架构上KVM同样得到了良好支持。最终选型QEMU/KVM virt-manager图形化管理。理由原生支持作为Linux内核的一部分KVM在ARM64架构上的支持度非常高性能损耗最小特别适合在相同架构ARM on ARM下运行虚拟机几乎可以达到原生性能。生态成熟相关的管理工具如libvirt、virt-manager非常完善既能用命令行精细控制也能用图形界面方便操作。社区活跃遇到问题容易在社区找到解决方案。统信UOS兼容性统信UOS默认内核已经包含了KVM模块且软件源中提供了完整的qemu、libvirt等套件安装配置最为顺畅。注意如果你的统信UOS系统是“桌面版”而非“服务器版”默认可能没有安装KVM相关组件但通过包管理器可以轻松安装。这与在Ubuntu或CentOS上的操作非常类似。3. 宿主系统准备与KVM环境搭建3.1 宿主机环境确认首先我们需要确认宿主机统信UOS的环境满足要求。检查CPU是否支持虚拟化在终端执行以下命令grep -Eoc (vmx|svm) /proc/cpuinfo # 这是x86的检查方式ARM不适用对于ARM架构我们需要检查CPU是否支持虚拟化扩展。更通用的方法是检查内核是否支持并加载了KVM模块。直接检查/proc/cpuinfo中的Features字段cat /proc/cpuinfo | grep Features在输出中寻找vm或相关虚拟化扩展标识。更直接的方法是使用kvm-ok命令但这个工具通常需要安装cpu-checker包。在UOS上最可靠的方法是尝试加载KVM模块。检查KVM内核模块lsmod | grep kvm如果输出中包含kvm和kvm_arm或其他架构相关如kvm_intel说明模块已加载。如果没有输出则需要手动加载。加载KVM模块sudo modprobe kvm sudo modprobe kvm_arm # 对于ARM64模块名通常是 kvm_arm再次执行lsmod | grep kvm确认。3.2 安装虚拟化必要软件包统信UOS基于Deepin使用apt作为包管理器。确保系统已更新然后安装QEMU/KVM全家桶sudo apt update sudo apt upgrade -y sudo apt install -y qemu-system-arm qemu-utils libvirt-daemon-system libvirt-clients bridge-utils virt-managerqemu-system-arm提供ARM虚拟机的系统模拟核心。qemu-utils包含qemu-img等工具用于管理虚拟机磁盘镜像。libvirt-daemon-systemlibvirt-clientslibvirt是管理虚拟化平台的开源API、守护进程和管理工具。它提供了一个统一的方式来管理KVM、Xen等。bridge-utils用于配置网络桥接的工具可选但推荐用于更灵活的网络模式。virt-manager一个图形化的虚拟机管理工具极大简化了创建和管理虚拟机的过程。安装完成后需要启动libvirtd服务并设置开机自启sudo systemctl start libvirtd sudo systemctl enable libvirtd将当前用户加入libvirt和kvm组以便无需root权限即可管理虚拟机sudo usermod -aG libvirt $USER sudo usermod -aG kvm $USER重要执行完上述命令后必须注销当前用户并重新登录或者开启一个新的登录会话用户组变更才会生效。3.3 网络配置桥接模式推荐默认情况下libvirt会创建一个名为virbr0的虚拟网络使用NAT模式。这对于让虚拟机访问外网基本够用。但如果你需要虚拟机获得和宿主机同网段的IP地址方便SSH连接、被同网络其他设备访问就需要配置桥接网络。这里介绍一种相对简单稳定的方法使用virt-manager创建和管理网络。打开virt-manager可以在应用菜单搜索“虚拟系统管理器”。点击菜单栏 “编辑” - “连接详情”。切换到“虚拟网络”标签页。你可以看到默认的“default”网络NAT模式。要创建桥接更推荐直接在宿主机系统层面创建网桥。但这涉及修改宿主机网络配置有一定风险。对于新手在测试阶段可以先使用默认的NAT网络。它允许虚拟机上网宿主机也能通过虚拟网络IP访问虚拟机基本满足大部分开发测试需求。实操心得在国产化桌面系统上图形界面配置桥接有时会遇到网络管理器NetworkManager冲突。一个更稳妥的折中方案是在虚拟机安装完成后通过virt-manager将虚拟机的网络模式从“NAT”临时改为“桥接模式br0”假设你已配置好桥接网卡br0进行一些需要同网段访问的测试测试完再改回NAT。日常使用NAT更省心。4. 银河麒麟V10 ARM版镜像准备与验证4.1 获取官方镜像这是最关键的一步必须确保下载的是ARM架构aarch64的银河麒麟V10桌面版镜像。通常镜像文件格式为.iso。官方渠道访问银河麒麟软件官网在下载中心寻找“银河麒麟桌面操作系统V10 SP1 for ARM”或类似名称的版本。注意区分“服务器版”和“桌面版”我们需要桌面版。镜像名称示例Kylin-Desktop-V10-SP1-Release-2303-ARM64.iso。文件名中通常包含ARM,ARM64,aarch64等关键词。注意事项务必从官方或可信渠道下载核对镜像的SHA256或MD5校验和确保文件完整无误。损坏的镜像会导致安装过程莫名失败。4.2 创建虚拟机磁盘镜像虚拟机需要一块虚拟硬盘。我们使用qemu-img命令创建一个QCow2格式的磁盘文件。QCow2格式支持稀疏文件即用多少占多少物理空间、快照等高级功能。qemu-img create -f qcow2 /path/to/your/kylin-v10-arm.qcow2 40G-f qcow2指定格式为qcow2。/path/to/your/替换为你希望存放虚拟机文件的真实路径例如/home/你的用户名/VMs/。建议专门建立一个目录管理虚拟机。kylin-v10-arm.qcow2磁盘镜像文件名可自定义。40G为虚拟机分配的磁盘最大容量。这里分配40GB但qcow2文件初始很小随着虚拟机内数据增加而增长。5. 使用virt-manager创建并安装虚拟机5.1 创建新虚拟机打开virt-manager。点击左上角 “文件” - “新建虚拟机”。选择安装方式通常选择“本地安装介质ISO映像或光驱”点击“前进”。选择ISO映像点击“浏览”找到你下载的银河麒麟V10 ARM版ISO文件。系统通常能自动检测到它是“Linux”和“麒麟”或“Generic”类型。如果架构未自动识别在“架构选择”中手动选择“aarch64”。点击“前进”。配置内存和CPU内存建议分配至少2048 MB2GB如果宿主机内存充足比如16GB以上分配4096 MB4GB会更流畅。CPU根据宿主机核心数分配。建议分配2个或4个虚拟CPU。对于ARM虚拟机virt-manager默认的CPU模型如host或cortex-a57通常即可。点击“前进”。配置磁盘选择“选择或创建自定义存储”点击“管理”。在弹出的窗口中点击左下角“浏览本地”导航到你之前用qemu-img创建的kylin-v10-arm.qcow2文件选择它。点击“选择卷”然后“前进”。命名虚拟机给虚拟机起个名字例如“Kylin-V10-ARM”。确保“在安装前自定义配置”选项被勾选。这是关键一步我们需要调整一些默认设置以适配ARM安装。点击“完成”。5.2 关键配置自定义安装前必调点击“完成”后不会立即启动安装而是进入虚拟机硬件详情配置界面。这里有几处必须修改固件Bootloader这是ARM虚拟机与x86最大的不同。x86用BIOS/UEFI而ARM通常使用UEFI的ARM变种。在“概述”部分找到“固件”选项。将其从默认的“BIOS”修改为UEFI。通常系统会提供一个/usr/share/AAVMF/AAVMF_CODE.fd或类似路径的UEFI固件文件。virt-manager一般会自动填充。如果没有你可能需要安装edk2-aarch64或ovmf-aarch64包在UOS上包名可能略有不同可用apt search aavmf查找。CPU型号在“CPU”配置部分CPU模型选择host或cortex-a57。host表示将宿主机CPU的所有特性暴露给虚拟机性能最好兼容性也通常没问题。如果安装或启动有问题可以尝试切换到更通用的cortex-a57或max。显卡Video将默认的“VGA”或“Cirrus”改为virtio或qxl。virtio是半虚拟化驱动性能更好但需要客户机麒麟系统安装驱动。为了确保安装过程图形界面能正常显示在首次安装时建议先使用qxl。安装完成并安装好virtio驱动后可以再改回来。网络默认的“NAT”网络即可。确保设备模型是“virtio-net”这是性能更好的半虚拟化网卡。添加光驱确认CDROM设备已经指向了你的麒麟ISO文件。检查无误后点击左上角“开始安装”。5.3 银河麒麟V10安装过程实录虚拟机启动后会从ISO引导进入麒麟V10的安装界面。这个过程与在物理机上安装几乎一致选择语言简体中文。安装选项通常选择“安装银河麒麟操作系统”。键盘布局Chinese。时区亚洲/上海。磁盘分区这是关键一步。你会看到虚拟磁盘例如/dev/vda。对于新手强烈建议选择“自动配置分区”。安装程序会自动创建/、swap等分区。如果想手动分区确保至少有一个根分区/ 文件系统建议ext4和一个交换分区swap大小一般为内存的1-2倍。创建用户设置计算机名、用户名和密码。记住这个密码后续登录和sudo操作都需要。开始安装确认信息后点击“开始安装”。安装过程会复制文件、安装系统。ARM架构下的安装速度取决于宿主机磁盘IO和CPU性能一般需要10-30分钟。安装完成提示安装完成后点击“现在重启”。虚拟机可能会提示你“请移除安装介质然后按回车键重启”。此时需要在virt-manager的虚拟机窗口关闭虚拟机发送关机信号或强制关闭然后在硬件详情里将CDROM设备的“连接”断开取消ISO文件的选择或者改为“主机设备”-“/dev/null”。然后再启动虚拟机。6. 虚拟机安装后优化与配置6.1 安装增强工具virtio驱动与SPICE组件为了让虚拟机性能更好、使用更方便如支持剪贴板共享、分辨率自适应我们需要在麒麟系统内安装“增强工具”。对于KVM/QEMU这主要是安装virtio驱动和spice-vdagent。启动并登录银河麒麟V10虚拟机。打开终端更新软件源并安装必要组件sudo apt update sudo apt install -y spice-vdagent qemu-guest-agentspice-vdagent用于SPICE协议下的剪贴板共享、分辨率自适应等功能如果你使用virt-viewer或virt-manager的SPICE连接。qemu-guest-agent一个运行在客户机内部的守护进程用于向宿主机报告客户机状态、执行命令等提升管理效率。安装virtio驱动。对于较新的Linux内核麒麟V10的内核版本通常较高virtio驱动已经内置。但为了确保磁盘和网络的最佳性能可以检查并安装相关工具sudo apt install -y virtio-drivers # 包名可能略有不同可用 apt search virtio 查找重启虚拟机使驱动生效sudo reboot6.2 宿主机侧virt-manager配置优化客户机安装好增强工具后回到宿主机virt-manager关闭虚拟机进行最后优化显卡切换在硬件详情中将“显卡”从安装时使用的qxl改为virtio。这能提供更好的图形性能。视频显示协议在“显示”设置中将“类型”从默认的“VNC服务器”改为Spice服务器。SPICE协议在远程桌面交互上比VNC更流畅且能更好地支持spice-vdagent的功能如剪贴板共享。通道添加一个“通道”设备将“名称”设置为org.qemu.guest_agent.0目标类型选择“virtio”。这是qemu-guest-agent的通信通道。CPU与内存根据实际使用情况可以适当增加CPU核心数和内存大小。保存更改启动虚拟机。现在你应该能获得一个性能更好、交互更便捷的虚拟机环境。6.3 共享文件夹配置可选但实用在虚拟机和宿主机之间传递文件除了用网络如SFTP还可以配置共享文件夹。这需要用到virtio-fs或samba。这里介绍一种基于virtio-fs需要内核5.4的方法性能更好宿主机准备共享目录例如mkdir ~/share_to_kylin编辑虚拟机XML配置在virt-manager中关闭虚拟机点击顶部“查看”-“详情”选择左下角“XML”标签页。操作前建议先备份XML。在devices标签内添加如下配置filesystem typemount accessmodepassthrough driver typevirtiofs/ source dir/home/你的用户名/share_to_kylin/ target dirkylin_share/ address typepci domain0x0000 bus0x01 slot0x00 function0x0/ /filesystem注意修改source dir为你的实际路径。保存XML启动虚拟机。客户机麒麟内挂载在麒麟虚拟机终端执行sudo mkdir /mnt/host_share sudo mount -t virtiofs kylin_share /mnt/host_share现在宿主机~/share_to_kylin下的文件就能在虚拟机的/mnt/host_share下访问了。可以将此挂载命令添加到/etc/fstab实现开机自动挂载需确认virtiofs文件系统类型稳定。7. 常见问题与故障排查实录即使按照步骤操作也可能会遇到各种问题。以下是我在多次安装中遇到的典型问题及解决方法7.1 虚拟机无法启动报错关于UEFI/固件现象点击启动后虚拟机黑屏提示Failed to open file: /usr/share/AAVMF/AAVMF_CODE.fd或类似找不到固件文件的错误。原因缺少ARM架构的UEFI固件。解决在统信UOS宿主机上安装对应的固件包。sudo apt search aavmf | grep -i aarch64 # 查找包名 # 通常包名是 edk2-aarch64 或 aavmf-aarch64 sudo apt install -y edk2-aarch64安装后在virt-manager的虚拟机配置“概述”-“固件”中浏览选择新安装的固件文件如/usr/share/AAVMF/AAVMF_CODE.fd。7.2 安装过程中图形界面卡死或异常现象在麒麟安装界面鼠标键盘无响应或屏幕花屏。原因显卡模拟兼容性问题。解决关闭虚拟机。在virt-manager中将“显卡”模型从virtio临时改为qxl或vga。重新启动虚拟机进行安装。待系统安装完成并安装好spice-vdagent后再尝试将显卡改回virtio。7.3 虚拟机内网络无法连接现象麒麟系统启动后无法上网。排查在虚拟机内运行ip addr或ifconfig检查网卡通常是ens3或eth0是否获取到了IP地址来自virbr0网络的192.168.122.0/24段。检查宿主机上libvirt的默认网络是否激活sudo virsh net-list --all确保default网络是active状态。如果不是启动它sudo virsh net-start default sudo virsh net-autostart default在virt-manager中检查虚拟机的网络设置确保源设备是“虚拟网络 ‘default’: NAT”。7.4 麒麟系统内软件源更新失败现象sudo apt update报错无法连接仓库或签名无效。原因麒麟系统的默认软件源可能因网络或证书问题无法访问。解决可以尝试更换为国内镜像源如华为云、清华源提供的麒麟镜像。编辑/etc/apt/sources.list文件备份后替换为镜像源地址。具体源地址需要根据银河麒麟V10的版本SP1, SP2等和架构aarch64去对应镜像站查找。注意不同版本的麒麟系统源地址格式可能不同务必使用对应版本的源。7.5 性能调优建议如果感觉虚拟机运行卡顿可以从以下几个方面排查和优化CPU与内存在宿主机资源允许的情况下为虚拟机分配更多的CPU核心和内存。特别是在运行图形化桌面时内存不足会频繁使用swap导致卡顿。磁盘I/O确保虚拟机磁盘文件.qcow2存放在宿主机的高速SSD上而非机械硬盘。在创建磁盘时可以指定preallocationmetadata或preallocationfalloc来提升一些性能但会立即占用更多空间qemu-img create -f qcow2 -o preallocationmetadata kylin.qcow2 40G图形加速确保按照前文所述在客户机安装了spice-vdagent并在宿主机端将显示协议设置为Spice显卡模型使用virtio。宿主机状态检查宿主机UOS本身的资源使用情况避免宿主机过载。通过以上步骤你应该可以在统信UOS ARM系统上成功搭建一个性能不错的银河麒麟V10 ARM版虚拟机。这个环境非常适合用于学习、测试和开发。整个过程的核心在于理解ARM虚拟化与x86的差异主要是固件以及正确配置虚拟硬件模型。一旦环境搭建完成你就可以在这个隔离的麒麟系统中自由探索和测试了。