雖說現在用Linux,可以開虛擬機解決需要跑Windows軟體的情況,但一旦外出就會遇到問題。在只有帶Linux筆電的情況下,為解決臨時需要用到Windows系統的問題,我選擇:從Linux筆電存取另一台Linux電腦上的Windows虛擬機的遠端桌面。
過程:
- 將Linux電腦加入ZertoTier網路,啟用SSH
- 在Windows設定啟用RDP,加入ZeroTier
- 將Linux筆電加入ZeroTier,SSH到Linux電腦
- 用virsh指令啟動虛擬機
- Linux筆電開啟Remmina,輸入Windows虛擬機的ZeroTier的IP連線。
- ????
- Profit
還可以給QEMU啟用Hyper-V,存取Windows虛擬機中的WSL哩!如果KVM直通GPU,再裝 Moonlight,就能Linux遠端遊玩Windows虛擬機裡的遊戲了!
RDP是Windows內建的遠端桌面協定,效率比VNC好,即使在低網速下仍表現優異。
我知道有個更複雜的方案,就是我將Linux遠端做通訊埠轉發,然後連線到虛擬機的區域網路的Windows虛擬機,但是我覺得好麻煩:P
考慮到Windows常有各種奇怪病毒等著入侵,把Windows放在虛擬機跑,防火牆全擋掉僅用ZeroTier存取是個不錯的方案。
1. 設定ZeroTier#
三個系統都要安裝ZeroTier,並設定開機自動啟動。
參見 ZeroTier安裝
這樣會有三組Zerotier的IP。
Linux電腦必須啟用SSH服務,並開放防火牆允許連線。
2. 啟用Windows RDP遠端桌面#
此節步驟建議坐在電腦前面設定。
用Virt Manager 安裝Windows 11虛擬機
參照 Microsoft說明,點選系統設定 → 系統,啟用遠端桌面。
RDP預設通訊埠為3389/TCP,預設帳號密碼則是登入Windows 11系統的Microsoft帳號。
3. 連線至Windows#
- SSH到遠端Linux電腦
ssh <使用者名稱>:<ZeroTier虛擬IP>
- 用virsh指令啟動虛擬機
sudo virsh list --all
sudo virsh start Windows11
於Linux筆電安裝 Remmina,協定選RDP,IP輸入
<Windows的Zerotier虛擬IP>:3389
接受憑證,輸入帳號密碼連線。
連線後記得按左邊的按鈕,啟用"Dynamic Resolution Update",這樣Windows解析度就會自動跟著Remmina視窗變化。
如果要顯示桌布,點選Remmina右上角的Preferences → RDP → Quality settings,將每個畫質的wallpaper都打勾,再重新連線。不過虛擬機若沒直通顯示卡,好像就解決不了黑桌布的樣子。