使用 Linux 工作,如果偶爾須要用到 Windows 的軟體,以前我的做法是安裝雙系統,須要的時候再切到 Windows。
不想每次要切換系統就重新開機的話,可以直接使用虛擬機如 VirtualBox,在 Linux host 安裝 Windows VM,在 KVM 的幫助之下,效能也還可以。
一直到最近才發現 Quickemu,底層同樣基於 KVM,也同樣支援跨 host/guest 的互動如複製貼上、共享資料夾等等,但提供更多開箱即用的設定,讓使用者免去繁複的設定,幾乎一個命令就可以跑起 Windows VM。
Quickemu 本質是把各種 guest OS 常用的設定,用 QEMU 的命令參數組裝起來,看著看著就動了歪腦筋,不知道能不能直接把雙系統另一端的 Windows 當作 VM 跑起來?這樣在另一邊安裝的軟體、設定都不用在 VM 裡重新跑一次,每次的變動也都會直接留在雙系統的 Windows 裡,哪天要長時間直接切過去也沒問題。大概就跟 macOS 上的 Parallel Desktop 功能類似吧。
讓 agent 弄了一個多小時,最後成功了。
Host 這邊的設定還算簡單,就是把 Windows EFI 和 Windows 主分割區掛載給 VM 當開機蝶。其他如顯示卡、網路卡等模擬,Quickemu 會有預設值。
Windows 分割區比較麻煩,主要包括:
- 要在 Windows 內先關閉「只能用 pin 碼登入」的選項,因為作為 guest 時使用的是軟體 TPM
- 不能啟用 BitLocker,也就是硬碟加密,原因同上
- 停用 Windows 的快速啟動,不然 NTFS 會是 dirty 狀態,直接拿來開機可能會讓資料或遺失
雖然跑一般 Windows 軟體很方便,但玩遊戲、尤其是 3D 遊戲就不建議在此 guest Windows 玩。如前所述,顯示卡是模擬出來的,用 Quickemu 就是圖個方便,所以我也沒有去處理 GPU pass-through(而且這也要有雙卡才辦得到),因此玩遊戲的效能會非常低下。