WinBoat,以最佳方式在 Linux 上整合和運行 Windows 應用程式的工具

  • WinBoat 使用 Docker 和 KVM 運行真正的 Windows,並透過 FreeRDP 整合 Windows。
  • 克服 Wine 對關鍵應用程式的限制並按需提供完整的桌面。
  • 明確的要求:KVM、Docker、Compose v2 和帶有音訊的 FreeRDP 3。
  • GPU 直通尚未實現,Podman 和 Flatpak 面臨技術挑戰。

溫博特

如果您在 Linux 上工作並且偶爾需要運行僅適用於 Windows 的應用程序,那麼您很容易感到進退兩難。 WinBoat 成為獨特的選擇:它不是相容層,而是運行 Windows 的真實實例並將其無縫整合到您的桌面。

這個想法很簡單,但也很強大: 使用 Docker 和 KVM 建立真正的 Windows並使用 FreeRDP 在 Linux 會話中顯示其窗口,就像原生窗口一樣。無需再費力應對奇怪的依賴項或難以預測的補丁;如果程式在 Windows 上正常運行,那麼它也應該在 Windows 上正常運行,除非需要強大的圖形加速或核心級反作弊措施。

WinBoat 是什麼?為什麼它如此有趣?

WinBoat 計畫秉承了「企鵝之窗」的精神,致力於 Windows 應用程式與 Linux 共存 以盡可能少的摩擦。它不依賴 API 轉換,而是依賴 KVM 和 Docker 容器的虛擬化來封裝 Windows 環境,然後在您的環境中將其呈現為獨立的視窗。

與以前的方法相比, 贏取應用程序關鍵的差異在於使用體驗。使用 WinApps,大部分設定都由您決定: 大量手工組裝,一個基本的 TUI,任務欄中的幾個小部件,以及一些散落的控制台命令。而 WinBoat 在滿足一些先決條件後,會完成繁重的工作,並在簡潔的界面中顯示相關信息,並提供更完整的體驗,無需費力地處理配置文件或記憶一串命令。

如果你想知道為什麼不使用 WINE 或 CrossOver,答案就在邊緣情況。有些應用程式 它們進展不順利,或者根本沒有開始使用 WINE。這正是 WinBoat 誕生的原因:填補這些空白,並在您需要時為您提供完整的 Windows 桌面。在實際測試中,我們引用了 Affinity Photo、Paint Tool SAI v1.0、Adobe 套件、AeroChat、Acrobat,當然還有 Office;甚至連 Office 365 也已確認可以運作。

WinBoat 的工作原理:與 Windows 整合的虛擬化

在底層,WinBoat 使用 Docker 作為編排器並使用 KVM 作為部署技術來建立 Windows 機器。 硬件輔助虛擬化Windows 透過 FreeRDP 在 Linux 上呈現,因此您可以像使用任何其他系統應用程式一樣使用它們,在桌面之間拖曳它們,將它們固定到工作列,並使用 Alt+Tab 在它們之間切換。

這項發明的美妙之處在於,使用者能夠感受到一種連續的流動: 優雅的介面、自動安裝流程,以及在任務需要時呼叫完整 Windows 桌面的選項。如果任務不需要,您可以只打開特定的應用程序,並像原生應用程式一樣整合它們,在整個會話過程中保持一致的外觀和體驗。

突出特點

  • 簡潔的介面 透過視覺集成,使 Windows 視窗看起來像是來自 Linux 本身。
  • 自動化安裝:您選擇自己的喜好和資源,系統負責烹調。
  • 運行幾乎任何應用程式 在 Windows 上運行,以系統級視窗的形式呈現在您的桌面上。
  • 完整桌面 當您需要時,Windows 即可使用,並且能夠以整合的方式啟動各個應用程式。
  • 文件整合:在 Windows 中掛載您的主目錄以直接共用文件。
  • 有用的附加功能 正在進行中並且已經存在:智慧卡直通、資源監控等等。

系統先決條件

在開始之前,請確保您的設備符合這些最低要求;否則,您從一開始就會遇到錯誤。 冷靜檢查每一點 並避免驚嚇。

  • 內存:至少4 GB。
  • 中央處理器:最少 2 個線程。
  • 存儲:/var 中有 32 GB 可用空間。
  • 虛擬化:在 BIOS 或 UEFI 中啟用 KVM。
  • 碼頭工人:集裝箱化所必需的。
  • Docker Compose v2:對於與 docker-compose.yml 檔案的兼容性至關重要。
  • Docker 群組:將您的使用者新增至 docker 群組。
  • 免費RDP:版本 3.xx,支援聲音。
  • 核心模組:載入 iptables 和 iptable_nat。

