保姆级教程:在Fedora/CentOS上用QEMU-KVM跑起ARM64虚拟机(附Debian镜像下载)

张开发
2026/4/20 20:57:25 15 分钟阅读

分享文章

保姆级教程:在Fedora/CentOS上用QEMU-KVM跑起ARM64虚拟机(附Debian镜像下载)
在Fedora/CentOS上构建高性能ARM64虚拟化环境的完整指南对于需要在x86架构上开发和测试ARM64应用的工程师来说搭建一个稳定高效的虚拟化环境是刚需。本文将带你从零开始在Fedora或CentOS系统上配置完整的QEMU-KVM虚拟化栈并针对ARM64架构进行深度优化。1. 环境准备与依赖安装在开始之前确保你的系统满足以下基本要求Fedora 32及以上或CentOS 8/Stream支持硬件虚拟化的CPUIntel VT-x或AMD-V至少8GB内存推荐16GB50GB可用磁盘空间首先安装必要的软件包# Fedora系统 sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer edk2-aarch64 # CentOS系统 sudo yum install -y qemu-kvm libvirt virt-install virt-viewer edk2-aarch64验证KVM模块是否加载lsmod | grep kvm预期应该看到kvm_intel或kvm_amd以及kvm模块。如果没有需要手动加载sudo modprobe kvm sudo modprobe kvm_intel # Intel CPU # 或 sudo modprobe kvm_amd # AMD CPU提示对于生产环境建议在BIOS中永久启用虚拟化支持而不是每次启动后手动加载模块。2. 获取ARM64固件与系统镜像ARM架构与x86不同需要专门的固件文件来启动虚拟机。我们将使用Linaro提供的UEFI固件wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd对于操作系统镜像Debian提供了轻量级的网络安装镜像wget https://d-i.debian.org/daily-images/arm64/daily/netboot/mini.iso镜像下载完成后建议验证SHA256校验和sha256sum mini.iso3. 配置高性能ARM64虚拟机3.1 基础虚拟机创建使用以下命令创建一个基础ARM64虚拟机qemu-system-aarch64 \ -M virt \ -cpu cortex-a72 \ -accel kvm \ -smp 4 \ -m 4096 \ -drive fileQEMU_EFI.fd,ifpflash,formatraw,readonlyon \ -drive ifnone,filearm64vm.qcow2,formatqcow2,idhd0 \ -device virtio-blk-device,drivehd0 \ -cdrom mini.iso \ -netdev user,idnet0 \ -device virtio-net-device,netdevnet0 \ -nographic \ -serial mon:stdio关键参数说明参数说明-M virt使用QEMU的通用ARM虚拟平台-cpu cortex-a72模拟Cortex-A72 CPU-accel kvm启用KVM加速-smp 4分配4个CPU核心-m 4096分配4GB内存3.2 性能优化配置为了获得接近原生ARM的性能我们需要进行多项优化CPU拓扑优化-smp 4,cores2,threads2,sockets1内存大页支持-object memory-backend-file,idmem,size4G,mem-path/dev/hugepages,shareon \ -numa node,memdevmem网络性能优化-netdev tap,idnet0,ifnametap0,scriptno,downscriptno \ -device virtio-net-pci,netdevnet0,mac52:54:00:12:34:56磁盘IO优化-drive ifnone,filearm64vm.qcow2,formatqcow2,idhd0,cachenone,aiothreads \ -device virtio-blk-device,drivehd0,iothreadiothread0 \ -object iothread,idiothread04. 系统安装与配置启动虚拟机后按照Debian的标准安装流程进行操作。几个关键注意事项分区时建议使用GPT分区表选择ext4或xfs文件系统安装openssh-server以便远程访问安装完成后可以移除CDROM参数并启动虚拟机qemu-system-aarch64 \ -M virt \ -cpu cortex-a72 \ -accel kvm \ -smp 4 \ -m 4096 \ -drive fileQEMU_EFI.fd,ifpflash,formatraw,readonlyon \ -drive ifnone,filearm64vm.qcow2,formatqcow2,idhd0 \ -device virtio-blk-device,drivehd0 \ -netdev user,idnet0,hostfwdtcp::2222-:22 \ -device virtio-net-device,netdevnet0 \ -nographic \ -serial mon:stdio5. 常见问题解决方案5.1 启动速度慢如果虚拟机启动特别慢尝试以下方法确保启用了KVM加速-accel kvm增加CPU和内存分配使用SSD存储禁用图形界面-nographic5.2 BIOS加载失败如果遇到UEFI固件加载问题验证固件文件路径是否正确检查文件权限尝试直接加载内核-kernel vmlinuz \ -initrd initrd.img \ -append root/dev/vda1 consolettyAMA05.3 网络连接问题对于网络连接问题检查用户模式网络配置考虑使用桥接网络验证端口转发设置6. 高级使用技巧6.1 使用virt-manager管理虚拟机虽然命令行功能强大但也可以使用图形界面工具sudo dnf install -y virt-manager sudo systemctl start libvirtd然后通过virt-manager添加ARM64虚拟机。6.2 快照管理QEMU支持多种快照方式# 创建内部快照 qemu-img snapshot -c snapshot1 arm64vm.qcow2 # 列出快照 qemu-img snapshot -l arm64vm.qcow2 # 恢复到快照 qemu-img snapshot -a snapshot1 arm64vm.qcow26.3 性能监控使用以下工具监控虚拟机性能# 在宿主机上 sudo perf kvm --host stat record -a -o perf.data # 在虚拟机内部 apt install sysstat sar -u 1 107. 自动化部署脚本为了简化重复部署过程可以创建自动化脚本#!/bin/bash VM_NAMEarm64vm CPU_CORES4 MEMORY4096 DISK_SIZE20G # 创建磁盘镜像 qemu-img create -f qcow2 ${VM_NAME}.qcow2 ${DISK_SIZE} # 启动安装 qemu-system-aarch64 \ -name ${VM_NAME} \ -M virt \ -cpu cortex-a72 \ -accel kvm \ -smp ${CPU_CORES} \ -m ${MEMORY} \ -drive fileQEMU_EFI.fd,ifpflash,formatraw,readonlyon \ -drive ifnone,file${VM_NAME}.qcow2,formatqcow2,idhd0 \ -device virtio-blk-device,drivehd0 \ -cdrom mini.iso \ -netdev user,idnet0,hostfwdtcp::2222-:22 \ -device virtio-net-device,netdevnet0 \ -nographic \ -serial mon:stdio保存为create_arm64_vm.sh并赋予执行权限chmod x create_arm64_vm.sh

更多文章