【其他】QEMU 在 Windows 和 CentOS 7 下安装及运行 ARM 操作系统指南

QEMU 在 Windows 和 CentOS 7 下安装及运行 ARM 操作系统指南

本文总结如何在 WindowsCentOS 7 宿主机上安装 QEMU,并通过 QEMU 模拟 ARM 架构(aarch64/armv7)的操作系统。


一、通用准备工作

无论哪种宿主机,都需要以下文件:

  1. QEMU 程序(Windows 安装包或 CentOS 软件包)
  2. UEFI 固件文件QEMU_EFI.fd,用于 ARM 虚拟机引导)
  3. ARM 操作系统安装镜像(如麒麟 ARMv7、CentOS ARM64、Ubuntu ARM64 等)

架构选择 :虽然可以模拟 ARMv7(32位),但推荐使用 ARM64(aarch64) 镜像,兼容性和稳定性更好。

若使用 ARMv7 镜像,启动命令中需将 CPU 型号改为 -cpu cortex-a15 等 32 位处理器。


二、Windows 下安装与运行

2.1 安装 QEMU

  1. 访问 QEMU for Windows 官方下载页,下载 qemu-w64-setup-<版本>.exe
  2. 运行安装程序,建议安装路径为 D:\qemu(避免空格和权限问题)。
  3. D:\qemu 添加到系统 PATH 环境变量 ,以便在任意命令行使用 qemu-system-aarch64 等命令。

2.2 准备文件

