不用虚拟机、不用Wine,Raven如何让Linux原生运行Windows软件

Raven 是一个新一代 Windows 兼容运行环境,目标是在 Linux 上直接运行 Windows 应用程序,并且尽可能提供接近原生 Windows 的安装和运行体验。

Raven 主要采用 C/C++ 语言开发,自身采用 MIT 开源协议,依赖组件基于各自协议,代码托管在 GitHub:

https://github.com/mirkobrombin/raven

目前,Raven 项目还处于早期开发阶段,不适合生产环境。

功能特性

  • 设计理念:Raven 采用了不同于虚拟机和 Wine 重新实现 Windows API 的设计理念,应用程序代码直接运行在 CPU 上,系统调用由 Raven 接管并模拟 Windows 内核、注册表、文件系统和服务管理器,同时通过 DXVK/VKD3D 将 DirectX 转换为 Vulkan,最终对接 Wayland 桌面环境,实现无需虚拟机即可运行 Windows 应用。

从源码结构可以看出,Raven 不仅是一个 Launcher,而是在实现大量 Windows 子系统。

  • 安装程序兼容:Raven 的目标是让用户直接使用软件厂商提供的官方安装包完成安装。它实现了 Windows Installer 自定义操作、WinSxS(Side-by-Side)组件机制以及服务管理器等关键基础设施,因此能够支持许多真实商业软件安装过程中依赖的复杂逻辑。

  • 前缀隔离设计:类似于 Wine Prefix,可以为每个 Windows 应用创建一套独立的运行环境,包括专属的 C 盘、注册表、服务配置和系统组件。这样不同应用之间不会因为 DLL 版本、注册表项或运行库冲突而互相影响。

  • 快照(Snapshot)机制:类似于 Windows“系统还原点”的设计,在运行安装程序前自动创建一个检查点,保存其 C 盘、注册表和运行环境状态。当软件安装失败、配置出错或升级后出现兼容性问题时,用户可以快速恢复到安装前的状态,无需重新创建环境或手动清理残留文件。

  • 兼容的应用:Raven 采用真实应用验证的方式持续评估兼容性,项目通过安装、启动、窗口显示和实际业务流程四个阶段对应用进行评分,目前已成功运行 Notepad++、7-Zip、Audacity、ClassiCube 等多种应用,同时支持 .NET Framework 3.5/4.8、Visual C++ 2005-2022、DirectX、XNA、OpenAL、MSI Custom Actions 和 WinSxS 等关键运行环境。

  • 性能表现:根据官方基准测试,在应用启动、数据库查询以及 Direct3D 图形渲染等场景中,Raven 均展现出优于 Wine 的表现。

例如,程序启动时间仅 0.04 秒,而对比测试中的 Wine 为 3.70 秒;SQLite 查询耗时 1.61 秒,而 Wine 为 5.32 秒;在 Direct3D 11 测试中,Raven 达到 2392 FPS,高于 Wine 的 1819 FPS。

下载安装

目前 Raven 官方还没有提供稳定版软件包,推荐的安装方式是从源码编译。

官方要求 Linux x86_64 环境,并且安装 CMake、C++20 编译器、Python 3.11 以及部分图形开发库。

首先,获取源码:

gitclone https://github.com/mirkobrombin/raven.gitcdraven

然后,编译 Raven:

cmake-S.-Bbuild-DCMAKE_BUILD_TYPE=RelWithDebInfo cmake--buildbuild-j2

编译完成后,可执行文件位于 build/native/raven。

接下来就是安装应用程序,具体可以参考文档:

https://useraven.org/docs/quick-start/

总结

Raven 是一个面向 Linux 的下一代 Windows 运行时项目,它不依赖虚拟机,而是通过自研 Windows 内核接口、Win32 子系统、注册表、服务管理器以及 DirectX 图形栈,让 Windows 应用能够使用官方安装程序直接运行,在保持兼容性的同时展现出接近原生运行的性能潜力。