Run QEMU with hardware virtualization on macOS
在macOS上通過虛擬機器執行其它作業系統,又不想用商業軟體,那麼開源的QEMU是一個比較好的選擇。QEMU的功能支援還是比較全面的,除了功能以外,使用虛擬機器軟體的使用者最關心的就是效能了,一個好訊息是macOS 10.10+版本已經引人了硬體虛擬化支援框架,也就是Hypervisor.framework,另一個好訊息是QEMU也已支援該框架,也就是hvf accelerator。
Requirements
1. macOS 10.10+
2. Macports
Issues
已經使用過的使用者可能已經發現,QEMU使用hvf accelerator並開啟多核是有問題的呀。的確,QEMU使用hvf accelerator以單核執行時沒有問題,當使用-smp引數指定多核時,很大概率上虛擬機器硬體初始化都完成不了就宕機了。
不過,好訊息是該問題也已經修復了,導致這個問題的原因是hvf accelerator程式碼設計沒有考慮到虛擬機器啟動後所有hvf vcpu都在並行執行指令,其中包括硬體初始化的I/O模擬操作,多個CPU同時對同一硬體執行初始化顯然是不行的。
Patch (已經提交上游社群,Review中,期望儘快合併)
Install QEMU
cd ~ git clone https://github.com/hevz/macports sudo vim /opt/local/etc/macports/sources.conf
# Add local repositories file:///Users/[YOUR USER NAME]/macports rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default]
cd ~/macports portindex sudo port install qemu
Run Arch Linux
1. 下載Arch Linux安裝ISO映象。
2. 建立一個虛擬機器磁碟映象。
3. 開始安裝新的系統。
4. 啟動安裝後的系統。
mkdir ~/system/images qemu-img create -f qcow2 ~/system/images/arch.qcow2 40G qemu-system-x86_64 -no-user-config -nodefaults -show-cursor \ -M pc-q35-3.1,accel=hvf,usb=off,vmport=off \ -cpu host -smp 4,sockets=1,cores=2,threads=2 -m 4096 \ -realtime mlock=off -rtc base=utc,driftfix=slew \ -drive file=~/system/images/arch.qcow2,if=none,format=qcow2,id=disk0 \ -device virtio-blk-pci,bus=pcie.0,addr=0x1,drive=disk0 \ -netdev user,id=net0,hostfwd=tcp::2200-:22 \ -device virtio-net-pci,netdev=net0,bus=pcie.0,addr=0x2 \ -device virtio-keyboard-pci,bus=pcie.0,addr=0x3 \ -device virtio-tablet-pci,bus=pcie.0,addr=0x4 \ -device virtio-gpu-pci,bus=pcie.0,addr=0x5 \ -cdrom ~/archlinux-2019.01.01-x86_64.iso -boot d
安裝完成後,刪除qemu-system-x86_64最後一行命令即可啟動新系統。
Over!