首先,macOS下为什么要用源码编译安装QEMU而不是直接用brew?
brew安装的是编译好的二进制文件,且版本不是最新的,有些不需要的特性它编译进去了,而有些需要的特性它反而没有,比如HVF
加速器。而源码编译则可以根据自己的需要定制。
由于编译过程中依赖nijia
,首先安装它
brew install ninja
假定是在Downloads
目录下执行的如下操作。
git clone https://git.qemu.org/git/qemu.git
cd qemu
mkdir build && cd build
../configure --target-list=aarch64-softmmu,x86_64-softmmu --enable-hvf
make
Hypervisor功能是我们要用的,用来加速虚拟机运行,不然就等着虚拟机卡成PPT吧。所以要加上参数--enable-hvf
。
注意点:
hvf
是只有macOS才有的加速功能,它使用native Hypervisor framework,所以当且仅当主机环境与虚拟机环境相同时才生效,比如如果你的Mac是Intel的CPU,那么编译出来的qemu-system-x86_64
可以使用hvf
加速,而qemu-system-aarch64
则不能;反之,M1系列芯片的Mac编译qemu-system-aarch64
可以使用hvf
加速,而qemu-system-x86_64
则不能。
可以使用qemu-system-aarch64 -accel help
查看支持的加速器列表。
可以在https://wiki.qemu.org/Hosts/Mac
查看支持的target列表。
编译成功后把执行路径加到环境变量中
export PATH=$PATH:~/Downloads/qemu/build/
然后就可以使用qemu的相关命令了。
有了Hypervisor的支持,虚拟机的运行速度就会大大提高,比如M1下的Windows ARM版和Linux。