3 步在 Linux 上跑起 Windows 应用:WinBoat 完整上手指南
【免费下载链接】winboatRun Windows apps on 🐧 Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat
双系统来回切换太折腾?很多 Linux 用户的卡点就是手里缺一个只有 Windows 版的软件。WinBoat 让你直接在 Linux 上运行 Windows 应用:它们以独立窗口混进任务栏,背后其实是一台藏在容器里的 Windows 虚拟机。
它把 Windows 应用变成 Linux 桌面的一等公民
WinBoat 是一个 Electron 桌面应用。首次启动后,向导让你选 Windows 版本(Win10/11 的 Pro、LTSC、Enterprise 均可,也支持自带 ISO)、分配 CPU/内存/磁盘,剩下全自动:生成 compose 文件、铺设装机种子、引导虚拟机、装完系统。装完后,Windows 里所有程序都会出现在 WinBoat 的应用列表里,和 Linux 应用并列;点开其中一个,窗口直接弹在你的 Linux 桌面上。需要整块 Windows 桌面时也能一键进入,而你的 home 目录会挂载进 Windows,两边文件互拷不用折腾。🐧
原理拆解:虚拟机在容器里,服务在 Windows 里
机制:Windows 虚拟机怎么塞进 Docker 容器
WinBoat 没有把虚拟机跑在裸机上,而是让 QEMU 在 Docker/Podman 容器里运行(基于 dockur/windows 镜像,KVM 硬件加速)。你在向导里的每个选择都会写进自动生成的 compose 文件——RAM_SIZE、CPU_CORES、DISK_SIZE、系统版本、语言、账号密码。网络只映射 5 组端口到 127.0.0.1 的 47270~47274 区间:noVNC 画面(8006)、Guest API(7148)、更新服务(7150)、QEMU 的 QMP 控制通道(7149)、RDP(3389,TCP+UDP),集中定义在 constants.ts。可以把 Windows 想象成关在集装箱里的同事:只露出五个对本机开放的"门洞",外面的人进不来。
关键实现:Guest Server 注册成服务 + RemoteApp 窗口合成
Windows 装好后,装在 C:\OEM 的 install.bat 会在首次启动时自动执行:导入 RDPApps.reg 打开 RemoteApp 能力,用 nssm 把 Go 写的 Guest Server(监听 7148,提供 /apps、/metrics、/rdp/status 等接口)注册成 Windows 服务 WinBoatGuestServer——开机自启、SYSTEM 账户运行,同时加 Defender 排除项、放行 7148/7150 防火墙规则,并注册一个开机时间同步任务。配套的 Updater 服务(7150)专门负责给 Guest Server 打更新。安全上,安装时生成的 guest_token 经 OEM 挂载送进虚拟机,更新请求必须带 Bearer 令牌、Host 必须是回环地址,且用常数时间比较(见 auth.go),防的是 DNS 重绑定。Linux 这边,点开某个应用时 WinBoat 调起 xfreerdp3,用 /app:program:... 这类 RemoteApp 参数把单个窗口"抠"到桌面,再配上 /wm-class 让窗口管理器像对待原生应用一样对待它;进完整桌面则加 +f 全屏。
从零跑起来:环境检查、首次安装与验证
- 确认硬件与虚拟化:至少 4GB 内存、2 个 CPU 线程、32GB 空闲磁盘,BIOS 中开启 KVM。
- 装容器运行时与 FreeRDP:Docker Engine(Compose v2 插件)并把用户加入 docker 组,或 Podman 4.x + podman-compose;FreeRDP 必须 3.x 且带声音支持。
- 安装 WinBoat 并跑向导:官方包提供 AppImage、.deb、.rpm 和 Nix 配方。按向导选版本与规格后开始安装,状态会依次经过"Creating Compose File → Starting Container → Installing Windows → Completed",中途不用动手。
- 验证服务并启动应用:安装完成后从 Linux 访问
http://127.0.0.1:47271/health,返回{"status":"ok"}说明 Guest 服务就绪。想从源码跑开发模式的话,装好 Bun 和 Go 后执行:
git clone https://gitcode.com/GitHub_Trending/wi/winboat cd winboat && bun i bun run build:gs && bun run dev- 手搓一个应用窗口(可选):理解原理后你甚至能绕过界面直接调 RDP,最小可跑的 RemoteApp 命令长这样:
xfreerdp3 /v:127.0.0.1 /port:47273 /u:用户名 /p:密码 /app:program:C:\Windows\System32\notepad.exe,name:记事本进阶玩法与常见坑
定制系统版本、共享文件夹与 RDP 参数
compose 环境变量里预留了完整的系统版本列表(Win10/11 的 Pro、LTSC、Enterprise)和 custom 项,挂自己的 ISO 会被放到 /boot.iso。开启共享文件夹后它会被挂进 Windows 的 /shared,这是跨系统传文件最快的路。配置页还能逐条改 RDP 参数——替换默认值或追加新参数,桌面缩放、多显示器(跨屏拼接或 /multimon)、智能卡透传都有开关;调完之后,你常用 Windows 应用的窗口缩放就全归你管了。
最容易踩的三个坑
- Docker Desktop 直接不可用,官方只支持 Docker Engine,用了会出各种怪问题;
- Debian/Ubuntu 用 apt 装的 Podman 可能低于 4.x,安装会中途失败,先查版本;另外 Podman 路线目前不支持 USB 直通;
- FreeRDP 版本不对会被直接判定"未安装":WinBoat 只认 3.x(要带声音支持),2.x 装了也白装。
WinBoat 把"在 Linux 上运行 Windows 应用"拆成虚拟机、Guest 服务、RDP 合成三层,每层都替你自动化好了。建议下一步:装完后先把那个你最离不开的 Windows 小工具拉进任务栏跑一周,再回配置页按自己的习惯微调一轮 RDP 参数。
【免费下载链接】winboatRun Windows apps on 🐧 Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考