Steam/故障排除
- 请确保您已遵循 Steam#安装。
- 如果 Steam 客户端/游戏无法启动和/或出现有关库的错误消息,请阅读 #Steam 运行时 并参阅 #调试共享库。
- 如果问题与网络相关,请确保您已转发 Steam 所需端口。
- 如果问题是关于游戏的,请查阅 Steam/游戏特定故障排除。
Steam 运行时
Linux 版 Steam 附带其自己的一套库,称为 Steam 运行时。默认情况下,Steam 会在运行时环境中启动所有 Steam 应用程序。Steam 运行时位于 ~/.steam/root/ubuntu12_32/steam-runtime/。
如果您将 Steam 运行时库与系统库混合使用,您将遇到二进制不兼容问题,请参阅 steam-for-linux 问题 #4768。二进制不兼容可能导致 Steam 客户端和游戏无法启动(表现为崩溃、挂起或静默退出)、音频问题以及各种其他问题。
steam 软件包提供了两种启动 Steam 的方式
/usr/bin/steam(别名steam),它通过LD_PRELOAD环境变量 覆盖已知会导致问题的运行时库(请参阅 ld.so(8))。/usr/lib/steam/steam,默认的 Steam 启动脚本
由于 Steam 运行时库较旧,它们可能缺少较新的功能,例如 Steam 运行时中的 OpenAL 版本缺少 HRTF 和 surround71 支持。
Steam 原生运行时
steam-native-runtimeAUR 软件包依赖于 130 多个软件包,以提供 Steam 运行时的原生替代品,但某些游戏可能仍需要额外的软件包。
此软件包提供了 steam-native 脚本,它使用 STEAM_RUNTIME=0 环境变量和 -compat-force-slr off 标志启动 Steam,使其忽略其运行时并仅使用系统库。
./<game_executable>; exit; %command%,这样游戏将在系统环境中启动,因为运行时只应用于 %command%。您也可以在不使用 steam-native-runtimeAUR 的情况下使用 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 与 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 以获取更多信息,这可能有助于找出为什么某些功能不起作用。
您可以设置 DEBUGGER 环境变量为 gdb、cgdb、valgrind、callgrind、strace 中的一个,然后启动 steam。
例如,使用 gdb
$ DEBUGGER=gdb steam
gdb 将打开,然后键入 run,它将启动 steam,一旦发生崩溃,您可以键入 backtrace 查看调用堆栈。
运行时问题
使用 Bumblebee 时找不到 'GLBCXX_3.X.XX'
此错误很可能是由于 Steam 包含了自己过时的 libstdc++.so.6 所致。请参阅 #查找缺失的运行时库,了解如何解决此不良库问题。另请参阅 steam-for-linux 问题 3773。
Steam>警告:初始化 SDL 线程优先级管理器失败:未找到 SDL
解决方案:安装 lib32-sdl2AUR 软件包。
游戏立即崩溃
这很可能是由于 #Steam 运行时 问题造成的,请参阅 #调试共享库。
在游戏属性中禁用游戏内 Steam 叠加层可能会有所帮助。
最后,如果这些方法都不奏效,您应该检查 Steam 的输出,查找游戏中的任何错误。您可能会遇到以下情况
munmap_chunk(): invalid pointerfree(): invalid pointer
在这些情况下,请尝试将出现问题的游戏中的 libsteam_api.so 文件替换为可正常工作的游戏中的文件。当 Steam 运行时被禁用时,此错误通常发生在最近未更新的游戏中。AYIM、Bastion 和 Monaco 都曾遇到此错误。
如果游戏崩溃并出现以下信息
terminate called after throwing an instance of 'dxvk::DxvkError'
这很可能是因为安装了相互冲突的 Vulkan 版本。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)
移动不兼容的库可能是一种解决方法。
mv .local/share/Steam/steamapps/common/GAME/bin/libgcc_s.so.1 .local/share/Steam/steamapps/common/GAME/bin/libgcc_s.so.1.b
某些游戏在聚焦时启动冻结
在 Xorg 下,结合使用 ForceFullCompositionPipeline、特定 Proton 版本和 NVIDIA 驱动程序版本 535,已知会导致某些使用 DXVK/Vulkan 的游戏在启动时冻结。使用 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 朋友界面更新以来,客户端 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 仓库问题 #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 驱动程序,并使用以下命令与主软件包版本匹配:
# 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。
使用自定义内核时游戏启动后立即关闭
请确保您在 General setup -> Namespaces support 中已启用 User namespace。
Steam 库无法启动
打开 Steam 库时,要么什么都不显示,要么短暂闪现一下,但没有窗口出现。在终端窗口中运行 /usr/bin/steam 会显示此错误
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。
使用 Proton Steam Play 时出现周期性延迟峰值
玩游戏约 30 分钟后帧率降低 可以通过将游戏的启动选项更改为 LD_PRELOAD="" %COMMAND% 来解决,以禁用 Steam 叠加层。
图形问题
Intel 集成显卡上主屏幕黑屏
在某些使用 Intel 集成显卡并在 Wayland 上运行 Steam 的系统上,可能会导致只有 webview 不渲染,但下拉菜单和其他菜单功能正常。前往 Steam -> 设置 -> 界面,然后禁用 在 web 视图中启用 GPU 加速渲染 可能会解决此问题。
使用 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 (X11 未确认) 上使用双显卡启动 Steam 时,在某些情况下 Steam 客户端会显示黑色屏幕并闪烁/眨眼。这是由于 桌面条目 中启用了 PrefersNonDefaultGPU 选项。
通过编辑桌面条目修复
首先,制作 Steam 桌面条目的用户副本(来自 /usr/share/applications/steam.desktop)。然后,更改选项
~/.local/share/applications/steam.desktop
... PrefersNonDefaultGPU=false ...
如果 Steam 已打开,请关闭并重新启动。
绕过桌面条目
如果从终端启动 Steam,则桌面条目选项不生效,从而绕过此问题。
$ steam &
末尾的与号 (&) 是在后台运行 Steam,Steam 启动后可以关闭终端。
音频问题
如果以下部分未能解决问题,使用 #Steam 原生运行时 可能会有所帮助。
配置 PulseAudio
明确依赖 ALSA 的游戏可能会破坏 PulseAudio。遵循 PulseAudio#ALSA 的说明,使这些游戏转而使用 PulseAudio。
如果您正在使用 PipeWire,则安装 lib32-pipewire 并设置 PipeWire#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 库添加到 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 音频中间件包有点问题,因此使用它的游戏可能会出现声音问题。
通常发生在未使用的声卡被用作 ALSA 默认声卡时。请参阅 Advanced Linux Sound Architecture#设置默认声卡。
- 受影响的游戏: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]。
另一个潜在的修复方法是[3]通过创建文件来禁用 HTTP2
~/.steam/steam/steam_dev.cfg
@nClientDownloadEnableHTTP2PlatformLinux 0
为了增加服务器连接(可能以负面影响速度为代价),添加
~/.steam/steam/steam_dev.cfg
... @fDownloadRateImprovementToAddAnotherConnection 1.0
“需要在线”错误
如果 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 忘记密码
Linux 版 Steam 有一个 bug,导致它忘记某些用户的密码。
作为一种解决方法,在登录 Steam 后,运行
# chattr +i ~/.steam/registry.vdf
这将设置文件的不可变位,因此 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 好友界面更新以来,右键菜单中可能缺少“加入游戏”、“邀请游戏”和“查看游戏信息”等条目。
为了解决此问题,可能需要安装 lsof。
用户界面缓慢且无响应
如果您在使用 Steam 客户端时遇到极其缓慢和迟钝的性能问题,禁用 Steam 客户端设置中“界面”选项卡下的“在 web 视图中启用 GPU 加速渲染”选项可能会有所帮助。
好友列表也可能导致此问题。在 https://github.com/ValveSoftware/steam-for-linux/issues/7245 中提到了两种解决方法
Steam 无法正常启动
一个故障排除步骤是运行
$ steam --reset
这可以修复损坏安装带来的各种问题。
任务栏菜单缺失
如果单击 Steam 任务栏图标后没有显示菜单,可能需要安装 libappindicator-gtk2AUR 和 lib32-libappindicator-gtk2AUR 软件包并重启 Steam。
“您的浏览器不支持观看此直播所需的最低功能集”错误
如果您在尝试观看直播/广播时收到错误消息“您的浏览器不支持观看此直播所需的最低功能集”,请尝试以下故障排除步骤
- 导航到 社区 > 广播。如果页面显示“正在更新 Steam”,请等待几分钟看过程是否完成,如果未完成,一段时间后取消。现在测试您是否能够观看广播,例如通过单击 社区 > 广播 下显示的一个广播。
- 在大屏幕模式下启动广播(视图 > 大屏幕模式)。如果在大屏幕模式下广播正常启动,请检查切换回主界面后是否仍然正常工作。
- 使用以下命令触发 Steam 客户端直接解锁 H.264 解码:
steam 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 上的 问题 5607。
启用小数缩放
如果 Steam 客户端窗口中的文本和图标太小,无法在您的显示器上阅读,启用小数缩放可能会有所帮助。Steam 客户端有一个设置选项可以启用它,在 设置 > 界面 > 根据显示器设置缩放文本和图标。启用此选项应该会告诉客户端使用系统的分数缩放设置。
但是,如果这不能自动工作,则有一个命令行参数可以强制分数缩放。使用 -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 查找重复问题后报告。
无法访问商店页面(客户端显示错误 -105 或 -102)
如果商店页面无法访问但其他网络功能(如游戏下载)正常工作,则可能是 DNS 解析失败。一个可能的解决方案是确保 systemd-resolved 已启用并启动,然后按照 systemd-resolved#DNS 中的说明创建 /etc/resolv.conf 符号链接。
其他解决方案是按照此处 [6] 所述刷新 DNS
以 root 身份运行 resolvectl flush-caches 或 systemd-resolve --flush-caches。
游戏运行时 Steam 客户端重启
一种解决方法是禁用 Steam 客户端设置中“界面”选项卡下的“在 web 视图中启用 GPU 加速渲染”选项。
Steam 远程畅玩问题
请参阅 Steam#Steam 远程畅玩。
远程畅玩在 Arch Linux 主机到 Arch Linux 访客之间不工作
您很可能缺少 lib32-libcanberra。一旦 安装 完成,它应该会按预期工作。
有了它,Steam 在尝试通过远程畅玩启动游戏时应该不再崩溃。
硬件解码不可用
远程畅玩硬件解码使用 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 回退到系统库。
大屏幕模式失去焦点后最小化
当您通过远程畅玩玩游戏,或者如果您有多显示器设置并将鼠标移出 BPM 窗口时,可能会发生这种情况。为防止这种情况,请设置 SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=0 环境变量并重新启动 Steam。
另请参阅 steam-for-linux 问题 4769。
其他问题
NTFS 分区中的 Steam 库
如果您的 Steam 库位于 NTFS 分区中,则其中存放的游戏可能无法启动。
问题是 Wine 在其 $WINEPREFIX/dosdevices 目录中使用冒号,当使用 windows_names 选项挂载时,它被指示不要创建此类冒号名称,这可能会混淆 Windows。不添加它并不那么不安全:Windows 会正常运行,只是无法打开符号链接(它无论如何也不需要这样做);chkdsk 可能会删除链接,但很容易重新创建。
更好的解决方法:不带 windows_names 挂载。这个选项通常由 GUI 文件浏览器通过 udisks 出于谨慎添加,但添加一个真实的 fstab 行会提供一个正确的做法。
- 运行
genfstab -U /并提取包含 ntfs 分区的行,例如UUID=12345678ABCDEF00 /run/media/user/Gamez ntfs3 rw,uid=1000,gid=1000,windows_names 0 0
- 将该行写入
/etc/fstab,编辑它以使用不带windows_names的正确选项。对于前面的示例,我们将写入UUID=12345678ABCDEF00 /run/media/user/Gamez ntfs3 rw,uid=1000,gid=1000 0 0
- 卸载分区,然后重新挂载。
或者,按照 udisks#NTFS 文件创建失败(依赖文件名) 中的说明全局禁用 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、xorg-fonts-misc(如果未安装此软件包,Steam 更新器窗口将显示空白方块而不是所有非拉丁字符)和 wqy-zenhei(用于亚洲字符),然后重新启动 Steam 以查看问题是否解决。
SetLocale('en_US.UTF-8') 在游戏启动时失败或在 Steam 客户端中输入非 ASCII 字符不起作用
您需要生成 en_US.UTF-8 UTF-8 语言环境。请参阅 Locale#生成语言环境。
缺失 libc
这可能是由于 Steam 可执行文件损坏造成的。检查以下命令的输出
$ ldd ~/.local/share/Steam/ubuntu12_32/steam
如果 ldd 声称它不是动态可执行文件,那么 Steam 很可能在更新期间损坏了二进制文件。以下方法应该可以解决问题
$ cd ~/.local/share/Steam/ $ ./steam.sh --reset
如果不行,尝试删除 ~/.local/share/Steam/ 目录并再次启动 Steam,让它重新安装。
此错误消息也可能由于 Steam 中的一个 bug 而发生,该 bug 在您的 $HOME 目录以斜杠结尾时发生(Valve GitHub 问题 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 分区上运行 2K 游戏(例如文明 5),则游戏可能由于其启动时加载文件的方式而无法启动或正常运行。[10]
Steam 控制器未正确检测到
请参阅 手柄#Steam 控制器。
Steam 控制器导致游戏崩溃
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#安装。
启动游戏时杀死独立合成器
利用 %command% 开关,您可以关闭独立合成器(例如 Xcompmgr 或 picom)——这可能会导致某些游戏在某些系统上出现延迟和撕裂——并在游戏结束后重新启动它们,方法是将其添加到游戏的启动选项中。
killall compositor && %command%; nohup compositor &
当然,您也可以为 %command% 或 compositor 添加 -options。
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%
使用 primus 作为桥接的 optirun 也是如此。
vblank_mode=0 optirun -b primus %command%
如果那不起作用,请尝试
LD_PRELOAD="libpthread.so.0 libGL.so.1" __GL_THREADED_OPTIMIZATIONS=1 optirun %command%
有关更多详细信息,请参阅 Bumblebee#Primusrun 鼠标延迟(禁用 VSYNC)。
HiDPI
HiDPI 支持应该开箱即用,尽管在某些系统上需要 强制它 设置 -forcedesktopscaling factor 命令行选项或 STEAM_FORCE_DESKTOPUI_SCALING 环境变量来设置所需的缩放因子。
KDE Plasma 下的协议支持
如果您在通过网页浏览器运行游戏(或通过 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 运行时的 Proton
- 替换 Soldier 入口点脚本
~/.steam/steam/steamapps/common/SteamLinuxRuntime_soldier/_v2-entry-point
#!/bin/bash
shift 2
exec "${@}"
运行 Proton 5.13+ 的游戏没有互联网连接
如果您正在使用 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.
“无法确定 java 的 32/64 位”
至少有一款游戏是由于忘记安装 linux-steam-integrationAUR 软件包而导致此问题。早期,系统库和 Steam 运行时版本之间存在一些冲突,该软件包有助于解决其中一些问题。目前尚不清楚它是否仍然有用,但卸载它解决了 Project Zomboid 的上述错误消息。该解决方案是通过注意到从命令行运行 projectzomboid.sh 命令有效,但将启动选项切换到 sh -xc 'echo %command%; declare -p' 显示 Steam 正在尝试运行完全相同的命令,但有许多以 lsi- 为前缀的库插入到预加载和路径中。
Vulkan 出现卡顿
如果您注意到每隔 1-2 秒出现持续剧烈的卡顿,您的垂直同步设置可能存在冲突。手动配置参数中的垂直同步可能会修复它。
前往游戏属性并在启动选项中配置它
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.
这可能是因为您的游戏正在集成显卡而非独立显卡上运行,您需要配置 PRIME。如果仍然不起作用,请尝试使用 Direct3D 而不是 DXVK。
下载时无互联网连接
如果您在下载游戏时看到 无互联网连接,一个可能的解决方案是清除下载缓存(Steam > 设置 > 下载 > 清除下载缓存)。
启动 Steam 后性能不佳或卡顿
如果您在启动 Steam 后遇到性能下降或卡顿,持续时间从几秒到几分钟不等,这可能是由有缺陷或过时的 Proton 安装引起的。
删除在 app 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 来暂时解决。有关更多详细信息,请参阅 [11]。
参见
- 多媒体和游戏 / Arch Linux 论坛
- ValveSoftware/steam-for-linux – Linux 版 Steam 客户端的问题跟踪
- Steam 社区游戏讨论
- Steam 支持常见问题解答