如果你每天都使用 Linux,并且有一两个 Windows 应用程序让你舍不得离开,那么你可能听说过 葡萄酒, 虚拟机 以及不成熟的解决方案WinBoat 采用了不同的方法:以高度集成的方式并尽可能减少摩擦,将真正的 Windows 体验带到您的 Linux 桌面。
关键是 WinBoat 不会尝试模拟 API; 使用 KVM 运行完整的 Windows,并使用 Docker 进行封装然后通过 FreeRDP (RemoteApp) 将应用程序窗口“粘贴”到你的 Linux 会话中。这样,你就可以打开 Photoshop 或 Word 并且您可以像对待本机系统程序一样对待它们,具有它们的图标、窗口和通常的行为。
WinBoat 是什么?它的目标是什么?
温博特 是由 TibixDev 创建的免费开源工具(MIT 许可证),旨在 弥合 Linux 和 Windows 之间的差距 适用于现实世界的日常使用。它无需您管理传统的虚拟机或费力地进行 Wine 配置,而是提供了一个现代化的 Electron 界面,并配备了 Go 后端来协调整个部署过程。
它是为那些想继续使用 Linux 但需要 Windows 应用程序 可靠性视觉整合非常简洁:窗口的行为与桌面上的其他窗口一样。你可以移动它们、调整它们的大小、将它们固定在工具栏上,或者使用 Alt+Tab 来切换它们,除非你主动要求,否则无需打开完整的 Windows 桌面。
该项目以多种格式分发,以覆盖更多用户: AppImage、.deb、.rpm 和“解压”版本 手动运行或编译。实际上,许多最近的公共版本都提供了 AppImage 和 Unpacked,而发行版软件包也越来越与文档和社区保持一致。
根据测试和社区反馈,它很好地填补了 Wine 的弱点: Affinity Photo、Paint Tool SAI v1.0、Adobe 套件部件、Acrobat、AeroChat 和 Office并明确确认Office 365运行顺畅。
技术上如何运作
该架构基于三大支柱: KVM辅助虚拟化 硬件Docker 作为环境协调器/隔离器,FreeRDP 通过 RemoteApp 在主机上呈现客户机窗口。如果您不想看到“整个窗口”,则无法看到;您只能看到应用程序窗口。
典型的流程很容易理解,但技术上却很复杂:准备一个 Windows 镜像并在容器内运行, VM 在 KVM 下运行 可以访问 CPU、RAM 和 存储,安装一个共享目录以方便文件移动,当您启动应用程序时,它的窗口就会出现在您的 Linux 会话中,就像它是本机的一样。
对于这个“嵌入式”窗口魔法,使用了具有 RemoteApp 支持的 FreeRDP。 带音频的 FreeRDP 3.xx 这是一个关键要求:旧版本可能会遇到声音问题或新集成的限制。
WinBoat 界面自动执行大部分流程:您可以选择打开 完整的 Windows 桌面 当您需要时,或者只是启动具有视觉集成的单个应用程序,使其看起来就像另一个系统应用程序一样。
要求和兼容性
在开始游戏之前,最好先检查一下电脑的硬件和软件。WinBoat 的最低配置要求非常合理,才能保证稳定流畅的体验,但需要注意的是 如果 KVM 没有激活,则无法启动.
- 内存:至少 4 GB。
- 中央处理器:至少 2 个线程。
- 存储:大约有 32 GB 可用空间(通常在 /var 中)。
- 虚拟化:KVM 在 BIOS/UEFI 中启用并可供内核使用。
- Docker 和 Docker Compose v2:必需;用户必须在docker组中,以避免连续的sudo。
- FreeRDP 3.xx:为 RemoteApp 提供音频支持。
- 内核模块:iptables 和 iptable_nat 已加载。
除了以上几点之外,目前还有一些限制需要注意:不支持 Podman、Docker Desktop 或无根容器如果您依赖于这些环境中的任何一个,那么最好等待新版本或在 GitHub 上关注开发。
一个显而易见但重要的法律提示:你需要 有效的 Windows 许可证 按照微软的条款使用 WinBoat 内的客户系统。
下载、安装和可用格式
该项目发布了 Linux 版本,方便不同发行版的用户轻松上手。快速通道通常是 AppImage,而变体 解压后 让您直接运行二进制文件。
- AppImage:便携且简单;它通常适用于大多数发行版,无需复杂的安装。
- 解压后:从相应文件夹运行解压后的二进制文件(例如 linux-unpacked/winboat)。
- .deb 和 .rpm:存在于文档中并与涵盖 Debian/Ubuntu 和 Fedora/衍生产品的想法保持一致;在某些版本中,它们可能会根据构建周期出现。
首次打开应用程序之前,请确保 Docker、Compose v2 和 FreeRDP 3 已安装,您属于 Docker 用户组,并且 /var 中有足够的空间。如果 KVM 未运行或内核将其锁定,即使其他所有条件都正确,虚拟机也无法启动。
从代码编译:要求和命令
如果你想拥有完全控制权或做出贡献,你可以在本地构建 WinBoat NodeJS 和 Go这是一个直接的过程, comandos 为 Linux 生成工件的简单程序。
对于应用程序和客户服务器的标准构建,您可以使用类似 这个工作流程:
- 克隆存储库:
git clone https://github.com/TibixDev/WinBoat
- 安装接口依赖项:
npm i
- 为 Linux 构建应用程序和客户服务器:
npm run build:linux-gs
- 检查文件夹
dist
:生成 AppImage 和 Unpacked 变体。
对于本地开发,可以在编译后以开发模式启动应用程序 来宾服务器:
- 构建来宾服务器:
npm run build-guest-server
- 启动开发模式:
npm run dev
界面是用 Electron 制作的,后端是用 Go 制作的,所以 正确配置 NodeJS 和 Go 启动之前将防止编译错误。
突出的功能和桌面集成
用户体验是重点: 精致直观的界面 它与您的桌面环境集成,并隐藏了这样一个事实:在容器和虚拟机内部运行着整个 Windows。
其中最受关注的功能包括 自动化安装 从应用程序本身:您选择偏好和资源,WinBoat 会为您设置基础设施,而无需强迫您前往 终端 除非经过特别调整。
它还强调了执行 几乎任何应用程序 它在 Windows 上运行,在 Linux 中呈现为本机窗口,并可在任务需要时选择打开完整的客户桌面。
对于文件共享,您的目录 Linux 主目录已安装在 Windows 内部,大大简化了两个系统之间的文档、项目和资源的流动。
此外,还有一些有趣的附加内容: 智能卡刷卡 用于企业用途和资源监控,随着存储库的发展,新功能也将陆续推出。
USB、存储和其他设备
USB 直通现已推出,只需进行少量手动调整即可 WinBoat GUI 是优先事项 已被开发者认可。在此之前,您可以通过编辑配置文件来公开设备。
首次启动后,创建 ~/.winboat
;你会发现里面 泊坞窗,compose.yml 它管理容器和虚拟机。在这里,您可以添加任何想要传递给客户机的 USB 设备。
编辑文件后,使用以下命令应用该文件夹中的更改 docker-compose down
进而 docker-compose up -d
这样,声明的设备将可见于 WinBoat 内部的 Windows.
关于存储,请记住应用程序需要图像、磁盘和临时数据的空间。 在 /var 中留出余量 这是一个避免部署或更新中断的实用技巧。
图形、加速和 GPU 状态
今天的热点是图形加速:没有 GPU直通运行 在 WinBoat 中。目标是通过 驱动程序 在可行的情况下进行半虚拟化,但目前尚无可供普遍使用的稳定解决方案。
已探索的选项包括 MVisor Win VGPU 驱动程序 和 DirectX 驱动程序项目,在非常特定的环境中取得了有希望的结果,但为不同的虚拟机管理程序设计,并且在实际条件下与 QEMU(WinBoat 使用的)不兼容。
另一个被提及的名字是Looking Glass及其间接显示驱动程序,它可以避免使用第二个GPU来捕获输出,但 到目前为止只实现了黑屏。 作者建议不要公开使用它;它还没有准备好进行集成。
这对你来说意味着什么?WinBoat 不面向 繁重的 3D 任务、密集渲染或 AAA 游戏 目前,对于生产力、二维编辑、办公自动化或企业工具而言,其性能非常稳定。
内核级别的游戏和反作弊
如果你喜欢玩带有侵入式反作弊功能的游戏,那么就会存在一个不可避免的技术障碍: 内核级反作弊检测虚拟化 并阻止其执行。这会影响那些对系统完整性要求极低的热门游戏。
在要求不高的游戏中,或者保护措施不那么严格的情况下,你可能会有一些回旋余地,尽管 不是 WinBoat 的重点该工具专为生产力和专业应用而设计,稳定性比极端加速度更重要。
比较:Wine、WinApps 和传统虚拟机
多年来,Wine 一直是在 Linux 上运行 Windows 应用程序的参考,但它的 兼容性并不通用 并且通常需要精细的配置和补丁。WinBoat 通过运行真实的 Windows 解决了这个问题,从而提高了兼容性。
至于 WinApps,其方法在本质上是类似的,但 WinBoat 自动化和完善 大部分流程都具有更完整的界面,减少了对手动配置的依赖,并且更接近于点击的体验。
相对 VirtualBox的 或 QEMU“裸机”,WinBoat 在日常使用中更轻便,因为 它不会强迫你打开完整的桌面 适用于每个应用程序。当您需要整个会话时,它可用;当不需要时,您可以使用单独的集成窗口。
如果我们看看像 CrossOver 这样的商业解决方案,它们需要付出成本,并且仍然以 API 翻译,这意味着兼容性方面存在诸多限制。WinBoat 通过运行真正的 Windows 系统,规避了许多此类限制。
运行良好的用例和应用程序
在社区和专业媒体分享的测试中,WinBoat 凭借 Wine 所不具备的工具脱颖而出: Affinity Photo、Paint Tool SAI v1.0、Adobe 部件、Acrobat 和 AeroChat还确认 Office 365 具有良好的性能。
这种方法对于那些喜欢将 Linux 作为主要系统的人来说是理想的,但偶尔 需要一个或两个关键的 Windows 应用程序2D 设计、高级办公自动化以及具有特定依赖关系的企业软件可以很好地结合在一起。
除了启动单个应用程序外,您还可以打开 完整的 Windows 桌面 用于特定任务中的经典流程,同时又不放弃界面提供的文件集成和自动化。
Podman 状态和 Flatpak 打包
对 Podman 的支持已列入计划,但今天 网络问题导致无法访问访客服务器,这会破坏 RemoteApp 的使用体验。在这些问题得到解决之前,Podman 将保持待处理状态。
将 WinBoat 打包为 Flatpak 也是一个复杂的目标:沙盒隔离太多,而且有必要 公开 Docker、其套接字和二进制文件 在应用程序容器内同时保持安全性和稳定性,这并非易事。
成功首次体验的实用技巧
首先,验证您的用户属于 Docker 组 并且无需 sudo 即可启动容器。这将避免在初始安装和升级期间出现尴尬的权限问题。
检查您是否有 带音频的 FreeRDP 3.xx旧版本在 RemoteApp 中显示或播放声音时可能会导致问题。快速检查版本可以节省您以后的时间。
检查可用空间 /var 用于存放图像和磁盘安装或更新过程中空间不足并不是一件好事,而且可能会导致工件不一致。
如果您要将 USB 传递给客户机,请在 泊坞窗,compose.yml 添加设备。当您更换设备或共享设置时,您会很高兴知道您触碰了什么以及为什么触碰。
社区、许可证和后续步骤
WinBoat 依然健康地运行。开源社区是报告 bug 的关键。 提出改进建议并提交 PR该项目遵循 MIT 许可证,有利于在不同情况下采用。
路线图包括 半虚拟化驱动程序的图形加速、性能和集成改进、当网络不再成为障碍时的 Podman 支持,以及在不影响安全性的情况下探索可行的 Flatpak 打包。
如果您想关注或参与,您可以在 GitHub 上找到代码,并在官方网站上找到更多信息。 查看 winboat.app 及其 Discord 如果您想尝试、评论或帮助提供文档和实际使用反馈。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。