macOS 平台安装 QEMU 与 HVF 加速配置
macOS 上的 QEMU
QEMU 100% 兼容 macOS,Apple Silicon(M1/M2/M3/M4)和 Intel Mac 都能跑。macOS 的硬件虚拟化加速叫 HVF(Hypervisor.framework),QEMU 6.1+ 原生支持,不需要额外安装驱动。
安装方式
Homebrew(推荐)
brew install qemu
这是最干净的方式。brew 会拉取预编译 bottle(Apple Silicon 和 Intel 都提供),几秒完成。
MacPorts
sudo port install qemu
MacPorts 装的是从源码编译的版本,安装时间比 brew 长。
Fink
fink install qemu
Fink 的使用相对小众,适合已经在用 Fink 管理包的老用户。
源码编译
git clone https://gitlab.com/qemu-project/qemu.git
cd qemu
./configure --enable-hvf --enable-cocoa --enable-sdl
make -j$(sysctl -n hw.ncpu)
sudo make install
源码编译适合需要最新特性或自定义构建的用户。
HVF 加速
确认 HVF 可用
macOS 10.15 (Catalina) 及以后版本都自带 HVF。不需要额外步骤。验证:
qemu-system-x86_64 -accel hvf -cpu host -smp 2 -m 256M -nographic
能启动成功(几秒后退出)就对了。报错 accelerator 'hvf' not found 说明你的系统版本太老。
Apple Silicon 特殊说明
在 M1/M2/M3 Mac 上用 HVF:
- Guest 必须是 ARM64。x86 虚拟机只能用 TCG 模拟(因为 Apple Silicon 没有 x86 硬件)
-cpu host在 Apple Silicon 上可能不可用,推荐用-cpu max或-cpu host,pauth-impdef=on(某些 Guest OS 对 pauth 标志敏感)- 模拟 x86 OS 时用
-accel tcg,速度会慢很多
# Apple Silicon Mac 上加速跑 ARM64 Guest ✅
qemu-system-aarch64 -accel hvf -M virt -m 8G -cpu max ...
# Apple Silicon Mac 上模拟 x86 Guest(只有 TCG)⚠️
qemu-system-x86_64 -accel tcg -m 4G ...
Intel Mac
Intel Mac 上 HVF 可以加速同架构(x86_64)Guest,跨架构(比如模拟 ARM64)仍然只能用 TCG。
用 brew 安装后的路径说明
which qemu-system-x86_64
# /opt/homebrew/bin/qemu-system-x86_64 (Apple Silicon)
# /usr/local/bin/qemu-system-x86_64 (Intel Mac)
qemu-system-aarch64 --version
# 确认 ARM64 模拟器也装好了
Homebrew 安装的 QEMU 已经把所有架构的模拟器都装上了(x86_64、aarch64、ppc64、riscv64 等)。
创建磁盘镜像
qemu-img create -f qcow2 ~/VMS/ubuntu-arm64.qcow2 10G
和 Linux/Windows 一致。
启动第一个虚拟机(Apple Silicon)
# 下载 Ubuntu ARM64 镜像后
qemu-system-aarch64 \
-accel hvf \
-M virt \
-m 8G \
-cpu max \
-cdrom ~/Downloads/ubuntu-24.04-live-server-arm64.iso \
-drive file=~/VMS/ubuntu-arm64.qcow2,format=qcow2 \
-nic user,model=virtio-net-pci \
-nographic
macOS 上的图形前端
QEMU 默认弹出 Cocoa 窗口。如果你需要更丰富的管理界面:
- virt-manager(通过 Homebrew 装,部分功能需要 X11)
- UTM(基于 QEMU 的 macOS/iOS GUI 前端,App Store 可下载,闭源付费但好用)
- CocoaQ(开源 macOS GUI 前端)
macOS 常见问题
HVF 报错 "host doesn't support"
qemu-system-aarch64: error: HVF: ... host doesn't support requested feature
换成 -cpu host,pauth-impdef=on 或 -cpu max。某些 Guest OS 对 ARM64 的 pauth(指针认证)特性敏感。
端口转发和防火墙
macOS 防火墙默认不拦截 QEMU 网络。如果遇到网络不通,先排查 QEMU 命令行里的 -nic 参数是否正确。
macOS 新版本的支持策略
QEMU 对 macOS 的支持周期:当前 macOS 版本 + 上一版本。更老版本的 macOS 可能跑不了最新版 QEMU。