必须源码编译QEMU并启用TCG后端,因yum安装仅支持同构虚拟化;需配置目标架构、安装UEFI固件、创建匹配磁盘与启动脚本,并修改libvirt配置以纳管自编译二进制。

在银河麒麟系统上安装QEMU模拟器,必须根据你的真实需求选择路径:若只需运行与宿主机同架构的虚拟机(如aarch64宿主机跑aarch64系统),可直接yum安装;但若要跨架构仿真(如x86_64宿主机跑ARM64银河麒麟V10),则必须源码编译并启用TCG后端,否则虚拟机根本无法启动或卡死在BIOS界面。
同构场景:用yum快速安装QEMU及管理套件
这一步适用于仅需创建与当前系统相同架构虚拟机的用户,比如ARM服务器上部署ARM虚拟机。操作简单,5分钟内完成,但【不支持跨架构仿真】。
执行系统架构确认命令:uname -m
更新yum源缓存:yum clean all && yum makecache
安装libvirt全栈及图形化工具:yum install -y libvirt virt-manager virt-install qemu-kvm virt-viewer
启用并启动服务:systemctl enable libvirtd && systemctl start libvirtd
异构场景:源码编译QEMU启用TCG跨架构能力
这是实现x86_64宿主机运行ARM64银河麒麟、或ARM宿主机运行x86_64系统的唯一可靠路径。预编译包默认关闭TCG,必须手动启用,否则qemu-system-aarch64命令会报错“Unable to find CPU definition”或直接退出。
安装编译依赖:yum install -y gcc gcc-c++ automake libtool zlib-devel glib2-devel bzip2-devel libuuid-devel spice-protocol-devel usbredir-devel libaio-devel flex bison python3-devel
下载QEMU源码(推荐7.2.0及以上):wget https://download.qemu.org/qemu-7.2.0.tar.xz
解压并进入目录:tar xvJf qemu-7.2.0.tar.xz && cd qemu-7.2.0
配置时必须显式指定目标架构和启用TCG解释器:【./configure --target-list=aarch64-softmmu,x86_64-softmmu --enable-tcg-interpreter --prefix=/usr/local】
编译安装:make -j$(nproc) && make install
刷新动态库并验证:ldconfig && /usr/local/bin/qemu-system-aarch64 --version
ARM虚拟机必备:部署UEFI固件
ARM架构虚拟机无法使用传统BIOS引导,缺失UEFI固件将导致“Boot failed: could not read boot disk”错误,且该错误不会提示具体原因,极易误判为镜像损坏。
安装EDK2固件包:yum install -y edk2-aarch64
确认固件文件存在:ls /usr/share/edk2/aarch64/QEMU_EFI.fd
若宿主机是x86_64却要跑ARM64虚拟机,需额外下载对应固件:wget https://releases.linaro.org/components/kernel/uefi-linaro/23.04/release/qemu64/QEMU_EFI.fd -O /usr/share/edk2/aarch64/QEMU_EFI.fd
纳管自编译QEMU到Libvirt
默认libvirtd只识别/usr/bin/qemu-system-*,而自编译版本在/usr/local/bin下,不修改配置会导致virt-manager新建虚拟机时找不到二进制文件,报错“qemu-system-aarch64 not found”。
第一步:编辑libvirt守护进程配置文件:sudo nano /etc/libvirt/qemu.conf
第二步:取消注释并修改binary路径行:qemu_binary = "/usr/local/bin/qemu-system-aarch64"
第三步:重启libvirtd服务:systemctl restart libvirtd
第四步:验证是否生效:virsh capabilities | grep aarch64

















