Wine (全名为 Wine Is Not an Emulator) 是 Linux 平台上知名的开源免费「虚拟兼容层」工具,从英文名「Wine 不是一个模拟器」可以看出,它并非像虚拟机那样简单粗暴虚拟一整个 Windows 系统再在其上执行你需要的应用,而是以兼容的方式直接运行 exe 程序。比如知名的 SteamDeck 游戏机能用 Linux 系统流畅运行 Windows 游戏,其底层技术实现的基石就是 Wine。
Wine 的工作原理?
Wine 的工作方式是直接将 Windows 程序的 API 和指令「实时转换」(转译) 成 Linux 可以理解并执行的指令,从而避免了在底层完整虚拟运行一整个 Windows 系统所消耗过多的资源。 换句话说,Wine 就像一个程序翻译器,可以实现让 Windows 的 EXE 程序顺利在 Linux 或 macOS 平台上「解释」转译运行。
随着开源社区不断的发展,Wine 支持的应用程序越来越多,兼容性也稳步在提升,直到如今 Wine 已经成为很多用户和企业必备的「Windows 兼容」生产力工具了。甚至,还有不少玩家通过 Wine 在 Linux 上玩 PC 游戏!
Wine 目前已支持数万个 Windows 应用和游戏,比如实现在 树莓派 / Linux 上运行 QQ、微信、PhotoShop 等,在 Linux 上运行大型 PC 游戏等,不过部分软件或游戏需要一定的特殊配置。
WINE:Linux 安装 Windows 应用体验
总的来说,WINE 相比虚拟机可以大幅节省资源,效率更高!它无需跑整个系统,而是将 EXE 的代码「翻译」成 Linux 能执行动态的 POSIX 调用,免除了性能和其他一些行为的内存占用。让你能够「魔法」般地在 Linux 系统上运行 Windows 软件或游戏等应用程序。
Wine 10.0 更新内容:
- ARM64 支持:完全支持 ARM64EC 架构,允许混合 ARM64EC 和普通 ARM64 代码,并实现了 64 位 x86 模拟接口。系统页面大小要求为 4K。
- 图形改进:高 DPI 支持更准确,Vulkan 子窗口渲染支持增强,Vulkan 1.4.303 规范支持,GdiPlus 支持字体链接。
- 桌面集成:新增实验性显示模式设置模拟机制,提供新的桌面控制面板小程序
desk.cpl
,支持禁用系统托盘图标和桌面 shell 启动器。 - Direct3D 改进:GL 渲染器要求更新,Vulkan 渲染器支持多个动态状态扩展,新增基于 HLSL 的固定功能管道支持。
- 多媒体:引入基于 FFmpeg 的后端,改进 Media Foundation 多媒体管道,支持 DirectMusic 加载 MIDI 文件。
- 输入/HID 设备:支持多点触控、蓝牙驱动程序初始版本,改进操纵杆控制面板和 Dvorak 键盘布局支持。
- 国际化:更新区域设置数据、Unicode 字符表和时区数据。
- 互联网和网络:JavaScript 引擎改进,支持
ArrayBuffer
和DataView
对象。 - RPC/COM:ARM 平台完全支持 RPC/COM 调用,所有生成的 COM 代理使用解释封送模式。
- 内核:支持进程提升、直接从 DBus 获取磁盘标签、重新实现串行端口事件异步等待。
- macOS:不再需要预加载器,支持 NT 系统调用模拟。
- 内置应用程序:改进命令提示符、调试器、文件比较工具等。
- 开发工具:IDL 编译器改进,支持生成旧格式类型库,
winegcc
和winebuild
支持 ARM64X 模块。 - 构建基础设施:支持 Clang 静态分析器,生成
compile_commands.json
文件。 - 捆绑库:更新多个库版本,如 Vkd3d、Faudio、FluidSynth 等。
- 外部依赖:使用 FFmpeg 实现新的 Media Foundation 后端,32 位 ARM 构建需要 PE 交叉编译器。
这些改进提升了 Wine 10.0 在 ARM64、图形、多媒体、输入设备等方面的兼容性和性能。