3步在Linux上跑Windows应用:WinBoat快速上手
【免费下载链接】winboatRun Windows apps on 🐧 Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat
你每天要用的那个软件只有 Windows 版,Wine 又跑不稳?WinBoat 换了一条路:把完整的 Windows 11 装进 Docker/Podman 容器,再用 FreeRDP RemoteApp 把应用窗口合成到 Linux 桌面上,Windows 程序就能像原生应用一样出现在你的应用启动器里。
快速上手:15分钟跑通第一个应用
先核对4个前置条件
最常见的是忘了开 KVM,一条命令就能确认:
# KVM 已启用时该文件存在 ls /dev/kvm其余要求列在 README 的 Prerequisites 一节:至少 4 GB 内存、2 个 CPU 线程、32 GB 磁盘空间,外加 Docker 或 Podman(建议 ≥4.x)和 FreeRDP 3.x。
按发行版选安装包,一路点到底
从 Releases 页下载对应发行版的 AppImage / .deb / .rpm,注意 Docker Desktop 不受支持。启动后向导会引导你选 Windows 版本(Win11、Win11 LTSC 2024、Win10 或自定义 ISO)、分配内存/CPU/磁盘、设置用户名密码,之后它自动生成 compose 文件、启动容器、完成客端安装,全程无需手动操作。
安装完成后,你的 home 目录会被挂载进 Windows 客端,两边直接共享文件,不用来回传。📁
架构透视:Windows窗口是怎么"浮"到Linux桌面的
VM里常驻一个"翻译官":Guest Server
可以把 Windows 虚拟机理解成"国外",WinBoat 在里面常驻一个 Go 写的 Guest Server(guest_server/cmd/server/main.go)当翻译官——它只有/apps、/metrics、/get-icon几个接口,Linux 端要应用列表、CPU 内存指标、图标时就去问它。
这个翻译官由 guest_server/install.bat 在客端安装时用 nssm 注册成 Windows 服务:
"%NSSM%" install WinBoatGuestServer "%WB_DIR%\server\winboat_guest_server.exe" "%NSSM%" set WinBoatGuestServer Start SERVICE_AUTO_STARTnssm 的作用是把普通 exe 包成系统服务,开机自启、以 SYSTEM 账户运行,比手工写注册表稳。端口映射集中在 src/renderer/lib/constants.ts:宿主 47271 转访客 7148。
RemoteApp:不是远程桌面,而是窗口级合成
很多人以为是"远程桌面截图",其实 WinBoat 走的是 Windows RemoteApp 协议加 FreeRDP:每个应用都渲染成 Linux 侧的操作系统级窗口,能和其他 Linux 窗口并存、切换。RDP 参数集定义在 src/renderer/lib/winboat.ts,剪贴板和声音桥接一眼可见:
"/cert:ignore", "+clipboard", "/sound:sys:pulse", "/sec:tls",你在面板里看到的状态与指标,全部来自 Guest Server 的回报:
点进应用列表,所有可启动的 Windows 程序按使用频率排列,图标由客端实时抓取:
深度定制与进阶:更新、路径与多版本
Guest Server 的自动更新与回滚
客端 API 程序是可独立升级的,updater 单独跑在 7150 端口。guest_server/cmd/updater/swap.go 的更新逻辑值得借鉴:先解包到临时目录校验,再目录改名互换,健康检查不通过就换回:
serverDir = root/server newDir = root/server.new oldDir = root/server.old同卷 rename 速度快、接近原子,中途断电也不容易留下半成品。
自定义 Windows 版本与 ISO
版本选项集中在 src/renderer/lib/constants.ts 的WINDOWS_VERSIONS:
"11l": "Windows 11 LTSC 2024", "10e": "Windows 10 Enterprise", custom: "Custom Windows",选 Custom 后,src/renderer/lib/install.ts 会把你指定的 ISO 挂载为/boot.iso,OEM 版、评测版都能装。
用注册表文件放开 RemoteApp 策略
Windows 默认只允许白名单应用跑 RemoteApp,guest_server/RDPApps.reg 直接禁用了这个白名单:
fDisabledAllowList = 1 fAllowUnlistedRemotePrograms = 1安装时通过reg import "%OEM_DIR%\RDPApps.reg"一次性导入,"想跑什么就跑什么"就是这么来的。
适合谁用,不适合谁用
适合:日常 Linux 桌面、只需要个别 Windows 应用(行业软件、特定插件、老版本编辑器)且能容忍 beta 偶发 bug 的个人用户。不适合:重度游戏玩家——Windows 侧是远程渲染,没有本地 GPU 加速;想要完整 Windows 系统体验、或依赖稳定 USB 设备直通(Podman 下直通不可用)的场景也别选它。
已知限制:项目明确标注 beta;Docker Desktop 不支持;USB 直通仅在 Docker 下可用。
下一步建议两条:想读懂机制,就从 guest_server/ 目录读起,API 和更新服务都在这;想横向对比,可以看看同样走"Linux 跑 Windows 应用"路线但实现思路不同的 WinApps。
【免费下载链接】winboatRun Windows apps on 🐧 Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考