环境
-
硬件:Apple Mac,芯片 Apple M3(arm64)
-
系统:macOS 26.6.2(Tahoe 系)
-
包管理:Homebrew 6.0.21,前缀 /opt/homebrew
-
网络:本机 socks5 代理 127.0.0.1:7890(Clash 类客户端默认端口)
目标
在 Mac 上安装 UTM 与 QEMU,形成「图形界面 + 命令行」双通道的虚拟化环境,后续由 agent 通过命令行直接创建、启动、停止虚拟机,不依赖 GUI 点击。
前置检查
安装前先确认两个前提:brew 可用、代理端口在监听。
which brew
brew --version | head -1
nc -z -w 2 127.0.0.1 7890 && echo "7890 端口开放"
结果:brew 位于 /opt/homebrew/bin/brew,版本 6.0.21;7890 端口开放。
代理设置
关键点:Bash 每次调用是独立 shell 进程,环境变量不跨调用保留。因此每一条需要联网的命令都要重新 export 代理变量,不要指望第一次设置后一直生效。
export ALL\_PROXY="socks5h://127.0.0.1:7890"
export HTTPS\_PROXY="socks5h://127.0.0.1:7890"
export HTTP\_PROXY="socks5h://127.0.0.1:7890"
-
使用 socks5h 而非 socks5:DNS 解析也走代理,避免本地 DNS 污染导致 brew 解析失败
-
brew 内部走 curl 下载,读取上述环境变量
安装 UTM
UTM 是免费开源的虚拟化管理前端,基于 QEMU,以 cask 形式安装为 GUI 应用。
export ALL\_PROXY="socks5h://127.0.0.1:7890"
export HTTPS\_PROXY="socks5h://127.0.0.1:7890"
export HTTP\_PROXY="socks5h://127.0.0.1:7890"
brew install --cask utm
安装结果:/Applications/UTM.app。cask 装的是 GUI app,不需要 sudo。
安装 QEMU
QEMU 本体提供全部命令行工具:qemu-system-aarch64、qemu-img 等。UTM 内部自带 QEMU 运行时,但装在 PATH 里的独立 QEMU 让命令行操作更直接。
export ALL\_PROXY="socks5h://127.0.0.1:7890"
export HTTPS\_PROXY="socks5h://127.0.0.1:7890"
export HTTP\_PROXY="socks5h://127.0.0.1:7890"
brew install qemu
安装结果:qemu 11.1.1,自动装好依赖 p11-kit、libslirp、libusb、vde。
注意事项:
-
brew 有进程锁,两个 install 不能并行执行,必须串行
-
qemu 本体 bottle 约 729MB,加依赖下载量不小,建议放后台执行并等待完成
-
安装完成后 brew 会自动清理旧缓存,属正常行为
验证结果
ls -d /Applications/UTM.app
/Applications/UTM.app/Contents/MacOS/utmctl list
/opt/homebrew/bin/qemu-system-aarch64 --version
/opt/homebrew/bin/qemu-img --version
预期输出:
-
/Applications/UTM.app 存在
-
utmctl 输出 VM 列表(空列表正常),注意 utmctl 不支持 --version 参数
-
QEMU emulator version 11.1.1
-
qemu-img version 11.1.1
给 agent 的注意事项
-
utmctl 不在 PATH 里,完整路径是 /Applications/UTM.app/Contents/MacOS/utmctl,建议直接用绝对路径或建软链
-
utmctl 常用子命令:list、start、stop、clone,覆盖启停与复制
-
首次使用 UTM 前需要手动打开一次 UTM.app 完成初始化(申请虚拟化权限),agent 无法代点
-
UTM 的 .utm 虚拟机包本质是 plist 配置加镜像文件,可用脚本生成,创建虚拟机不强制开 GUI
-
裸 QEMU 与 UTM 分工:UTM 管虚拟机生命周期,QEMU 提供底层全部参数自由度
-
系统架构是 arm64,安装 qemu 会得到 aarch64 系列工具,创建 ARM 客户机时走硬件虚拟化(Apple Hypervisor),性能接近原生