Mobile wallpaper 1
1310 字
7 分钟
Linux 生存日记(三/如何运行Windows程序)

上一站: linux-生存日记(二-开始吧!)

虽然其实上一章还没写完,但冥最近沉迷终末地,正好作为一个不错的契机来先完成这一篇以及SP1的生存日记

在Linux上运行Windows程序是非常常见的需求,包括不少办公软件、设计工具、游戏 等。虽然Linux生态系统日益丰富,但仍有不少Windows专用的软件并没有提供Linux支持。 不过幸运的是,Linux上依旧有不少方法可以让我们运行Windows程序,下面是几种常见的方案。如果无需了解背景知识,可以直接跳到Bottles部分开始阅读。

Wine#

Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,macOS 及 BSD 等)上运行 Windows 应用的兼容层。Wine 不是像虚拟机或者模拟器一样模仿内部的 Windows 逻辑,而是將 Windows API 调用翻译成为动态的 POSIX 调用,免除了性能和其他一些行为的内存占用,让你能够干净地集合 Windows 应用到你的桌面。

Wine也是如今几乎所有除虚拟机外在Linux上运行Windows程序的解决方案的基础。它支持各种应用程序和游戏,虽然并非所有程序都能完美运行,但随着时间的推移,兼容性不断提升。

鉴于直接使用Wine的复杂性,在这里冥仅将其作为背景知识介绍,如需深入了解可以前往他们的官网

Proton#

如果主要是为了玩游戏,那请直接向 Valve 致敬。

Steam 内置的 Proton 是基于 Wine 的改进版,专门为游戏做了海量的优化(特别是 DXVK 将 DirectX 转换成 Vulkan)。它被深度集成在 Steam 客户端中,作为 “Steam Play” 功能的核心,让 Linux 用户能够“开箱即用”地运行绝大多数专门为 Windows 开发的游戏,而无需关心复杂的底层配置。

Valve建议大多数用户应该使用Steam客户端自带的Proton,但Valve也提供了Proton的源代码,让独立使用Proton的各种衍生版成为了可能。

如果想知道想玩的游戏在 Linux 下的运行状况,可以去 ProtonDB 查查兼容性报告,那里汇聚了大量玩家的测试反馈。

Bottles#

对于日常场景,冥在这里强烈推荐使用 Bottles 来运行Windows程序。它提供了一个现代化的图形界面来管理 Wine 前缀(Prefix)。每一个“瓶子”都是一个独立的 Windows 环境,互不干扰,非常适合用来测试或者隔离运行不同的软件,在bottles里可以自由的选择不同的Wine/Proton版本来运行不同的软件,同时,社区也提供了大量预设配置,方便一键安装常用依赖,另外,如果Bottles提供的运行器不能满足需求,也可以较为方便的使用第三方运行器。(详见Linux 生存日记(SP1/我要玩终末地)

Bottles 官方最推荐的安装方式是使用 Flatpak,这样可以保证环境的一致性,也不用担心弄乱系统依赖。

要使用它,首先得确保系统上已经配置好了 Flatpak 和 Flathub。大家可以去 Flathub Setup 找到针对所有发行版的详细教程。为了方便各位,暗雨冥这里整理了几个常见发行版的一键作业:

Ubuntu / Debian

sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Fedora / CentOS / RHEL

sudo dnf install flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Arch Linux

sudo pacman -S flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

openSUSE

sudo zypper install flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

环境准备好之后,安装 Bottles 就只需要一行命令了:

flatpak install flathub com.usebottles.bottles

在 Bottles 里,可以实现:

  1. 新建瓶子:选择环境类型(游戏、软件、自定义)。
  2. 安装依赖:在“依赖”选项卡里一键安装 .NET, Visual C++ Redistributables 等常用组件。
  3. 运行程序:直接运行 exe,或者把快捷方式添加到系统菜单。

对于大部分 Windows 软件,Bottles 往往能提供相当不错的体验。 同时,Bottles支持管理Steam的Proton前缀,可以方便的在Bottles里使用不同版本的Wine/Proton来运行Steam游戏。

虚拟机:最后的防线#

如果 Wine 和 Proton 都无法满足需求,或者需要运行带有反作弊系统(如某些网游)以及极度依赖专用驱动的软件,那么虚拟机是更稳妥的选择,关于这部分内容,暂不在本篇展开,仅列举常见解决方案。

  • VirtualBox:简单易用,适合新手。
  • KVM/QEMU + Virt-Manager:Linux 原生虚拟化方案,性能极强,几乎只有 CPU 损耗,但配置稍显复杂。

在虚拟机里跑一个完整的 Windows,虽然资源开销大,但兼容性几乎是 100%(不涉及硬件的情况下)的。

总结#

至此,就是目前在Linux上运行Windows程序的几种主流方法,但以终末地为例,Bottles中提供的runner并不能成功运行,这一部分内容请移步Linux 生存日记(SP1/我要玩终末地)

Linux 生存日记(三/如何运行Windows程序)
https://dkrain.com/posts/linux-生存日记三-如何运行windows程序/
作者
暗雨冥
发布于
2026-01-30
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00