WinBoat 教程:用容器加 FreeRDP 在 Linux 上运行 Windows 应用
【免费下载链接】winboatRun Windows apps on 🐧 Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat
WinBoat 是一个让 Linux 运行 Windows 应用的开源项目:它把一套 Windows 虚拟机装进 Docker 或 Podman 容器,容器里的 Guest Server 负责应用列表与监控数据,FreeRDP 再把单个程序窗口合成到 Linux 桌面。本文按"先查环境、再装、再用"的顺序走一遍,并附上几条常用的命令行检查与排错手段。
它把 Windows 应用搬上 Linux 桌面的原理
WinBoat 是一个 Electron 桌面应用。它的做法是:把一台 Windows 虚拟机(KVM,Linux 内核自带的硬件虚拟化能力)跑在 Docker 或 Podman 容器里,Windows 启动后,容器内会装上一个 Go 写的 guest_server/,对外提供 HTTP 接口。Linux 端每 1 秒轮询一次/health与/metrics,从而拿到在线状态和 CPU、内存、磁盘数据。
启动应用时,WinBoat 会调用本机的 FreeRDP 客户端(开源的远程桌面客户端),带上/app:program:程序路径参数,借助 Windows 的 RemoteApp 协议只把这一个程序的窗口渲染出来,窗口标题栏上写着你熟悉的 Linux 窗口管理规则——看起来就像原生应用。想操作整个桌面时,它也能切到全屏 Windows 桌面模式。
安装前的 3 条命令:检查 KVM、内存与 FreeRDP
官方给出的硬件门槛是:至少 4 GB 内存、2 个 CPU 线程、32 GB 可用磁盘,且 BIOS 里开了 KVM 虚拟化。软件方面,Docker 用户不能用 Docker Desktop;Podman 需要 4.x 以上版本;FreeRDP 需要 3.x 且带声音支持。装之前先在终端跑一下:
ls -l /dev/kvm free -h xfreerdp /version/dev/kvm存在说明虚拟化已启用,free显示的总内存应大于 4 GB,xfreerdp的版本号应在 3.x。三项都满足,后面基本不会卡住。
五分钟完成首次安装
从 Releases 页面下载对应平台的包:AppImage、.deb、.rpm 或 Nix,装好即可运行。启动后向导会复查 KVM、内存、FreeRDP 等条件,然后依次让你选择 Windows 版本(Win10/Win11 的 Pro、LTSC、Enterprise 均可)、语言、分给虚拟机的内存与 CPU 数,以及一个存放磁盘镜像的文件夹。
之后向导会生成 compose 文件、注入 Guest Server、启动容器,并轮询/health接口直到返回 200。整个过程在面板里有进度提示,完成后就能在应用列表里看到"Windows 桌面""资源管理器"等内置条目,以及你之后装进 Windows 的任何程序。
USB 设备直通:U 盘、打印机在 Windows 里直接用
痛点很常见:设备在 Linux 下识别,插到 Windows 应用里就没影了。WinBoat 把直通这件事自动化了——实现见 src/renderer/lib/usbmanager.ts。在设置里把设备加入直通列表后,插拔事件会触发 QMP(QEMU 的机器管理协议)热插拔,设备在 Windows 里即插即用,拔出时自动移除。设备名称查询依赖系统自带的/usr/share/hwdata/usb.ids,查不到时回退到仓库内置的 data/usb.ids,再不行就用lsusb现场读取:
lsusb -d 04f9:0248注意一点:USB 直通目前只支持 Docker 运行时,Podman 下不可用。
文件共享:把 Linux 主目录映射进 Windows
安装向导里可以勾选一个 Linux 文件夹映射进容器,Windows 里通过共享盘访问,从而省去"先拷进虚拟机再拷出来"的来回搬运。在 Linux 里改一个文件,Windows 应用里立刻能看到;反过来也一样。需要频繁跨系统挪文件的话,这项值得在向导里勾上,而不是事后折腾。
监控、日志与常见排错
面板右上角的图表数据来自 Guest Server 的/metrics接口,每 1 秒刷新一次,可以直观看到虚拟机的 CPU 频率、内存与磁盘占用。所有日志落在~/.local/share/winboat-app/,其中winboat.log记应用启动,container.log记容器操作——容器起不来或应用打不开时,先看这两个文件。
几个已知坑位:Docker Desktop 不受支持,直接用发行版自带的 docker 即可;Podman 版本低于 4.x 时安装容易失败;如果之前直通过的 USB 设备已经从主机上消失,容器可能拒绝启动,WinBoat 检测到这种"失效容器"会自动重建,手动兜底可以执行docker compose down后重新up。更多构建与运行细节见 README.md。
小结
WinBoat 把"在 Linux 上装一台 Windows 虚拟机"压缩成了一条容器化的安装向导,从而让 Windows 应用像本地程序一样被点开。下一步可以直接下载对应发行版的安装包试用;想跟进 USB 直通或 QMP 的实现,从 guest_server/ 开始读源码是一个顺路的选择。
【免费下载链接】winboatRun Windows apps on 🐧 Linux with ✨ seamless integration项目地址: https://gitcode.com/GitHub_Trending/wi/winboat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考