在Ubuntu上打造娱乐终端

Posted by Hsz on September 10, 2025

在Ubuntu上打造娱乐终端

即便是在不久之前,Linux系统一般都认为是服务器和开发者的专属,但随着Valve的steam deck的成功,以及微软对开源的拥抱,Linux的桌面娱乐生态也迎来了前所未有的发展.现如今,Linux桌面娱乐生态已经足够丰富,足以满足大部分人的娱乐需求了.这篇文章我们将专注于在Ubuntu上打造娱乐终端这一话题.

Linux下的游戏生态

steam大家都知道,知名的游戏平台嘛.但在linux下steam是一个神奇的存在,某种程度上可以说是steam盘活了桌面linux的游戏生态都不过分.

steam最基本的能力当然是让玩家可以方便的打游戏,阀门社为了这个目标煞费苦心,他们的努力直接给linux平台大范围扩展了生态,以至于steam即便不打游戏都是linux上的必装软件.

linux的相关工具

在linux上使用steam,我们需要安装一些相关的工具,这些工具可以帮助我们更好的管理和使用steam.下面是一些推荐的软件

软件 渠道 说明
steam 官网下载 知名的pc游戏平台
ProtonUp-Qt flathub 为steam管理GE-Proton
protontricks flathub 为Steam/Proton游戏以及其他常见Wine功能运行Winetricks命令

N卡安装steam的额外依赖

steam为了可以兼容老游戏,会要安装很多32位的依赖,如果你是n卡,直接安装steam它会给你报错

You are missing the following 32-bit libraries, and Steam may not run:

libc.so.6

要解决这个问题,我们需要先额外安装两个依赖

  1. 安装32位的libc6

     sudo apt install libc6:i386 
    
  2. 安装nvidia-driver对应版本的32位驱动

     dpkg -l | grep nvidia-driver # 获取到驱动版本 比如575
     sudo apt install libnvidia-gl-575:i386 #安装对应32位依赖
    

添加非steam应用

steam除了可以管理它自己平台上的软件,也可以自己给它添加软件由他启动

添加非steam应用-入口

添加非steam应用-选应用

steam runtime

如果游戏也算应用的话steam在linux上可能是最大的应用分发渠道了.steam通过steam-linux-runtime支持原生linux应用.

而这个steam-linux-runtime实际上就是一个通用的轻量级沙盒,包含了一个统一的库环境并用namespace与操作系统隔离.一些游戏开发相关的开源应用比如blender,godot,原生支持linux的游戏比如dota也都可以使用这种方式运行.

由于这个环境也是用namespace做抽象的,所以性能损失也是有的,只是没那么多.

话虽如此,我个人还是不太推荐用steam管理除游戏以外的linux原生应用的,一方面这种应用太少,另一方面这类应用都往往是对计算性能要求比较高的类型,白白损失性能还是太可惜了.

转译应用

其实很久之前就有一个开源项目wine致力于让linux和macos可以执行windows程序.起工作原理可以理解为将windows程序调用的各种系统依赖在linux/macos上重新实现一遍,然后让windows程序调用这些被转译的依赖以执行.这一套方案原理上逻辑上没啥问题,但一直以来支持并不好,主要原因是图形接口的转译跟不上.

  1. 一方面是厂商不开源,让转译工作难以进行,
  2. 另一方面是开源的工具(opengl这类)性能拉胯.
  3. 最后就是项目是社区驱动的,没钱没资源,维护自然也跟不上

而就在最近几年转译应用忽然就迎来了春天,主要取决于两点

  1. 微软开始拥抱开源了,
  2. 阀门社开始做steam deck了.

总而言之,阀门社搞了个开源的转译层项目proton.这直接让linux下可以正常跑大部分windows平台的游戏,还顺便让其他windows软件也可以借助steam进行管理运行.

我们就以官网下载的原生版本的steam为基准,介绍转译应用.

使用steam安装proton

首先我们要先安装steam,由于steam本身是一个启动器,后需可能会有很多需要手动操作的部分,因此最好是原生安装方便手动调试.然后进入steam,进入,勾选工具,找到proton,一般装个最新版本就够用了.也可以多装一个proton experimental备用,然后视游戏安装相关的反作弊运行时即可.