创建一个工作目录,例如 D:\Kylin-ARM,放入以下文件:

  • QEMU_EFI.fd(从 Linaro 快照 下载)
  • ARM 系统镜像,如 Kylin_Server_V10_SP3_ARMV7.iso(或 CentOS-7-aarch64.iso

2.3 创建虚拟硬盘

打开 命令提示符(cmd),进入工作目录,执行:

cmd 复制代码
cd /d D:\Kylin-ARM
qemu-img create -f qcow2 kylin-system.qcow2 50G

2.4 启动安装

执行以下命令启动安装程序(以 ARM64 为例,若为 ARMv7 请将 -cpu cortex-a72 改为 -cpu cortex-a15):

cmd 复制代码
qemu-system-aarch64 ^
  -m 4096 ^
  -cpu cortex-a72 -smp 4 ^
  -M virt ^
  -bios QEMU_EFI.fd ^
  -device VGA ^
  -device nec-usb-xhci -device usb-kbd -device usb-mouse ^
  -drive if=none,file=kylin-system.qcow2,id=hd0 ^
  -device virtio-blk-device,drive=hd0 ^
  -drive if=none,file=Kylin_Server_V10_SP3_ARMV7.iso,id=cdrom,media=cdrom ^
  -device virtio-scsi-device -device scsi-cd,drive=cdrom ^
  -netdev user,id=net0 -device virtio-net-pci,netdev=net0

参数说明

  • -m 4096:分配 4GB 内存(可调整)
  • -cpu cortex-a72:模拟 ARMv8 处理器
  • -smp 4:4 个 CPU 核心
  • -bios:指定 UEFI 固件
  • -drive ...:挂载虚拟硬盘和 ISO 镜像
  • -netdev user:用户模式网络(可访问外网,支持端口转发)

安装过程较慢(可能 1~2 小时),完成后系统会自动重启。

2.5 日常启动

安装完成后,移除 ISO 挂载,使用精简命令:

cmd 复制代码
qemu-system-aarch64 ^
  -m 4096 ^
  -cpu cortex-a72 -smp 4 ^
  -M virt ^
  -bios QEMU_EFI.fd ^
  -device VGA ^
  -device nec-usb-xhci -device usb-kbd -device usb-mouse ^
  -drive if=none,file=kylin-system.qcow2,id=hd0 ^
  -device virtio-blk-device,drive=hd0 ^
  -netdev user,id=net0 -device virtio-net-pci,netdev=net0

可将该命令保存为 start-kylin.bat 方便双击运行。


三、CentOS 7 下安装与运行

3.1 安装 QEMU

方案一:使用 EPEL 仓库(推荐)
bash 复制代码
sudo yum install epel-release -y
sudo yum install qemu-system-aarch64 qemu-img -y
方案二:源码编译(获取最新版)
bash 复制代码
# 安装编译依赖
sudo yum install gcc glib2-devel zlib-devel pixman-devel -y

# 下载源码(以 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

# 仅编译 aarch64 目标
./configure --target-list=aarch64-softmmu
make -j $(nproc)
sudo make install   # 可执行文件在 /usr/local/bin/

3.2 准备文件

创建工作目录并下载所需文件:

bash 复制代码
mkdir ~/arm-vm
cd ~/arm-vm

# 下载 UEFI 固件
wget https://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-AARCH64/RELEASE_GCC5/QEMU_EFI.fd

# 下载 ARM64 系统镜像(例如 CentOS 7 aarch64)
wget http://mirrors.huaweicloud.com/centos-altarch/7.6.1810/isos/aarch64/CentOS-7-aarch64-Everything-1810.iso

3.3 创建虚拟硬盘

bash 复制代码
qemu-img create -f qcow2 centos-arm64.qcow2 20G

3.4 启动安装(无图形界面模式)

由于 CentOS 7 服务器通常没有图形环境,使用 -nographic 将控制台输出到终端:

bash 复制代码
qemu-system-aarch64 \
  -m 2048 \
  -cpu cortex-a57 \
  -smp 2 \
  -M virt \
  -bios QEMU_EFI.fd \
  -drive if=none,file=centos-arm64.qcow2,id=hd0 \
  -device virtio-blk-device,drive=hd0 \
  -drive if=none,file=CentOS-7-aarch64-Everything-1810.iso,id=cdrom,media=cdrom \
  -device virtio-scsi-device -device scsi-cd,drive=cdrom \
  -netdev user,id=net0,hostfwd=tcp::5555-:22 \
  -device virtio-net-pci,netdev=net0 \
  -vga virtio \
  -nographic

参数说明

  • -nographic:将串口/控制台重定向到当前终端,适合无图形界面的服务器。
  • hostfwd=tcp::5555-:22:将宿主机的 5555 端口转发到虚拟机的 22 端口(SSH),方便远程连接。
  • -vga virtio:虚拟显卡驱动。

安装过程全终端交互,按提示完成系统安装。

3.5 日常启动(无 ISO)

bash 复制代码
qemu-system-aarch64 \
  -m 2048 \
  -cpu cortex-a57 \
  -smp 2 \
  -M virt \
  -bios QEMU_EFI.fd \
  -drive if=none,file=centos-arm64.qcow2,id=hd0 \
  -device virtio-blk-device,drive=hd0 \
  -netdev user,id=net0,hostfwd=tcp::5555-:22 \
  -device virtio-net-pci,netdev=net0 \
  -vga virtio \
  -nographic

保存为 start-centos-arm.sh 并赋予执行权限:chmod +x start-centos-arm.sh

3.6 (可选)使用 virt-manager 图形化管理

若 CentOS 7 安装了桌面环境,可安装 virt-manager

bash 复制代码
sudo yum install virt-manager libvirt -y
sudo systemctl start libvirtd

然后配置 UEFI 支持(编辑 /etc/libvirt/qemu.conf,添加 nvram 路径),重启服务后用 virt-manager 新建 ARM 虚拟机。


四、常见问题与注意事项

问题 解决方案
启动后黑屏 / 无法引导 1. 确认使用了正确的 QEMU_EFI.fd 固件。 2. 尝试将 CPU 型号改为 -cpu max。 3. 若镜像为 ARMv7,改用 -cpu cortex-a15 并添加 -machine type=virt
Windows 报错 VBOX_E_PLATFORM_ARCH_NOT_SUPPORTED 该错误是 VirtualBox 的限制,请使用 QEMU。
安装极慢 正常现象,QEMU 为软件模拟,性能约为物理机的 10%~30%。可适当增加 -m 内存和 -smp 核心数。
网络不通 检查 -netdev user 参数是否完整。如需 SSH 连接,确保添加 hostfwd
宿主机 CPU 占用 100% 正常,QEMU 模拟 ARM 指令会消耗大量 CPU 资源。可尝试降低 -smp 核心数。

五、多虚拟机同时运行

如需同时运行多个 ARM 虚拟机,可以采用以下方法:

  • 多开模式 :分别创建独立的虚拟硬盘文件,使用不同的端口转发(如 hostfwd=tcp::5555-:22::5556-:22),分别启动 QEMU 进程。
  • Overlay 镜像模式 :共享一个基础镜像(base.qcow2),为每个实例创建差异镜像:
    qemu-img create -f qcow2 -b base.qcow2 -F qcow2 vm1-overlay.qcow2
    可大幅节省磁盘空间。
  • 网络集群:使用 TAP 网桥或 Docker 容器化 QEMU 实现多节点互联。

资源要求:同时运行 3 个 2GB 内存的 ARM 虚拟机,宿主机建议至少 16GB 内存 + 多核 CPU。


六、总结

宿主机 安装方式 启动命令特点
Windows 下载安装包,配置 PATH 图形窗口显示,需添加 -device VGA 等显示设备
CentOS 7 EPEL 仓库或源码编译 常使用 -nographic 终端模式,可配置端口转发

无论哪种环境,核心步骤均为:

  1. 安装 QEMU
  2. 准备 UEFI 固件和 ARM 镜像
  3. 创建虚拟硬盘
  4. 使用 qemu-system-aarch64 启动安装
  5. 后续启动移除 ISO 挂载

最后建议 :由于 ARMv7 兼容性不确定,若遇到启动失败,请优先下载一个标准的 ARM64(aarch64) 发行版(如 Ubuntu Server、CentOS 7 aarch64)测试 QEMU 环境是否正常,再尝试运行你的麒麟 ARMv7 镜像。

如果在操作中遇到任何具体错误,欢迎提供报错信息,以便进一步排查。

相关推荐
私人珍藏库2 小时前
[Windows] 央视影音v6.0.4.1绿色版
windows·工具·软件·影音·多功能
tumeng07112 小时前
Linux(CentOS)安装 Nginx
linux·nginx·centos
金刚狼883 小时前
UUID和Name不在同一条BLE广播报文里
c++·windows
somi73 小时前
ARM-08-I.MX6U UART 串口
arm开发·单片机·嵌入式硬件·自用
observe1013 小时前
ARM学习之时钟,EPIT,GPT
arm开发·学习
誰能久伴不乏3 小时前
从数字世界到物理引擎:用 PWM 撕开 0 和 1 的结界
linux·arm开发·c++·qt
nudt_qxx3 小时前
Ubuntu 26.04 换国内源 清华源 阿里源 中科大源 华为源
linux·windows·ubuntu
果果燕3 小时前
ARM嵌入式学习(一)---ARM基础概念学习
arm开发·学习
桌面运维家4 小时前
Windows性能优化:任务管理器深度使用指南
windows·性能优化