除了軟體需求之外,您還需要確認 KVM 確實在您的發行版上運作。 已禁用的 KVM 在 BIOS 中或被核心阻止將導致無法啟動,無論其他一切有多好。

下載和安裝:可用版本

您可以從專案的發布版塊下載 Linux 版本。目前有兩個版本,可以涵蓋大多數情況,上手難度較低。 選擇最適合你的發行版 以及你的工作方式。

  • AppImage:可攜式格式,適用於大多數發行版,無需複雜的安裝。
  • 解壓後:解壓縮檔案;只需執行 linux-unpacked/winboat 中的二進位。

注意開發人員報告的不相容性。 目前不支援 Podman。,既不適用於 Docker Desktop,也不適用於使用 Podman 套接字模擬 Docker 的發行版,更不適用於無根容器配置。如果您依賴這些環境中的任何一個,則必須等待未來的版本。

最大的缺點是你必須 手動安裝各種附加功能 在享受完整體驗之前,您需要具備以下條件:Docker、Compose v2、具有音訊功能的 FreeRDP 3、iptables 模組以及 Docker 群組成員資格。完成這些之後,剩下的就基本上搞定了。

從原始碼編譯並執行

如果您希望在自己的機器上建立應用程序,那麼只要您擁有必要的依賴項,該過程就很簡單。 你需要 NodeJS 和 Go 開始之前安裝。

  • 克隆儲存庫: git clone https://github.com/TibixDev/WinBoat
  • 安裝依賴項: npm i
  • 編譯應用程式和客戶伺服器: npm run build:linux-gs
  • 產生的二進位檔案出現在 dist,包含 AppImage 和 Unpacked 版本

對於開發,流程略有變化,以便您可以更舒適地在本地進行迭代。 已準備好 NodeJS 和 Go,請按照以下步驟操作。

  • 克隆儲存庫: git clone https://github.com/TibixDev/WinBoat
  • 安裝依賴項: npm i
  • 建構來賓伺服器: npm run build-guest-server
  • 以開發模式啟動應用程式: npm run dev

設備和硬體配置

如果您需要在 Windows 中修改硬件,則支援情況會根據裝置類型而有所不同。目前已提供 USB 選項,但目前設定仍需手動進行。 當 USB 直通到達應用程式時,這可以從介面上完成;同時,是時候編輯文件了。

安裝 WinBoat 後,前往資料夾 ~/.winboat 並打開文件 docker-compose.yml您可以在那裡新增任何想要向訪客顯示的 USB 裝置。 修改後,使用 docker-compose down y docker-compose up -d 在同一目錄中。

圖形與加速:WinBoat 的當前狀態

目前沒有 GPU 直通運作。計劃透過以下方式實現加速 半虛擬化驅動程式,但仍有工作要做。 MVisor Win VGPU 驅動程式(適用於 OpenGL)已經過研究,結果令人鼓舞,儘管它是為不同的虛擬機器管理程式設計的,並且與 WinBoat 使用的 QEMU 不相容。

還有一些團隊正在開發 DirectX 驅動程序,但目前我們還無法進行確定性的測試。 目標是整合這些部分 當它們足夠成熟,可供普遍使用時,不會損害穩定性。

一個嚴格審查的項目是 Looking Glass,尤其是它的間接顯示驅動程序,因為它可以避免使用第二個 GPU。 驅動程式已成功編譯並啟動。 經過一些調整,結果只是黑屏。作者本人表示,它尚未準備好面向公眾發布,因此整合需要等待其成熟。

具有反作弊和其他 WinBoat 限制的遊戲

如果您的目標是具有內核級反作弊功能的遊戲,那麼就沒有好消息了。 這些系統可偵測並阻止虛擬化。,因此無法在 WinBoat 中運行它們。對於沒有這些限製或侵入性保護較少的遊戲,情況可能會有所不同,但這不是該項目的首要關注點。

Podman 狀態和 Flatpak 中的打包

Podman 支援已在計劃中,團隊和合作者也已開始著手進行。然而, 網路問題導致無法存取訪客伺服器,這會破壞體驗。在問題解決之前,它仍會留在待辦事項清單上。

