Steam/故障排除
- 请确保您已按照 Steam#安装 进行操作。
- 如果 Steam 客户端/游戏无法启动和/或您收到关于库的错误消息,请阅读 #Steam 运行时 并查看 #调试共享库。
- 如果问题与网络有关,请确保您已转发 Steam 所需的端口。
- 如果问题是关于游戏,请查阅 Steam/特定游戏故障排除。
Steam 运行时
Linux 版 Steam 附带了自己的一组库,称为 Steam 运行时。默认情况下,Steam 在运行时环境中启动所有 Steam 应用程序。Steam 运行时位于 ~/.steam/root/ubuntu12_32/steam-runtime/
。
如果您将 Steam 运行时库与系统库混合使用,您将遇到二进制不兼容问题,请参阅 steam-for-linux issue #4768。二进制不兼容可能导致 Steam 客户端和游戏无法启动(表现为崩溃、挂起或静默返回)、音频问题和各种其他问题。
steam 软件包提供了两种启动 Steam 的方法
steam-runtime
(别名steam
),它通过LD_PRELOAD
环境变量 覆盖已知会导致问题的运行时库(参见 ld.so(8))。/usr/lib/steam/steam
,默认的 Steam 启动脚本
由于 Steam 运行时库较旧,它们可能缺少较新的功能,例如,Steam 运行时的 OpenAL 版本缺少 HRTF 和 surround71 支持。
Steam 原生运行时
steam-native-runtime 软件包依赖于 130 多个软件包,以构成 Steam 运行时的原生替代品,但是某些游戏可能仍然需要额外的软件包。
此软件包提供了 steam-native
脚本,该脚本使用 STEAM_RUNTIME=0
环境变量启动 Steam,使其忽略其运行时并仅使用系统库。
您也可以在不使用 steam-native-runtime 的情况下使用 Steam 原生运行时,只需手动安装您需要的软件包即可。请参阅 #查找缺失的运行时库。
要查看程序或共享库所需的共享库,请在其上运行 ldd
命令,请参阅 ldd(1)。LD_LIBRARY_PATH
和 LD_PRELOAD
环境变量 可以更改加载哪些共享库,请参阅 ld.so(8)。因此,为了正确调试程序或共享库,重要的是您的调试环境中的这些环境变量与您要调试的环境相匹配。
如果您找到了缺失的库,您可以使用 pacman 或 pkgfile 搜索包含缺失库的软件包。
查找缺失的游戏库
如果游戏无法启动,一个可能的原因是它缺少所需的库。您可以通过运行 ldd game_executable
来找出它请求的库。game_executable
可能位于 ~/.steam/root/steamapps/common/
中的某个位置。请注意,大多数这些“缺失”的库实际上已经包含在 Steam 中,不需要全局安装。
查找缺失的运行时库
如果在使用 steam-native
时,个别游戏或 Steam 本身无法启动,则您可能缺少库。要查找所需的库,请运行
$ cd ~/.steam/root/ubuntu12_32 $ file * | grep ELF | cut -d: -f1 | LD_LIBRARY_PATH=. xargs ldd | grep 'not found' | sort | uniq
或者,使用 steam-runtime
运行 Steam,并使用以下命令查看 Steam 正在使用的非系统库(并非所有这些库都是 Steam 运行时的一部分)
$ for i in $(pgrep steam); do sed '/\.local/!d;s/.* //g' /proc/$i/maps; done | sort | uniq
调试 Steam
Steam 启动器将其 stdout 和 stderr 重定向到 /tmp/dumps/USER_stdout.txt
。这意味着您不必从命令行运行 Steam 即可查看该输出。可以调试 Steam 以获取更多信息,这可能有助于找出某些东西无法工作的原因。
您可以使用 gdb
、cgdb
、valgrind
、callgrind
、strace
之一设置 DEBUGGER
环境变量,然后启动 steam
。
例如使用 gdb
$ DEBUGGER=gdb steam
gdb
将打开,然后键入 run
,这将启动 steam
,一旦发生崩溃,您可以键入 backtrace
以查看调用堆栈。
运行时问题
使用 Bumblebee 时出现“GLBCXX_3.X.XX”未找到
此错误可能是因为 Steam 打包了过时的 libstdc++.so.6
。请参阅 #查找缺失的运行时库,了解如何解决坏库的问题。另请参阅 steam-for-linux issue 3773。
Steam>警告:初始化 SDL 线程优先级管理器失败:未找到 SDL
解决方案:安装 lib32-sdl2AUR 软件包。
游戏立即崩溃
这可能是由于 #Steam 运行时 问题引起的,请参阅 #调试共享库。
在游戏属性中禁用游戏内 Steam Overlay 可能会有所帮助。
最后,如果这些方法都不起作用,您应该检查 Steam 的输出中是否有来自游戏的任何错误。您可能会遇到以下情况
munmap_chunk():无效指针
free():无效指针
在这些情况下,尝试将有问题的游戏中的 libsteam_api.so
文件替换为正常工作的游戏中的文件。当禁用 Steam 运行时时,对于最近未更新的游戏,通常会发生此错误。AYIM、Bastion 和 Monaco 都遇到过此错误。
如果游戏崩溃并显示 terminate called after throwing an instance of 'dxvk::DxvkError'
,则可能是 安装 了冲突版本的 vulkan。lib32-amdvlk、lib32-vulkan-intel 和 Nvidia vulkan 驱动程序是互斥的。可以通过卸载不需要的驱动程序来解决此问题。要获取有关芯片组供应商的信息,可以运行
# lshw -C display | grep vendor
要获取已安装软件包的列表
# pacman -Qs vulkan
游戏和 Steam 在游戏开始后崩溃
如果输出以下错误
failed to dlopen engine.so error=/home/GAMEPATH/bin/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /usr/lib32/libopenal.so.1)
移动不兼容的 lib 可以作为一种解决方法。
mv .local/share/Steam/steamapps/common/GAME/bin/libgcc_s.so.1 .local/share/Steam/steamapps/common/GAME/bin/libgcc_s.so.1.b
某些游戏在焦点时启动时冻结
已知使用 ForceFullCompositionPipeline
、特定 Proton 版本和 Nvidia 驱动程序版本 535 的组合 会导致某些游戏冻结 在使用 DXVK/Vulkan 在 Xorg 下启动时。使用 Alt+Tab 允许将 Steam 变为焦点,并且游戏似乎在后台正常运行。解决方案:禁用 ForceFullCompositionPipeline
或降级 Nvidia 驱动程序。
找不到版本“CURL_OPENSSL_3”
这是因为单独的 curl 与以前的版本不兼容。您需要安装兼容性库
可能会显示以下消息之一
# Nuclear Throne ./nuclearthrone: /usr/lib32/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./nuclearthrone) # Devil Daggers ./devildaggers: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./devildaggers)
您需要安装 libcurl-compat 或 lib32-libcurl-compat 并手动链接兼容性库
# Nuclear Throne $ ln -s /usr/lib32/libcurl-compat.so.4.4.0 "LIBRARY/steamapps/common/Nuclear Throne/lib/libcurl.so.4" # Devil Daggers $ ln -s /usr/lib/libcurl-compat.so.4.4.0 LIBRARY/steamapps/common/devildaggers/lib64/libcurl.so.4
Steam webview/游戏浏览器在原生运行时中无法工作(黑屏)
自从新的 Steam 好友 UI 更新以来,客户端 webview 在原生运行时中无法正常工作。
./steamwebhelper: error while loading shared libraries: libpcre.so.3: cannot open shared object file: No such file or directory
可以通过预加载 glib 库来解决此问题;这些库不需要 libpcre 和 selinux 即可工作。
$ LD_PRELOAD="/usr/lib/libgio-2.0.so.0 /usr/lib/libglib-2.0.so.0" steam-native
或者,您可以创建指向原生 Arch libpcre 库的符号链接。
# ln -s /usr/lib/libpcre.so /usr/lib64/libpcre.so.3
自从大约 2022 年 3 月 3 日的更新以来,有一些报告称在应用上述解决方法后,黑屏仍然持续存在。
目前的权宜之计是使用 -no-cef-sandbox
选项运行 Steam。更多信息可以在 Github Steam-For-Linux 仓库 Issue #8451 和 #8420 中找到。
Steam:发生 X 错误
当使用 NVidia GPU 和专有驱动程序时,Steam 可能无法启动,并且(如果从终端运行)会产生以下形式的错误
Steam: An X Error occurred X Error of failed request: GLXBadContext Major opcode of failed request: 151 Serial number of failed request: 51 xerror_handler: X failed, continuing
安装软件包 lib32-nvidia-utils (或 lib32-nvidia-390xx-utilsAUR 如果使用旧 GPU)。
如果已安装 lib32-nvidia-utils,请确保软件包版本与 nvidia 匹配,使用
# pacman -Qs nvidia
如果驱动程序不匹配,您可能需要更改您正在使用的 镜像 以安装驱动程序。
如果您正在使用 AMD,已启用 10 位颜色深度,并且遇到此问题。您可能需要禁用 10 位颜色深度。
导致此错误消息的另一个问题可以通过 删除 config.vdf 文件 来解决
$ rm ~/.local/share/Steam/config/config.vdf
Steam:兼容性工具配置失败
如果您尝试使用 Proton 运行原生游戏,但在启动游戏后立即收到 Steam 兼容性工具错误,您可能需要重新安装运行时。
- 导航到您的 Steam 库。
- 在游戏列表上方的下拉菜单中,选中工具选项以使其可见。
- 搜索 Proton,右键单击每个已安装的工具,访问属性,打开本地文件选项卡,然后单击每个条目的验证工具文件完整性。
- 搜索 Steam Linux Runtime 并重复相同的步骤。如果没有可用的,请安装最新的 Steam Linux Runtime - Soldier。
使用自定义内核时游戏启动后立即关闭
确保您已在常规设置 -> 命名空间支持中启用用户命名空间。
Steam 库无法启动
打开 steam 库时,要么不显示任何内容,要么显示短暂的启动画面,但没有窗口出现。在终端窗口中运行 /usr/bin/steam-runtime
会给出此错误
Assertion 'device' failed at src/libsystemd/sd-device/device-private.c:103, function device_get_tags_generation(). Aborting.
错误报告已提交:#79006
另请参阅讨论:systemd 253.5-2 更新后 Steam 无法启动
一种解决方法是安装 lib32-libnm。
图形问题
Xwayland 和 HiDPI 下文本和图形模糊
当 Steam 作为 Xwayland 客户端在 使用 HiDPI 缩放的合成器下运行时,您可能会发现 Steam 和游戏以半分辨率渲染,然后放大以适应 HiDPI 屏幕。这会导致图形模糊。
一种选择是在嵌套的 gamescope 合成器下运行 Steam。安装 gamescope 软件包
$ gamescope -f -m 1 -e -- steam -gamepadui
这会在全屏模式下以“大屏幕”模式(实际上是 Steam Deck 模式)运行 Steam,而无需缩放(即以全分辨率)。相同的设置也应传播到在 Steam 下运行的游戏。
另一种选择是将您的合成器配置为完全阻止 Xwayland 缩放应用程序。例如,Hyprland 用户可以添加
xwayland { force_zero_scaling = true }
到 hyprland.conf 文件中以阻止 Xwayland 缩放任何应用程序。请注意,所有使用 Xwayland 的应用程序将停止缩放,因此在 HiDPI 显示器上,这些应用程序中的文本和其他元素可能会变得太小而无法舒适地查看。
Steam 闪烁/闪动黑屏,无法加载商店/库或其他页面
当在 Wayland 上启动 Steam(未在 X11 上确认)并在某些情况下使用双显卡时,Steam 客户端显示不稳定,出现黑屏和闪烁/闪动。这是由于 steam.desktop 文件中 PrefersNonDefaultGPU 选项设置为 true 引起的。
方法 1 - 编辑 steam.desktop 文件
找到您从应用程序启动器启动的 .desktop 文件,并更改行:从:PrefersNonDefaultGPU=true 到:PrefersNonDefaultGPU=false 通常位于 ~/.local/share/applications/steam.desktop
如果已打开,请关闭 steam 并重新启动。
.右键单击 .desktop 文件 > 编辑应用程序... > 选择“应用程序”选项卡 > 高级选项 > 取消选中“使用专用显卡运行”选项 > 保存更改,并重新启动 Steam
权宜之计 1 - 从终端运行 steam
已注意到从终端启动 steam 不受影响,因此这是一个已知的权宜之计。
$ steam &
末尾的与号 (&) 用于在后台运行 steam,Steam 启动后可以关闭终端。
音频问题
如果以下各节未解决问题,则使用 #Steam 原生运行时 可能会有所帮助。
配置 PulseAudio
显式依赖 ALSA 的游戏可能会破坏 PulseAudio。请按照 PulseAudio#ALSA 的说明使这些游戏改用 PulseAudio。
没有音频或 756 段错误
首先 #配置 PulseAudio 并查看是否解决了问题。如果您在 Steam 客户端中播放的视频中没有音频,则可能是 Steam 打包的 ALSA 库无法正常工作。
尝试在 steam 客户端中播放视频会导致类似于以下的错误
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
一种解决方法是重命名或删除 alsa-lib
文件夹和 libasound.so.*
文件。它们可以在以下位置找到
~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/
另一种解决方法是将 libasound.so.*
库添加到 LD_PRELOAD
环境变量中
$ LD_PRELOAD='/usr/$LIB/libasound.so.2 '${LD_PRELOAD} steam
如果音频仍然无法工作,将 Pulseaudio-libs 添加到 LD_PRELOAD
变量可能有所帮助
$ LD_PRELOAD='/usr/$LIB/libpulse.so.0 /usr/$LIB/libpulse-simple.so.0 '${LD_PRELOAD} steam
请注意,它们的名称可能会随着时间推移而更改。如果是这样,则有必要查看
~/.steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu
并找到新的库及其版本。
FMOD 声音引擎
FMOD 音频中间件软件包有点 bug,因此使用它的游戏可能会出现声音问题。
通常在未使用过的声音设备用作 ALSA 的默认设备时发生。请参阅 高级 Linux 声音架构#设置默认声卡。
- 受影响的游戏:Hotline Miami, Hotline Miami 2, Transistor
PulseAudio & OpenAL:音频流无法在设备之间移动
如果您使用 PulseAudio 并且无法在接收器之间移动音频流,则可能是因为最近的 OpenAL 版本默认不允许移动音频流。尝试将以下内容添加到您的 ~/.alsoftrc
[pulse] allow-moves=true
Steam 语音和游戏中麦克风爆音
如果您在使用 Steam 语音或游戏中遇到音频输入爆音,您可以尝试使用环境变量 PULSE_LATENCY_MSEC=30
启动 steam
Steam 客户端问题
无法浏览文件系统以添加库文件夹或库文件夹显示为空
如果尝试添加库文件夹时文件选择器为空,或者如果以前设置的文件夹现在显示已安装 0 个游戏,则可能是由于根目录或库文件夹上的时间戳不正确。可以使用 stat 检查时间戳
$ stat path
如果时间戳在未来,请运行
$ touch path
将其重新初始化为当前日期,然后重新运行 Steam。
由于缺少执行权限而无法添加库文件夹
如果您在另一个驱动器上添加另一个 Steam 库文件夹,您可能会收到错误消息
New Steam library folder must be on a filesystem mounted with execute permissions
确保您在 /etc/fstab
中使用正确的标志挂载文件系统,通常通过将 exec
添加到挂载参数列表中。该参数必须出现在任何 user
或 users
参数之后,因为这些参数可能暗示 noexec
。
如果您的库文件夹不包含 steamapps
目录,也可能会发生此错误。以前的版本使用 SteamApps
代替,因此请确保名称完全小写。
由于 Steam 运行时问题也可能发生此错误,并且可以通过遵循 #查找缺失的运行时库 部分或由于设备上没有剩余空间来修复。为了调试目的,从控制台运行 Steam 并观察日志可能很有用。
下载速度异常缓慢
如果您的 Steam(游戏、软件……)客户端下载速度异常缓慢,但浏览 Steam 商店和观看视频不受影响,安装 DNS 缓存程序(例如 dnsmasq)可能会有所帮助 [1]。
禁用 IPv6 也可能有所帮助。请参阅 [2] 以获取更多信息。
另一个可能的解决方法是通过创建带有以下行的 ~/.steam/steam/steam_dev.cfg 文件来禁用 HTTP2 [3]
@nClientDownloadEnableHTTP2PlatformLinux 0
在 steam_dev.cfg 文件中添加以下行以增加服务器连接数可能会有所改善,但也可能会对速度产生负面影响
@fDownloadRateImprovementToAddAnotherConnection 1.0
您也可以尝试运行 `steam` 而不是 `steam-runtime`。
“需要在线”错误
如果 Steam 启动器拒绝启动,并且您在在线时收到错误消息:“Fatal Error: Steam needs to be online to update”,则可能是名称解析出现问题。
尝试安装 lib32-systemd、 lib32-libcurl-compat、 nss-mdns、 lib32-nss、 lib32-glu 或 lib32-dbus。
这也可能只是 DNS 解析工作不正常,而且并不总是显而易见,因为现代浏览器将使用自己的 DNS 服务器。请遵循 域名解析。
如果 systemd-resolved 提供 DNS 解析,Steam 可能会出现问题。确保存在 lib32-systemd 以解决此问题。
如果 DNS 解析工作正常,但 Steam 启动器仍然显示相同的错误消息,则启用 DNS 缓存(例如通过“名称服务缓存守护程序”nscd.service
)已被证明可以解决此问题。
目前尚不清楚运行 nscd
究竟如何使其再次工作。请查看讨论页以获取更多信息。
Steam 忘记密码
- 相关链接:steam-for-linux#5030
Linux 版 Steam 存在一个错误,会导致它忘记某些用户的密码。
作为一种解决方法,在登录 Steam 后,运行
# chattr +i ~/.steam/registry.vdf
这将设置文件的 immutable 位,以便 Steam 无法修改、删除或重命名它,从而避免您被登出。
阻止崩溃内存转储
每次 Steam 崩溃时,它都会将内存转储写入 /tmp/dumps/
。如果 Steam 进入崩溃循环,转储文件可能会变得非常大。当 /tmp
挂载为 tmpfs 时,可能会不必要地消耗内存和交换文件。
为了防止这种情况,将 /tmp/dumps/
链接到 /dev/null
# ln -s /dev/null /tmp/dumps
或者,也可以创建并修改 /tmp/dumps
的权限。这样 Steam 将无法将转储文件写入该目录。
# mkdir /tmp/dumps # chmod 600 /tmp/dumps
这样做还有一个额外的好处,即 Steam 不会将这些转储上传到 Valve 的服务器。
Steam 播放视频的许可证问题
Steam 对某些视频使用 Google Widevine DRM。如果未安装,您将收到以下错误
This video requires a license to play which cannot be retrieved. This may be a temporary network condition. Please restart the video to try again.
要解决此问题,请按照 Steam 上的视频流 支持页面进行操作。
自从新的 Steam 好友 UI 更新以来,右键单击菜单中可能缺少“加入游戏”、“邀请加入游戏”和“查看游戏信息”条目。
为了解决这个问题,可能需要安装 lsof。
缓慢且无响应的用户界面
如果您在使用 Steam 客户端时遇到极其缓慢和迟缓的性能,禁用 Steam 客户端设置中界面选项卡下的在网页视图中启用 GPU 加速渲染选项可能会有所帮助。
好友列表也可能导致此问题。https://github.com/ValveSoftware/steam-for-linux/issues/7245 中提到了两种解决方法
Steam 无法正确启动
一个故障排除步骤是运行
$ steam-runtime --reset
这可以修复与损坏的安装相关的各种问题。
如果单击 Steam 任务栏图标没有弹出菜单,则可能需要安装 libappindicator-gtk2 和 lib32-libappindicator-gtk2 软件包并重启 Steam。
“您的浏览器不支持观看此直播所需的最低功能集”错误
如果您在尝试观看直播/广播时收到错误提示“您的浏览器不支持观看此直播所需的最低功能集”,请尝试以下两个故障排除步骤
- 导航到社区 > 直播。如果页面显示“正在更新 Steam”,请等待几分钟,看看该过程是否完成,如果一段时间后仍未完成,请取消它。现在测试您是否可以观看直播,例如单击社区 > 直播下显示的直播。
- 在大屏幕模式下启动直播(视图 > 大屏幕模式)。如果在大屏幕模式下直播启动正常,请检查切换回主界面后是否仍然有效。
- 触发 Steam 客户端直接解锁 H.264 解码,使用以下命令:
steam-runtime steam://unlockh264/
。Steam 客户端应以无头模式启动并运行解锁命令。等待一分钟以确保该过程完成,然后关闭并重新启动 Steam 客户端。
使用系统标题栏和边框
目前,Steam 客户端尝试自行管理其窗口,但这样做不正确,请参阅 steam-for-linux#1040。作为一种解决方法,您可以使用 steamwm 项目。像这样运行 Steam:./steamwm.cpp steam
。此外,该项目还提供了一个皮肤,可以删除非原生控件按钮和边框,但保留默认皮肤装饰。
更具选择性的 DPMS 抑制
默认情况下,Steam 客户端在运行时完全禁用屏幕保护,无论是否启动了游戏。
steam-screensaver-fixAUR 提供了此问题的解决方法:运行 steam-screensaver-fix-native
或 steam-screensaver-fix-runtime
。
这将允许您的屏幕在 Steam 运行时关闭,但如果启动了游戏,将继续抑制屏幕保护程序。
有关详细信息,请参阅 Valve GitHub 上的 Issue 5607。
2023 年 6 月 14 日更新后,Steam 窗口在 Nvidia GPU 上不显示
此问题似乎是由 Nvidia 驱动程序更新与新 Steam UI 发布到稳定渠道同时发生引起的。目前有四种方法似乎可以解决此问题。第一种是使用像 downgradeAUR 这样的工具将 Nvidia 驱动程序降级到 530.41.03,这应该可以在 Nvidia 或 Valve 修复此问题之前解决该问题。第二种解决方法是删除 ~/.cache/nvidia/GLCache/
中的 GLCache 目录。启动 Steam 后,使用 rm -r ~/.config/nvidia/GLCache
删除该目录。运行此命令后,Steam 应该会出现。第三种临时解决方法是运行 steam --reset
命令,该命令会重置 Steam 安装并注销用户。这应该适用于一个会话,或者直到系统重新启动。第四种解决方法是使用 steam -vgui
恢复到旧 UI。随着时间的推移,此 UI 可能会损坏,目前只有好友菜单似乎已损坏,但随着时间的推移,可能会有更多功能损坏。
降级时,请确保所有组件(内核模块 nvidia/nvidia-dkms、64 位用户空间 nvidia-utils 和 32 位用户空间 lib32-nvidia-utils)使用相同的版本,并且您已启动到更新后的 initrd 中。
启用 fractional scaling
如果 Steam 客户端窗口中的文本和图标在您的显示器上太小而无法阅读,则启用 fractional scaling 可能会有所帮助。Steam 客户端有一个设置选项可以启用它,位于设置 > 界面 > 缩放文本和图标以匹配显示器设置。启用此选项应指示客户端使用系统的 fractional scaling 设置。
但是,如果这没有自动生效,则有一个命令行参数可以强制 fractional scaling。使用 -forcedesktopscaling 1.5
标志运行 Steam 将客户端缩放到 1.5 倍大小。此值可以更改为适合您显示器的正确缩放比例因子。如果您希望永久更改此设置,可以编辑 steam.desktop
文件中的 Exec
字段。
Steam Beta 崩溃
如果您正在使用 Steam Beta(可以通过日志中是否存在 You are in the 'publicbeta' client beta
来确认)并遇到破坏性错误,请手动切换回非 Beta 版本
$ rm -f ~/.local/share/Steam/package/beta
在 https://github.com/ValveSoftware/steam-for-linux 上查找重复项后,报告该问题。
Steam Remote Play 问题
Remote Play 无法从 Arch Linux 主机连接到 Arch Linux 客机
您可能缺少 lib32-libcanberra。一旦您安装了它,它应该可以按预期工作。
这样,Steam 在尝试通过 Remote Play 启动游戏时应该不再崩溃。
硬件解码不可用
Remote Play 硬件解码使用 vaapi
,但 Steam 需要 libva2_32bit
,而 Arch 默认使用 64 位。
作为一个基本集合,这是 libva 和 lib32-libva。Intel 显卡用户还需要 libva-intel-driver 和 lib32-libva-intel-driver。
有关 vaapi 的更多信息,请参阅 硬件视频加速。
也可能需要删除 Steam 运行时版本的 libva,以便强制其使用系统库。当前正在使用的库可以通过以下方式找到
$ pgrep steam | xargs -I {} cat /proc/{}/maps | grep libva
如果这显示的位置在 ~/.local/Share/steam
中,则 Steam 仍在使用的其打包版本的 libva。这可以通过删除 ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libva*
中的 libva 库文件来纠正,以便 Steam 回退到系统库。
大屏幕模式在失去焦点后自行最小化
当您通过 Remote Play 玩游戏或您有多个显示器设置并将鼠标移出 BPM 窗口时,可能会发生这种情况。要防止这种情况,请设置 SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0
环境变量并重启 Steam。
另请参阅 steam-for-linux 问题 4769。
其他问题
NTFS 分区中的 Steam 库
如果您的 Steam 库位于 NTFS 分区中,则位于那里的游戏可能无法启动。
问题在于 Wine 在其 $WINEPREFIX/dosdevices
目录中使用冒号,而 NTFS-3G 在使用 windows_names
选项挂载时,被指示不要创建此类冒号名称,这会使 Windows 感到困惑。不添加它并不是那么不安全:Windows 将正常运行,除了无法打开符号链接(无论如何它都不需要这样做);chkdsk
可能会删除链接,但它很容易重新创建。
更好的解决方法:挂载时不使用 windows_names
。此选项通常由 GUI 文件浏览器通过 udisks2 添加以表示谨慎,但添加真实的 Fstab 行将为其提供正确的方法来执行此操作。
- 运行
genfstab -U /
并提取包含 ntfs 分区的行,例如UUID=12345678ABCDEF00 /run/media/user/Gamez ntfs {options_omitted} 0 0
。请注意,由于 fuse,选项不准确;如果您想查看真正使用的内容,请以 root 身份使用ps aux|grep ntfs
。 - 将该行写入
/etc/fstab
,编辑它以使用不带windows_names
的正确选项。对于之前的示例,我们将写入UUID=12345678ABCDEF00 /run/media/user/Gamez ntfs rw,allow_other,user_id=1000,big_writes 0 0
– 假设您的 UID 为 1000。 - 卸载分区,然后重新挂载。
或者,按照 udisks#NTFS file creation failing (filename-dependent) 中的说明全局禁用 udisks 对 windows_names
的使用。
另一种解决方法:将 steamapps/common/Proton x.y
和 steamapps/compatdata
移动到非 NTFS 驱动器,然后在它们原始位置创建符号链接。但是,您可能会浪费一些空间在您原本重要的 Linux 驱动器上。
$ mv SteamLibrary/steamapps/common/Proton\ x.y /home/user/dir/ $ mv SteamLibrary/steamapps/compatdata /home/user/dir/ $ ln -s /home/user/dir/Proton\ x.y/ SteamLibrary/steamapps/common/Proton\ x.y $ ln -s /home/user/dir/compatdata/ SteamLibrary/steamapps/compatdata
错误的 ELF 类
如果您在 Steam 的控制台输出中看到此消息
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
您可以安全地忽略它。这实际上不是任何错误:Steam 包括某些库的 64 位和 32 位版本,并且只有一个版本会成功加载。即使 Steam(和游戏内覆盖)运行完美,也会显示此“错误”。
多显示器设置
具有多个显示器的设置可能会阻止游戏启动。尝试禁用所有附加显示器,然后运行游戏。您可以在游戏成功启动后启用它们。
您也可以尝试在设置此环境变量的情况下运行 Steam
$ export LD_LIBRARY_PATH=/usr/lib32/nvidia:/usr/lib/nvidia:$LD_LIBRARY_PATH
文本损坏或丢失
尝试安装 lib32-fontconfig、 ttf-liberation 和 wqy-zenhei(用于亚洲字符),然后重启 Steam 以查看问题是否已解决。
SetLocale('en_US.UTF-8') 在游戏启动时失败或在 Steam 客户端中键入非 ASCII 字符不起作用
您需要生成 en_US.UTF-8 UTF-8
区域设置。请参阅 Locale#Generating locales。
缺少 libc
这可能是由于 Steam 可执行文件损坏所致。检查以下命令的输出
$ ldd ~/.local/share/Steam/ubuntu12_32/steam
如果 ldd
声称它不是动态可执行文件,则 Steam 很可能在更新期间损坏了二进制文件。以下命令应能解决此问题
$ cd ~/.local/share/Steam/ $ ./steam.sh --reset
如果仍然无效,请尝试删除 ~/.local/share/Steam/
目录并再次启动 Steam,指示其重新安装自身。
此错误消息也可能由于 Steam 中的一个错误而发生,该错误在您的 $HOME
目录以斜杠结尾时出现(Valve GitHub issue 3730)。可以通过编辑 /etc/passwd
并将 /home/username/
更改为 /home/username
,然后注销并重新登录来解决此问题。之后,Steam 应该会自动修复自身。
游戏无法在较旧的 Intel 硬件上启动
在不支持 OpenGL 3 的较旧 Intel 硬件上,例如 Intel GMA 芯片或 Westmere CPU,游戏在运行时可能会立即崩溃。它在 /tmp/dumps/mobile_stdout.txt
中显示为 gameoverlayrenderer.so
错误,但在 /tmp/gameoverlayrenderer.log
中查找时,它显示 GLXBadFBConfig 错误。
可以通过强制游戏使用比其想要的更新版本的 OpenGL 来修复此问题。将 MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140
添加到您的启动选项。
Mesa:游戏无法启动,抱怨显卡支持的 OpenGL 版本
有些游戏的编程很糟糕,可以使用高于 3.0 的任何 OpenGL 版本。使用 Mesa,应用程序必须请求特定的核心配置文件。如果它没有发出这样的请求,则只有 OpenGL 3.0 及更低版本可用。
可以通过强制游戏使用它实际需要的 OpenGL 版本来修复此问题。将 MESA_GL_VERSION_OVERRIDE=4.1 MESA_GLSL_VERSION_OVERRIDE=410
添加到您的启动选项。
2K 游戏无法在 XFS 分区上运行
如果您在 XFS 分区上运行 Civilization 5 等 2K 游戏,则游戏可能无法启动或正常运行,原因是游戏在启动时加载文件的方式。[8]
Steam 控制器未被正确检测到
Steam 控制器导致游戏崩溃
请参阅 Gamepad#Steam Controller makes a game crash or not recognized。
Steam 卡在“正在安装 breakpad 异常处理程序...”
您拥有 Nvidia GPU,并且 Steam 具有以下输出
Running Steam on arch rolling 64-bit STEAM_RUNTIME is enabled automatically Installing breakpad exception handler for appid(steam)/version(0_client)
然后什么也没有发生。确保您已安装正确的驱动程序及其 32 位版本(64 位和 32 位变体必须具有相同的版本):请参阅 NVIDIA#Installation。
在启动游戏时杀死独立的合成器
使用 %command%
开关,您可以杀死独立的合成器(例如 Xcompmgr 或 picom) - 这可能会在某些系统上的某些游戏中导致延迟和撕裂 - 并在游戏结束后通过将以下内容添加到游戏的启动选项中来重新启动它们。
killall compositor && %command%; nohup compositor &
当然,您也可以将 -options 添加到 %command%
或 compositor
。
Steam 将会锁定在 %command%
之后启动的任何进程,并且您的 Steam 状态将显示为游戏中。因此,在此示例中,我们通过 nohup
运行合成器,使其不附加到 Steam(如果您关闭 Steam,它将继续运行),并在其后跟一个 & 符号,以便命令行为结束,从而清除您的 Steam 状态。
如果您的合成器支持在守护程序模式下运行,则可以使用它代替。例如,picom(1) 具有 --daemon
/ -b
选项来守护其进程
killall picom && %command%; picom -b
使用 DRI3 时出现符号查找错误
Steam 输出此错误并退出。
symbol lookup error: /usr/lib/libxcb-dri3.so.0: undefined symbol: xcb_send_request_with_fds
为了解决此问题,请使用 LIBGL_DRI3_DISABLE=1
运行 Steam,从而为 Steam 禁用 DRI3。
在 Nvidia optimus 笔记本电脑上启动游戏
为了能够在支持 optimus 的笔记本电脑上玩需要使用 Nvidia GPU 的游戏(例如,Hitman 2016),您应该在启动选项中使用 primusrun 前缀启动游戏。否则,游戏将无法运行。
右键单击 Steam 库中的游戏,然后选择属性 > 常规 > 启动选项。将选项更改为
primusrun %command%
使用 primusrun 运行 Steam 曾经有效。虽然 Steam 更改了一些行为,现在使用 primusrun 运行 Steam 将不会对启动游戏产生影响。因此,您需要为每个游戏设置启动选项(并且您不必使用 primusrun 运行 Steam)。
对于 primusrun,VSYNC 默认启用,这可能会导致鼠标输入延迟滞后,略微降低性能,并且游戏内 FPS 可能会锁定到显示器/显示器的刷新率。为了禁用 primusrun 的 VSYNC,需要通过环境变量覆盖选项 vblank_mode
的默认值。
vblank_mode=0 primusrun %command%
使用 optirun(它使用 primus 作为桥梁)也是如此。
vblank_mode=0 optirun -b primus %command%
如果这不起作用,请尝试
LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun %command%
有关更多详细信息,请参阅 Bumblebee#Primusrun mouse delay (disable VSYNC)。
HiDPI
HiDPI 支持应该开箱即用,尽管在某些系统上,有必要强制启用,设置 -forcedesktopscaling factor
cli 选项或 STEAM_FORCE_DESKTOPUI_SCALING
环境变量以设置所需的缩放因子。
KDE Plasma 下的协议支持
如果您在通过 Web 浏览器运行游戏后收到错误(或通过 xdg-open 执行链接)
Error — KIOExec File not found: steam://run/440
转到系统设置 -> 应用程序 -> 文件关联,添加新的,选择 inode
组并将其命名为 vnd.kde.service.steam
,然后在应用程序首选顺序下,您必须添加 Steam。应用更改,现在应该可以正常工作了。
当使用 Steam Linux Runtime - Soldier 时游戏崩溃
自从 Proton 5.13 以来,Steam 默认使用 Steam Linux Runtime - Soldier。某些游戏在使用它时会崩溃。
要绕过它,您可以
- 手动构建一个不带 Steam Runtime 的 Proton
- 替换 Soldier 入口点脚本
~/.steam/steam/steamapps/common/SteamLinuxRuntime_soldier/_v2-entry-point
#!/bin/bash shift 2 exec "${@}"
使用 Proton 5.13+ 运行的游戏没有 Internet 连接
如果您使用 systemd-resolved 作为您的 DNS 解析器,请确保您已按照 systemd-resolved#DNS 中的描述创建了 resolv.conf
符号链接。
该文件应包含类似于以下内容
/etc/resolv.conf
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8). # Do not edit.
“could not determine 32/64 bit of java”
linux-steam-integrationAUR 软件包的被遗忘的安装至少导致一个游戏出现此问题。早期,系统版本和 Steam 运行时版本的某些库之间存在冲突,该软件包有助于解决其中一些问题。目前尚不清楚它是否仍然有帮助,但卸载它解决了 Project Zomboid 的上述错误消息。该解决方案是通过注意到从命令行运行 projectzomboid.sh
命令有效而发现的,但将启动选项切换到 sh -xc 'echo %command%; declare -p'
表明 Steam 试图运行完全相同的命令,但预加载和路径中插入了许多 lsi-
前缀的库。
Vulkan 出现卡顿
如果您注意到每 1-2 秒出现持续强烈的卡顿,则可能是您的 vsync 设置中存在冲突。在参数中手动配置 vsync 可能会解决此问题。
转到游戏属性并在启动选项中进行配置
DXVK_FRAME_RATE=60 %command%
强制 OpenGL 模拟
一些游戏,尤其是较旧的游戏,可能无法与 Proton 使用的默认 Vulkan (DXVK) 包装器一起使用。尝试使用 WineD3D OpenGL 包装器运行应用程序
PROTON_USE_WINED3D=1 %command%
文件选择器看不到除 Steam 库之外的任何内容
请参阅 FS#78625。您需要安装 xdg-desktop-portal。
混合图形上的 DirectX 错误
对于具有 Intel/Nvidia 混合图形的笔记本电脑,遇到以下错误
A d3d11-compatible gpu (feature level 11.0, shader model 5.0) is required to run the engine.
这可能是因为您的游戏在 iGPU 而不是专用 GPU 上运行,并且您需要配置 PRIME。如果仍然无效,请尝试使用 Direct3D 而不是 DXVK。
下载时没有 Internet 连接
如果您在下载游戏时看到没有 Internet 连接,则可能的解决方案是清除下载缓存(Steam > 设置 > 下载 > 清除下载缓存)。
启动 Steam 后性能不佳或卡顿
如果您在启动 Steam 后遇到性能下降或卡顿,持续时间从几秒到几分钟不等,则可能是由错误或过时的 Proton 安装引起的。
删除在应用程序 ID 0 下安装的错误 Proton:~/.steam/root/steamapps/compatdata/0
。您可能还需要删除过时且有问题的 Proton 版本,包括自定义版本,例如 GE-Proton,尤其是 5.21-GE-1
。
有关更多详细信息,请参阅 steam-for-linux#8114。
启动时间过长且用户界面响应缓慢
Steam 在其 Chromium 后端中使用 steamloopback.host
来引用自身。由于 systemd-resolvd 尝试解析此主机的方式(默认情况下对某些用户通过 mdns
),此问题可能会导致界面挂起。这会导致启动时间过长(如果曾经启动)以及响应缓慢(或根本不响应)的用户界面。可以通过编辑 /etc/nsswitch.conf
将 mdns
更改为 mdns_minimal
并重启 systemd-resolvd 来临时解决此问题。有关更多详细信息,请参阅 [9]。
另请参阅
- 多媒体和游戏 / Arch Linux 论坛
- ValveSoftware/steam-for-linux – Linux 版 Steam 客户端的问题跟踪
- 游戏的 Steam 社区讨论
- Steam 客服常见问题解答