目标:帮你根据自己的需求,在 兼容性 / 性能 / 方便性 / 安全性 之间快速选出最合适的方式,把 Windows 软件或游戏跑在 Linux 上。
一、为什么需要在 Linux 上运行 Windows 程序
典型原因:
- 某些行业应用只提供 Windows 版本(财务、报表、专有硬件工具)。
- 游戏:大量只支持 DirectX 的 Windows 游戏。
- 过渡期:迁移到 Linux 但暂时离不开少数 Win 工具。
- 自动化 / 批处理:在服务器或容器里跑旧版 CLI 工具。
二、主要技术路线对比速览
| 路线 | 核心原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Wine | 用户态实现 Win32/Win64 API,调用 Linux 内核与 X/Wayland | 轻量、启动快、资源占用低 | 兼容性不完全,配置细节多 | 办公软件、工具、小型应用 |
| Proton (Steam) | Valve 基于 Wine + DXVK/VKD3D 补丁 | 游戏优化、集成好 | Steam 外独立用需额外配置 | Steam 游戏 |
| PlayOnLinux / Lutris / Bottles | 在 Wine 上的图形化管理层 | 多版本 Wine、安装脚本、易管理 | 学习仍要懂 Wine 基础 | 想少折腾的用户 |
| 虚拟机 (VirtualBox/VMware) | 完整 Windows 系统 | 兼容性 100%(驱动除外) | 资源重、图形性能较差 | 办公、老系统依赖 |
| KVM + GPU 直通 | 硬件虚拟化 + 直通 | 游戏/专业渲染接近原生 | 配置复杂,硬件要求高 | 高性能需求 |
| 远程/云桌面 | 服务器跑 Windows,客户端访问 | 本地零负担 | 需网络/延迟,版权成本 | 偶尔使用的专有软件 |
| 其它兼容层 (如 hangover, box86/box64) | 指令/ABI 转换 | 特殊场景 | 生态不成熟 | ARM 上跑 x86/Win 软件 |
三、Wine:核心兼容层
1. Wine 工作原理简述
Wine 不是模拟器('Wine Is Not an Emulator'),它把 Windows API 调用翻译成 POSIX / Linux 调用;对图形用 X11/Wayland + OpenGL/Vulkan,对注册表做文件化实现,对 PE 程序加载做兼容层。优点是性能损耗低(多数应用 0-10%)。
2. 安装 Wine
不同发行版:
# Debian / Ubuntu / Mint
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install --install-recommends winehq-stable wine32 wine64 winetricks
# 若官方源版本旧,使用 WineHQ 源(略)
# Arch / Manjaro
pacman -S wine wine-mono wine-gecko winetricks
dnf install wine winetricks
zypper install wine winetricks