將 WinBoat 轉換為 Flatpak 也在計劃中,但由於 Flatpak 將應用程式與系統進行了很大程度的隔離,因此這需要付出努力。 已安裝的應用程式應該公開、Docker 二進位檔案、其套接字以及其他實用程序,所有這些都不會損害沙盒的安全性。這並非易事,但並非不可能。

文件整合和工作流程

一個讓生活更輕鬆的實際細節是,Linux 中的主目錄安裝在 Windows 內部。 這允許文件共享。 無需設定額外資源或手動從異地複製,即可輕鬆從一個地方遷移到另一個地方。對於辦公室、編輯或 CAD 任務而言,這是一種非常方便的遷移方式。

運行良好的應用程式和用例

當您必須使用 Wine 尚未涵蓋的程式時,WinBoat 的真正價值就顯現出來了。 諸如 Affinity Photo 之類的範例已被突出顯示Paint Tool SAI v1.0,以及 Adob​​e 套件的部分功能,以及 AeroChat 和 Acrobat 等工具。 Office 特別突出,並已確認 Office 365 可立即使用。

這種方法非常適合那些需要一些關鍵 Windows 實用程序,但更喜歡將 Linux 環境保留用於其他所有操作的專業人士。 設計、先進的辦公室自動化 或者某些企業應用程式特別適合這種混合用途。

與 WinBoat 計畫合作並獲得許可

貢獻是開放的並且始終受到歡迎,無論是修復錯誤、完善功能還是改進文件。 團隊要求專注於技術貢獻 並丟棄包含政治、性或敏感內容且對開發無益的拉取請求。如果您想提供協助,最好的方法是查看問題部分,提出改進建議,並開啟有限的拉取請求 (PR)。

除了報告錯誤和建議功能之外,您還可以分享實際使用回饋或幫助澄清手冊中的要點。 本專案採用 MIT 許可,這有助於在不同場景下進行協作和應用。他們也提到,其他一些有類似想法的項目也為他們提供了靈感;值得一看。

隱私權說明、通知和來源背景

您造訪的部分資訊來自顯示隱私權聲明的平台的貼文。在 Reddit 上,您會看到一個典型的訊息,表明他們及其合作夥伴使用 Cookie 和類似技術來提供更好的體驗、維護服務, 提高品質並個性化內容和廣告,除了衡量廣告效果之外。如果您接受所有 Cookie,請繼續;如果您拒絕非必要 Cookie,他們可能會使用平台運行所需的某些 Cookie。他們也參考了其 Cookie 聲明和隱私權政策。

在某些 X 嵌入中,如果您的瀏覽器停用了 JavaScript,則會出現提示,要求您啟用它或使用受支援的瀏覽器繼續。 列出了幫助中心的鏈接 以及服務條款、隱私權政策、cookie 政策、印記和廣告數據,帶有 X 的公司簽名。這些是標準平台訊息,不會影響 WinBoat 的運作。

最後,一些文章的版麵包含空白表和占位符,不添加任何內容。 那些視覺元素 它們是原始設計的一部分,不包含有關 WinBoat 的相關技術資訊。

考試時保持良好面容的實用技巧

雖然這個專案自動化了許多功能,但做好準備工作還是很有幫助的。請確保你的用戶在 Docker 群組中,並且你可以在沒有 sudo 的情況下運行容器。 確認 FreeRDP 是 3.xx 版本 保留聲音,因為舊版本可能會導致音訊問題。此外,請檢查 /var 的可用性,以免在部署過程中耗盡空間。

如果您打算在 Windows 中使用特定的 USB 週邊設備,請準備好它們的識別碼並記錄您對 docker-compose.yml 所做的任何變更。 簡短的清單 在升降貨櫃之前進行檢查可以節省您的時間,特別是當您輪換團隊或與更多人分享專案時。

溫博特 提出 對於那些需要 Windows 而又不想放棄 Linux 的人來說,這是一條實用的道路: 精心策劃的虛擬化,將 Windows 與 FreeRDP 集成、明確的要求以及旨在改進圖形加速、Podman 支援和 Flatpak 打包的路線圖。由於 Beta 版本已經支援高強度工作,當 Wine 或 Proton 無法滿足需求時,它將成為一種極具吸引力的替代方案,尤其對於那些在 Linux 上仍然難以適應的基本設計、辦公室或業務工作流程程序。