使用ProtonUp-Qt安装proton-ge

proton项目是开源的,除了steam官方的proton,自然也会有魔改proton.其中最知名的自然就是proton-ge,这个第三方的魔改proton据说比官方版本效率更高些,而且兼容性会更好些,虽然也一样可能有兼容性问题.

proton-ge官方给的安装方式还是比较麻烦的,我们可以使用ProtonUp-Qt来进行自动安装,只要打开后选择最新版本安装即可.需要注意steam必须是原生安装的,否则安装位置会不对了.

安装proton-ge

使用proton运行windows软件

即便是安装好proton后,windows平台的软件也是不能直接下载了用的,我们需要选中已经购买好的游戏,点击右侧设置(齿轮按钮)->属性->兼容性,选一个proton版本强制指定兼容层.这样游戏就可以下载运行了.

设置proton-入口

设置proton-选择版本

至于能不能玩,这就得群策群力了,protondb是一个steam上游戏兼容性的数据网站,主要靠社区玩家提交报告来确定特定游戏的兼容性.我们可以先在其中查看

游戏帧数检测

我们看到很多评测视频里会有帧数(FPS)等指示用来观察游戏的流畅程度.在linux下也有,需要使用flightlessmango/MangoHud这个软件.

sudo apt install mangohud

安装完成后我们可以在steam中设置启动选项修改mangohud %command%

启动选项修改

默认会在游戏界面的左上角给出cpu,gpu占用和帧数数据.我们可以在~/.config/MangoHud/MangoHud.conf文件中对展示的内容进行自定义,具体有哪些参数可以看这张表.建议像我下面这样设置

cpu_temp
gpu_temp
ram
vram
position=top-left

linux下的音影娱乐

linux下的音影娱乐生态其实也挺丰富的,这里就不一一介绍了,只推荐几个我个人觉得不错的软件

小黄鸭(Lossless Scaling)伪双卡交火

Lossless Scaling是steam上的一个小软件,它可以让我们在低分辨率下运行游戏,然后将画面放大到全屏显示,还可以进行插帧.如果我们刚好有两块显卡,那么就可以用这个软件让一块显卡专门负责游戏的渲染,另一块显卡专门负责桌面的插帧显示,这样就相当于双卡交火了.遗憾的是官方版本是windows限定,不过有个开源插件lsfg-vk,用它就可以在linux下使用这项伪双卡交火技术了.注意这个软件用到了Vulkan,你得确保你的显卡驱动支持Vulkan.

串流

用steam串流

说到串流可能大家想到的更多的是sunshine-moonlight的串流组合.但实际情况是在用N卡的情况下sunshine强无敌,而在用a卡尤其是apu的核显的情况下sunshine并不好用,尤其在linux下根本用不了.反而是steam link效果还不错.

用法也不复杂

  1. 接收端的机器安装steam link,苹果直接在app store里下,安卓则去官网下即可,之后打开它
  2. 发送端机器打开steam,在steam->设置中找到远程畅玩,激活后配对流式应用即可.如果你已经有配对好了的就需要先取消设备配对然后再做配对
  3. 这时你接收端的机器会有个pin码,在发送端机器中将这个码填上就配对完成了.

steamlink设置入口-1 steamlink设置入口-2

steam串流非常吃网络,发送端一定要用有线的方式接入网络,接收端也尽量在网络覆盖范围内.网络稳定串流才能稳定

mycard

mycard很神奇的自带linux支持,这个平台主要是用来玩ygopro和东方的,

不想花钱买卡又想打游戏王的牌佬就可以在linux下很轻松的玩到ygopro2了.在linux下首页下载提供的是一个appimage,下载下来后给个+x权限人工集成下就能用了.

有如下注意事项:

  • mycard下载游戏依赖aria2c,需要先安装aria2c再安装mycard
  • mycard解压游戏依赖zstd,需要先安装zstd(sudo apt install zstd)再安装mycard
  • 游戏王只能使用ygopro2,因为ygopro的依赖编译有问题,会缺少irrKlang,而ygopro2是unity开发,没有依赖问题
  • 东方游戏都是window游戏,mycard仅能用作下载,运行需要借助steam的proton