快轉到主要內容

Cassowary:在Linux跑Windows軟體,支援Microsoft Office 365、Adobe Photoshop

Linux系統 虛擬機與容器技術 Microsoft Office Photoshop QEMU Windows Linux
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

本文示範如何在Linux系統,透過Cassowary跑Windows的軟體,例如Microsoft Office 365(Word, Excel, PowerPoint)和Adobe Creative Cloud(Photoshop, Lightroom)系列軟體。

有些Windows軟體用 Linux的Wine也跑不起來,那麼就用「Cassowary」跑吧,讓Windows軟體宛若原生應用程式一樣融入Linux系統。

Linux系統以Cassowary跑Microsoft Word
Linux系統以Cassowary跑Microsoft Word

1. Cassowary原理
#

「Cassowary」意為鶴鴕,又稱食火雞,這是一種不會飛的鳥,攻擊性很強。不過我覺得作者casualsnek可能是想玩商業版Wine軟體「Crossover」的諧音啦。

Cassowary用的是什麼神奇技術?其實沒什麼,Cassowary的原理為在Linux系統跑一個Windows虛擬機,設定RDP遠端桌面服務,Windows程式跑在Windows虛擬機裡,Cassowary充當RDP的中介,將其整合至Linux桌面環境。

那這跟手動設定虛擬機RDP再用Remmina存取有何差別?用Cassowary可以簡化存取虛擬機應用程式的過程,Cassowary提供圖形界面開關虛擬機,能夠掃描虛擬機安裝的軟體,將其捷徑新增到Linux桌面,還能與Windows共享資料夾。並且,Cassowary能在不需要虛擬機的時候將其暫停釋放資源。

在Cassowary之前已經有類似專案,如Fmstrat做的 WinApps for Linux,但該專案沒有積極維護了。與此相比,Cassowary算是WinApps的改進版,提供圖形界面方便管理虛擬機與捷徑,並且有持續在更新。

不過同樣都是掛虛擬機在背景,Cassowary方案效能比 Looking Glass + GPU直通要差,RDP沒有硬體加速,視窗縮放也怪怪的,只適合跑簡單的文書軟體。

2. 建立Windows 11虛擬機
#

參見 安裝Windows 11 QEMU/KVM虛擬機

在安裝虛擬機之後,將虛擬機關機。

  1. 設定開機Windows自動登入使用者,給虛擬機設定 靜態IP

  2. 設定Libvirtd以user模式執行

sudo sed -i "s/#user = \"root\"/user = \"$(id -un)\"/g" /etc/libvirt/qemu.conf
sudo sed -i "s/#group = \"root\"/group = \"$(id -gn)\"/g" /etc/libvirt/qemu.conf
sudo usermod -a -G kvm $(id -un)
sudo usermod -a -G libvirt $(id -un)
sudo systemctl restart libvirtd
  1. 有AppArmor的系統,需要新增以下規則
sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
wget https://gitlab.com/apparmor/apparmor/-/raw/master/profiles/apparmor.d/usr.sbin.dnsmasq -O ~/usr.sbin.dnsmasq
sudo mv ~/usr.sbin.dnsmasq /etc/apparmor.d/
sudo sed -i "s/\/usr\/libexec\/libvirt_leaseshelper m,/\/usr\/libexec\/libvirt_leaseshelper mr,/g" /etc/apparmor.d/usr.sbin.dnsmasq
  1. 確保連線的是本機的Libvrit服務
mkdir -p ~/.config/libvirt
echo "uri_default = \"qemu:///system\"" >> ~/.config/libvirt/libvirt.conf
  1. 將電腦重開機。

3. 於Windows虛擬機安裝Cassowary伺服端
#

  1. 開啟Windows系統設定 → 遠端桌面,啟用遠端桌面服務

  2. Github下載Cassowary伺服端,選取cassowary-0.6-winsetup.zip,解壓縮,對setup.bat右鍵以系統管理員執行批次檔。

  3. 虛擬機重開機。

4. 於Linux Host安裝Cassowary客戶端
#

  1. 安裝以下套件
# Arch Linux
sudo pacman -S python3 python3-pip freerdp libvirt-python

# Ubuntu
sudo apt install python3 python3-pip freerdp-x11 libvirt-python
  1. Github下載cassowary-0.6-py3-none-any.whl

  2. 安裝wheel,並記得將~/.local/bin加入至PATH

pip3 install PyQt5
pip3 install cassowary*
echo "PATH=\$PATH:$HOME/.local/bin" >> $HOME/.profile
  1. 啟動Cassowary。請確保Windows虛擬機正在執行。
python3 -m cassowary -a
  1. 在以下欄位分別填寫虛擬機名稱、虛擬機IP(可從Virt Managet面板得知)、Windows帳號密碼(RDP預設帳密為Microsoft帳密),再點選Save Changes。

  2. 點選Reconnect to server,RDP視窗應該會跳出來。此時要切換到Virt Manager的視窗,同意遠端桌面連線。

  3. 點選Misc → Create Application menu shortcut,將Cassowary新增至Linux應用程式列表

5. 將Windows應用程式整合到Linux桌面
#

  1. 切換到Cassowary的Guest APP頁面,點選要新增的應用程式,點選Add。

  2. 之後應用程式捷徑就會出現在Linux應用程式列表,您也可以把他們加到桌面。

  3. 只要點一下捷徑,應用程式就會自動開啟。

  4. 如果您使用的是KDE,您也可以對檔案按右鍵,把相關檔案格式與對應的Windows軟體相關聯。

  5. Cassowary的Launch On Host頁面可以設定不要用虛擬機應用程式開啟的副檔名,例如設定於Linux檔案管理員點二下.docx檔或.doc檔,改以Linux的LibreOffice開啟。

以上的應用程式都是單獨視窗開啟的。如果想要存取完整Windows桌面:點選Misc → Launch Full RDP session。

點選Advacned → Enable VM suspend on inactivity讓虛擬機不用時自動暫停。

6. 共享資料夾
#

進入Folder Mappings頁面,設定要共享的資料夾。

Windows → Linux是把Windows的C槽掛載至Linux上。點選Mount all,Linux即可用檔案管理員存取Windows磁碟檔案。

反之,Linux → Windows則是將Linux的目錄掛載至Windows。預設Cassowary會掛載Linux的根目錄至Windows虛擬機(Windows看到的磁碟機代號會是Z:),以便儲存用虛擬機應用程式開啟的Linux檔案。

7. 進階:遠端連線到遠端的遠端Windows虛擬機桌面
#

如果帶出去的筆電跑不動虛擬機,就從外部網路連線到家中Linux電腦的虛擬機吧。

參見 用RDP+ZeroTier存取遠端Linux的Windows虛擬機的桌面設定內網穿透軟體。

相關文章

QEMU/KVM虛擬機繞過遊戲Easy Anti-Cheat的方法,隱藏KVM狀態
Linux系統 虛擬機與容器技術 QEMU Linux Windows
如何在Windows虛擬機玩遊戲 ~ Linux QEMU/KVM雙GPU直通 + Looking Glass安裝過程
Linux系統 虛擬機與容器技術 GPU Passthrough QEMU Linux Windows
用RDP+ZeroTier存取遠端Linux的Windows虛擬機的桌面
Linux系統 虛擬機與容器技術 Remote Desktop Windows Linux ZeroTier QEMU

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。