這篇文章Ivon將解說在GNU/Linux系統,用Virt Manager安裝Microsoft Windows 11系統虛擬機的過程。並解說一些常用操作技巧,讓你可以在自在的於Linux系統跑Windows VM。
Windows 11與Windows 10虛擬機的安裝方式略有不同,所以Ivon單獨寫一篇解說。Windows 11的"WSA"以及"WSL"在虛擬機內部也可以正常使用。
使用的虛擬機軟體為自由開源的Virt Manager,配上QEMU/KVM。該虛擬機軟體除了免費又高效率外,好處是即使電腦不支援TPM 2.0也可以用套件模擬,讓Windows 11能成功安裝,不需要破解登錄檔。
即使是虛擬機,安裝Windows 11也需要購買序號啟用,否則請低調找Github的Microsoft Activation Scripts這類工具繞過。
1. 確認電腦虛擬化與KVM支援狀況
要安裝Windows 11虛擬機,CPU需為x86_64架構,還要支援虛擬化,通常在BIOS可以啟用。
CPU不支援TPM 2.0沒關係,可以用模擬的。
- 檢查CPU是否支援虛擬化,回傳值不應為0。
|
|
- 檢查KVM核心模組是否已經載入,會看到
intel_kvm
或是amd_kvm
出現在列表
|
|
2. 安裝QEMU與Virt Manager
QEMU是作業系統模擬器,透過KVM核心模組加速。Virt Manager則為包含Libvirt的虛擬機管理工具。
Ubuntu參考這篇安裝
Arch Linux參考這篇安裝
3. 新增Windows 11虛擬機組態
Windows 11的安裝ISO可以免費在微軟官網下載。
開啟Virt Manager,點選左上角新增虛擬機
點選手動安裝
輸入Windows 11
RAM至少給8GB,CPU至少給四核心
建立至少64GB的虛擬硬碟。虛擬硬碟格式是qcow2,會逐漸吃滿分配的硬碟空間。
勾選在安裝前自訂配置
晶片組改為Q35,韌體選擇OVMF_CODE.secboot.fd
點選左下角新增硬體 → 新增虛擬TPM硬體
點選新增儲存 → 裝置類型選擇CDROM,然後再選擇Windows 11的ISO
點選開機選項,確認CDROM在第一順位。
硬碟部份,儘管virtio可以改善硬碟讀取效能,但Windows的virtio常常一更新就出狀況,導致進入BSOD,所以Ivon仍使用較為穩定的SATA。
Windows 11只要UEFI(上面選擇的是OVMF)支援Secure Boot即可安裝,不需要真的啟用Secure Boot。如果你想啟用真正加密,請參考這篇
設定就緒之後,點選左上角「開始安裝」
4. 開始安裝Windows 11虛擬機
開機後一直下一步即可
點選我沒有產品金鑰
為擁有全部Windows功能,建議安裝專業版
安裝至預設的虛擬硬碟
安裝後它會重開機,按照指示設定,進入桌面,等待Windows完成更新。如果開機後還是進入安裝媒體,則自行移除CDROM硬體裝置再重新開機。
5. 常用技巧
5.1. 安裝Spice Tools
在Windows虛擬機裡面,到官網下載安裝檔。
Spice Tools能讓虛擬機與實體機共用剪貼簿,Windows也會自動隨著虛擬機視窗大小縮放解析度 (虛擬機工具列→檢視→縮放檢視→自動將VM調整至與視窗大小相同)。
如果之後要GPU直通,請勿安裝Spice Tools。
5.2. 共享資料夾
如果想要與QEMU虛擬機共享資料夾,可考慮用SSHFS-win掛載本機Linux的目錄。
Linux實體機的區域IP可以用ip addr
指令查看。
由於Virt Manager預設是使用NAT網路,所以每個虛擬機會分配到一個區域IP,就像區域網路多出一部電腦。於是在Windows虛擬機內,要掛載SSHFS,就是輸入Linux實體機IP:要掛載的路徑
來掛載SSHFS。
5.3. 隱藏KVM虛擬化狀態
(選擇性) 不讓Windows工作管理員偵測到目前是處於虛擬環境。以前Nvidia的驅動一偵測到虛擬環境就會不給裝,但現在新版驅動已經無必要隱藏KVM。
開啟Virt Manager首頁,點選編輯 → 偏好設定 → 啟用XML編輯
確認Windows 11的硬體列表 → CPU數的設定為「複製主機CPU配置」
於概覽 → 編輯XML,找到
</features>
欄位,於上方加入<kvm><hidden state='on'/></kvm>
,點選套用。
5.4. 於KVM虛擬機內部啟用Hyper-V
參考自Nested Virtualization - Hyper-V 2019 in qemu-kvm – /techblog
QEMu要達成巢狀虛擬化是有可能的。透過調整QEMU的設定,即可在虛擬機裡啟用Hyper-V,讓Windows跑Winsows Subsystem for Linux(WSL)與Windows Susbsytem for Android(WSA)。
編輯虛擬機硬體 → CPU數,編輯XML,找到<features>
處,加入以下內容,將CPU設定為虛擬Skylake-Server-noTSX-IBRS
|
|
再點選套用。
5.4. GPU直通改善圖形效能
QEMU/KVM的顯示卡Virtio可以透過Virglrenderer達成3D硬體加速,但僅適用於Linux客體機,不適用Windows。所以不論用哪個顯示卡,效能都不會太高。
最好的作法是將Linux的獨立顯示卡pass給Windows 11的虛擬機,使其能執行3D應用程式與跑AI計算,值得一提的是現在Nvidia不再禁止虛擬機安裝驅動了。
5.5. 遠端存取Windows虛擬機
從手機、筆記型電腦的遠端連線程式,存取Windows虛擬機桌面。
這邊提供一個Ivon用過的簡單暴力解決方案:
於Linux實體機啟用SSH服務,並安裝ZeroTier
在Windows虛擬機也安裝ZeroTier
參考微軟說明,啟用Windows內建的RDP遠端桌面。此遠端桌面協定傳輸效率高,即使在低頻寬的情況下仍反應迅速。
在筆電下載Remmina客戶端,協定選RDP,輸入Windows虛擬機的ZeroTier IP,即可連線到遠端Windows桌面。
順帶一提,Virt Manager的Windows虛擬機可以用指令遠端開機:
|
|
5.6. 備份與還原虛擬機
參考自Backup and Restore KVM Vms. Introduction - Sylia CH
在備份Windows 11虛擬機的時候,除了備份組態與虛擬硬碟以外,還要記得備份EFI Variables。
- 首先是備份,先將虛擬機關機。備份虛擬機XML組態到
/run/media/user/SSD2/
的第二個硬碟
|
|
- 備份虛擬機硬碟到
SSD2
硬碟
|
|
- 接著是儲存EFI Variables的OVMF_VARS
|
|
- 若要還原虛擬機:
|
|