尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

ARM架构统信UOS上部署银河麒麟V10虚拟机的完整指南

ARM架构统信UOS上部署银河麒麟V10虚拟机的完整指南 1. 项目概述在统信UOS ARM主机上虚拟化银河麒麟V10 ARM版最近在折腾国产化软硬件环境手头有一台基于飞腾或鲲鹏处理器的ARM架构电脑预装了统信UOS桌面操作系统。一个很实际的需求出现了我需要在这个UOS ARM系统上运行一个银河麒麟V10同样是ARM版的虚拟机用于软件兼容性测试、环境隔离或者学习研究。这听起来像是“套娃”但在国产化替代和信创生态建设的背景下这种需求正变得越来越普遍。无论是开发者为应用做多平台适配还是运维人员搭建异构的测试环境掌握在ARM主机上虚拟化另一个ARM系统的技能都很有价值。简单来说这个项目就是在ARM架构的统信UOS主机上利用虚拟化技术创建并运行一个ARM架构的银河麒麟V10虚拟机。整个过程涉及虚拟化平台选型、系统镜像准备、虚拟机配置、安装调试等一系列步骤。与常见的x86平台虚拟化如VMware Workstation装Windows相比ARM平台的虚拟化方案和细节有所不同会遇到一些特有的“坑”。接下来我将结合自己的实操经验详细拆解从零开始完成这个任务的完整流程、核心原理以及避坑指南。2. 核心思路与方案选型为什么是QEMU/KVM在x86世界我们有VMware Workstation、VirtualBox等成熟的桌面虚拟化方案。但在ARM架构的统信UOS上情况略有不同。首先VMware Workstation Pro并不提供ARM Linux宿主机的版本直接排除。VirtualBox对ARM宿主机的支持也尚不完善且性能表现一般。经过一番调研和实测在Linux环境下尤其是对于同架构ARM on ARM的虚拟化QEMUQuick Emulator配合KVMKernel-based Virtual Machine内核模块是目前最成熟、性能最佳且原生支持的选择。2.1 方案优势解析原生性能与硬件辅助虚拟化KVM是Linux内核的一部分它允许将Linux内核本身作为一个Hypervisor虚拟机监控器来使用。当宿主机CPU支持硬件虚拟化扩展对于ARMv8通常是ARM Virtualization Extensions时KVM能够直接利用这些扩展让虚拟机指令几乎以原生速度在物理CPU上执行性能损失极小。这与纯软件模拟如QEMU的TCG模式有数量级的差距。架构一致性由于宿主机UOS ARM和客户机Kylin ARM都是ARM架构我们使用的是同架构虚拟化。QEMU在此模式下主要扮演设备模拟和虚拟机生命周期管理的角色CPU指令执行则交由KVM和硬件完成效率极高。这比跨架构模拟如在x86上模拟ARM要简单和高效得多。生态与工具链成熟QEMU/KVM是开源世界的标准拥有庞大的社区和丰富的管理工具链。我们可以使用命令行工具qemu-system-aarch64进行精细控制也可以配合libvirt、virt-manager这样的图形化管理工具提升易用性。统信UOS原生支持统信UOS基于Debian/Deepin其软件源中通常已经包含了qemu-system-arm或qemu-system-aarch64、qemu-utils、libvirt-daemon-system等关键软件包安装配置非常方便。2.2 备选方案简析纯QEMU TCG模式如果不启用KVMQEMU会使用Tiny Code GeneratorTCG进行动态二进制翻译来模拟CPU。这种方式可以跨架构运行例如在x86上运行ARM镜像但速度非常慢仅适用于没有KVM支持或需要跨架构测试的极端情况。在我们的场景下有KVM就必须用KVM。Docker/LXC容器容器技术如Docker共享宿主内核轻量快速适合运行应用。但银河麒麟V10是一个完整的桌面操作系统包含自己的内核、系统服务和图形界面。虽然理论上可以创建非常复杂的容器来模拟但过程极其繁琐且兼容性问题多不适合用于完整的桌面系统体验和测试。虚拟机能提供更彻底的环境隔离。注意在开始之前请务必确认你的统信UOS宿主机CPU支持虚拟化扩展并且系统内核中已启用KVM。可以通过命令cat /proc/cpuinfo | grep -i virt或lsmod | grep kvm来检查。通常主流的飞腾、鲲鹏处理器都是支持的。3. 环境准备与依赖安装工欲善其事必先利其器。在统信UOS ARM主机上搭建虚拟化环境需要安装一系列软件包。3.1 系统更新与确认首先确保系统是最新的这能避免很多因软件包版本过旧导致的问题。sudo apt update sudo apt upgrade -y更新完成后重启一次系统是个好习惯。3.2 安装QEMU、KVM及相关工具我们需要安装一整套虚拟化套件。在终端中执行以下命令sudo apt install -y qemu-system-arm qemu-utils libvirt-daemon-system libvirt-clients bridge-utils virt-manager对上述包进行简要说明qemu-system-arm 包含针对ARM架构包括AArch64的QEMU系统模拟器。这是运行虚拟机的核心引擎。qemu-utils 提供qemu-img等实用工具用于创建、转换和管理虚拟机磁盘镜像至关重要。libvirt-daemon-systemlibvirt-clients Libvirt是一套用于管理虚拟化平台的开源API、守护进程和管理工具。安装它便于我们使用更高级的管理方式如virt-manager或virsh命令。bridge-utils 用于配置网络桥接的工具如果你想给虚拟机分配一个和宿主机同网段的独立IP就需要用到桥接网络。virt-manager 一个基于图形界面的虚拟机管理工具GUI。对于不习惯命令行的用户来说它可以直观地创建、配置和运行虚拟机。它会自动拉取一些依赖如virt-viewer用于显示虚拟机桌面。安装完成后将当前用户加入libvirt和kvm用户组以便无需root权限即可管理虚拟机。sudo usermod -a -G libvirt,kvm $USER重要执行此命令后你需要注销当前用户并重新登录或者开启一个新的登录会话用户组变更才会生效。你可以使用newgrp libvirt命令在当前shell中临时生效但重新登录是最稳妥的方式。3.3 验证KVM是否就绪重新登录后运行以下命令检查KVM模块是否已加载且你的用户是否有访问权限lsmod | grep kvm # 应该能看到类似 kvm_arm 和 kvm 的模块 ls -l /dev/kvm # 应该显示crw-rw-rw-或crw-rw----且所属组是kvm如果/dev/kvm不存在或权限不对可以尝试手动加载模块并设置权限sudo modprobe kvm sudo modprobe kvm_arm # 对于ARM平台 sudo chown root:kvm /dev/kvm sudo chmod 660 /dev/kvm但通常安装qemu-system-arm后系统服务会处理好这些。4. 获取与准备银河麒麟V10 ARM版系统镜像这是关键一步。你需要获得银河麒麟桌面版V10 for ARM的官方安装镜像ISO文件。请通过官方或可信渠道下载文件通常命名为类似Kylin-Desktop-V10-SP1-Release-2303-ARM64.iso。4.1 镜像格式确认下载后建议先验证一下镜像的完整性如果官网提供了MD5或SHA256校验码。然后在UOS中创建一个专门的目录来存放虚拟化相关文件例如~/VMs/kylin。4.2 创建虚拟机磁盘镜像虚拟机需要一块“虚拟硬盘”。我们使用qemu-img命令创建一个QCOW2格式的磁盘镜像文件。QCOW2格式支持写时复制、快照等高级功能且初始文件很小随着数据写入动态增长非常节省空间。假设我们为银河麒麟虚拟机分配50GB的磁盘空间根据实际需要调整cd ~/VMs/kylin qemu-img create -f qcow2 kylin_v10_arm.qcow2 50G命令解释create 创建新镜像。-f qcow2 指定格式为QCOW2。kylin_v10_arm.qcow2 镜像文件名。50G 镜像的最大容量虚拟硬盘大小。执行后你会看到一个名为kylin_v10_arm.qcow2的文件但初始大小可能只有几百KB。它会在虚拟机安装系统和存入文件时逐渐变大。5. 使用virt-manager图形化创建与安装虚拟机对于大多数用户使用virt-manager虚拟机管理器是最直观的方式。它提供了一个类似VMware Workstation的图形界面。5.1 启动并创建新虚拟机在统信UOS的应用菜单中搜索并打开“虚拟机管理器”Virtual Machine Manager。首次启动可能会提示你连接虚拟化引擎默认选择QEMU/KVM即可。点击左上角“创建新虚拟机”的图标。选择安装方式 选择“本地安装介质ISO映像或光驱”点击“前进”。选择ISO映像 点击“浏览”找到你下载的银河麒麟V10 ARM版ISO文件。系统类型通常会自动检测为Linux版本选择Generic Linux 4.x or later或aarch64如果列表中有。点击“前进”。内存和CPU设置 根据宿主机硬件配置分配。例如宿主机有16GB内存可以给虚拟机分配4GB4096 MB。CPU核心数如果宿主机是8核可以分配2-4个核心。点击“前进”。配置存储 选择“选择或创建自定义存储”点击“管理”。在弹出的窗口中点击左下角“”号选择“浏览本地”然后导航到你之前用qemu-img创建的kylin_v10_arm.qcow2文件选中它。点击“选择卷”。点击“前进”。命名虚拟机 给虚拟机起个名字例如“Kylin-V10-ARM”。在“网络选择”部分默认的“NAT”模式即可这样虚拟机会通过宿主机的网络进行地址转换来上网。点击“完成”。5.2 安装前的重要配置调整在点击“完成”前virt-manager会展示虚拟机的最终配置。此时先不要点“完成”而是点击“安装前自定义配置”。这一步至关重要能避免很多安装失败的问题。在自定义配置窗口中架构与固件左侧选择“概述”。确认“架构”是aarch64“机器类型”通常是virt。virt是QEMU为虚拟化优化过的通用机器类型兼容性好。关键点找到“固件”选项。对于ARM架构的UEFI启动我们需要选择UEFI固件。通常安装qemu-system-arm时会附带一个edk2-aarch64的UEFI固件文件。在下拉框中选择类似/usr/share/AAVMF/AAVMF_CODE.fd或/usr/share/qemu/edk2-aarch64-code.fd的路径。如果下拉框为空你可能需要安装ovmf包ARM版是edk2-armvirt或qemu-efi-aarch64可以尝试sudo apt install ovmf或搜索相关包。CPU与加速左侧选择“CPU”。在“配置”选项卡下确保“CPU模型”是host或cortex-a72等具体型号host最佳表示透传宿主机CPU特性。必须勾选“复制主机CPU配置”。这能确保KVM将宿主机的所有CPU特性包括虚拟化扩展暴露给虚拟机是性能的关键。引导选项左侧选择“引导选项”。确保“启用引导菜单”被勾选。在“引导设备顺序”中确认“光盘驱动器”即你的ISO在第一位“硬盘”在第二位。这样虚拟机会先从ISO启动进行安装。显示协议左侧选择“显示协议”。服务器类型选择“Spice服务器”。这是QEMU推荐的图形协议性能较好。VNC也可以但Spice通常更优。确保“监听类型”是“无”或“本地主机”这样只有本机可以连接。检查无误后点击左下角“开始安装”。5.3 安装银河麒麟V10操作系统virt-manager会自动启动虚拟机并连接到虚拟机的图形控制台。你会看到银河麒麟的安装界面。接下来的安装过程与在物理机上安装几乎完全相同选择语言、键盘布局。进入安装类型选择。通常会看到我们之前创建的虚拟磁盘可能显示为/dev/vda或类似。选择它进行安装。创建用户设置主机名、密码。开始安装。安装程序会将系统文件写入虚拟磁盘kylin_v10_arm.qcow2。安装完成后根据提示重启虚拟机。重启前需要在virt-manager窗口关闭虚拟机电源不是强制关闭然后在虚拟机详情页面将“光盘驱动器”从ISO镜像断开或设置为空或者调整引导顺序将硬盘设为第一启动项。然后再启动虚拟机。重启后你应该就能进入银河麒麟V10 ARM版的桌面环境了。6. 使用QEMU命令行直接启动安装备选方案如果你更喜欢命令行或者virt-manager遇到问题可以直接使用qemu-system-aarch64命令启动安装。这种方式更底层控制更精细。下面是一个典型的启动命令示例用于从ISO启动安装程序qemu-system-aarch64 \ -machine virt,accelkvm \ -cpu host \ -smp 4 \ -m 4096 \ -drive file~/VMs/kylin/kylin_v10_arm.qcow2,formatqcow2,ifvirtio \ -cdrom /path/to/your/Kylin-Desktop-V10-ARM64.iso \ -device virtio-net-pci,netdevnet0 \ -netdev user,idnet0 \ -device virtio-gpu-pci \ -display spice-app \ -bios /usr/share/qemu/edk2-aarch64-code.fd参数解释-machine virt,accelkvm: 指定机器类型为virt并使用KVM加速。-cpu host: 使用与宿主机相同的CPU模型。-smp 4: 分配4个CPU核心。-m 4096: 分配4096MB4GB内存。-drive file...: 指定虚拟硬盘文件使用virtio总线以获得更好的磁盘I/O性能。-cdrom ...: 指定安装ISO文件。-device virtio-net-pci... -netdev user...: 配置一个使用用户模式网络栈的虚拟网卡NAT网络。-device virtio-gpu-pci: 使用virtio-gpu虚拟显卡对Linux客户机支持较好。-display spice-app: 使用Spice协议显示会弹出一个Spice客户端窗口。-bios ...: 指定UEFI固件文件路径这是ARM UEFI启动必需的。执行这个命令后会弹出Spice客户端窗口显示虚拟机界面开始安装。安装完成后在下次启动时去掉-cdrom参数即可从硬盘启动。7. 网络与性能优化配置虚拟机安装完成后默认的用户模式网络NAT可以上网但虚拟机在局域网中没有独立IP外部也无法直接访问虚拟机服务。如果你需要更复杂的网络环境可以考虑桥接网络。7.1 配置桥接网络可选桥接网络会让虚拟机像一台真实的物理机一样接入你的局域网拥有独立的IP地址。在宿主机UOS上创建网桥。编辑网络配置文件注意备份sudo nano /etc/netplan/01-netcfg.yaml假设你的物理网卡是enp3s0用ip addr命令查看配置可能如下network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: no optional: yes bridges: br0: interfaces: [enp3s0] dhcp4: yes parameters: stp: false forward-delay: 0保存后应用配置sudo netplan apply。现在宿主机通过网桥br0上网。在virt-manager中修改虚拟机网络。关闭虚拟机打开其配置。选择“虚拟网络接口”将“网络源”从“NAT”改为“桥接设备”。在“设备名称”中选择刚刚创建的br0。启动虚拟机银河麒麟系统内应该就能通过DHCP获取到和宿主机同网段的IP了。7.2 性能优化要点VirtIO驱动 确保虚拟机内磁盘和网络都使用VirtIO半虚拟化驱动。在QEMU命令行或virt-manager配置中我们已指定ifvirtio和virtio-net-pci。银河麒麟V10内核通常已内置这些驱动性能远优于模拟的IDE硬盘和e1000网卡。SPICE增强 在virt-manager的虚拟机配置中可以添加SPICE的增强功能如共享剪贴板、拖放文件。需要安装客户端工具在银河麒麟虚拟机内安装spice-vdagent包如果其软件源中有。在virt-manager配置的“通道”中添加一个spicevmc类型的通道名称设为com.redhat.spice.0。CPU与内存热插拔 如果需要动态调整资源可以在virt-manager的CPU和内存配置中启用热插拔支持但这需要客户机内核支持。8. 常见问题与故障排查实录在实际操作中你几乎一定会遇到一些问题。以下是我踩过的一些坑和解决方案。8.1 安装启动时黑屏或卡住问题描述 点击启动后virt-manager窗口黑屏或者一直停留在EFI Shell或TianoCore启动界面无法进入安装引导。排查与解决检查UEFI固件 这是最常见的原因。确认在虚拟机配置中正确指定了ARM架构的UEFI固件文件如AAVMF_CODE.fd。路径错误或文件缺失会导致无法引导。使用find /usr -name *aarch64*.fd或find /usr -name *AAVMF*.fd来查找正确的文件。检查ISO镜像 确保下载的银河麒麟V10镜像是完整的ARM64版本并且没有损坏。可以重新下载或校验SHA256。调整机器类型 尝试将“机器类型”从virt换成virt-6.2或virt-6.1一个稍旧的版本有时新版本的QEMU与某些镜像的兼容性会有问题。关闭安全启动 在虚拟机配置的“概述”或“引导选项”中寻找“安全启动”或“Secure Boot”设置尝试将其关闭。某些国产系统镜像可能没有合适的签名。8.2 虚拟机内图形界面异常或卡顿问题描述 进入系统后桌面响应慢拖动窗口卡顿或者分辨率不正确。排查与解决更换显卡模型 默认的virtio-gpu-pci对大多数Linux发行版支持良好但如果遇到问题可以尝试换成virtio-vga模拟VGA兼容性更好或简单的std标准VGA兼容性最好但功能少。在virt-manager的“显示协议”硬件配置中更改。安装增强工具Guest Agent 如前所述在银河麒麟虚拟机内安装spice-vdagent可以显著改善图形性能、支持动态分辨率调整和共享剪贴板。你需要确保银河麒麟的软件源可用然后尝试sudo apt install spice-vdagent如果基于Debian/Ubuntu或使用麒麟自己的包管理器。分配更多显存 在virt-manager的“显示协议”配置中可以增加“显存”大小例如增加到32MB或64MB。8.3 网络无法连接问题描述 虚拟机启动后无法ping通外网甚至无法获取IP地址。排查与解决检查网络配置模式 确认你使用的是“NAT”还是“桥接”。NAT模式下虚拟机可以访问外网但宿主机外的机器无法直接访问虚拟机。检查虚拟机内网络服务 进入银河麒麟系统查看网络管理器是否正常运行。尝试使用命令sudo dhclient eth0或你的网卡名如ens3手动获取IP。使用ip addr查看网卡状态。检查防火墙 无论是宿主机UOS还是虚拟机银河麒麟检查防火墙是否阻止了相关流量。可以暂时关闭防火墙测试sudo systemctl stop firewalld如果使用firewalld或sudo ufw disable如果使用ufw。用户模式网络问题 如果使用默认的“用户模式”网络NAT有时会因为端口冲突等问题失效。尝试重启libvirtd服务sudo systemctl restart libvirtd。8.4 统信UOS宿主机卡顿或资源占用高问题描述 运行虚拟机后宿主机UOS变得非常卡顿。排查与解决资源超配 检查你是否给虚拟机分配了过多的CPU核心和内存。确保宿主机本身有足够的空闲资源。例如8核16G的宿主机分配给虚拟机4核8G是比较合理的如果分配6核12G宿主机就可能资源紧张。I/O瓶颈 虚拟机磁盘镜像如果放在机械硬盘上I/O性能会成为瓶颈导致宿主机和虚拟机都卡。强烈建议将虚拟机磁盘文件.qcow2放在SSD硬盘上。检查KSM Linux内核同页合并KSM服务可能会在后台合并内存页占用CPU。你可以调整或关闭它sudo systemctl disable --now ksmtuned。8.5 虚拟机无法识别U盘等USB设备问题描述 想将宿主机UOS上的U盘挂载到虚拟机内使用但虚拟机里看不到。排查与解决在virt-manager中选择正在运行的虚拟机点击菜单栏“虚拟机器” - “重定向USB设备”。从列表中选择你想要连接的USB设备如你的U盘。设备会被断开与宿主机的连接并连接到虚拟机。在银河麒麟系统内它应该会被自动识别并挂载。注意 在断开重定向前务必先在虚拟机内安全弹出该设备否则可能导致数据损坏。这个过程虽然步骤不少但每一步都有其必要性。从方案选型到最终调优本质上是在理解ARM虚拟化原理的基础上合理配置工具链。一旦成功跑通你就拥有了一个在统信UOS ARM生态下灵活、高效的银河麒麟V10 ARM测试环境无论是对于软件开发、系统适配还是日常学习都是一个非常强大的工具。最关键的是通过命令行和图形化两种方式的管理经验能让你更深入地理解QEMU/KVM这套开源虚拟化方案的精髓。
返回列表