我是 Linux 新用户,刚刚在 Ubuntu 18 上安装了 Steam。在原生显卡上运行时,Steam 可以从终端和应用程序图标启动。当切换到 nvidia 显卡时,所有驱动程序(据称)都已正确安装,但 steam 无法再启动。我尝试重新安装 steam 并尝试了几种类似问题的解决方案,但都不起作用。我该如何解决这个问题?
当我在终端上运行 steam 时,输出是:
Running Steam on ubuntu 18.04 64-bit
STEAM_RUNTIME is enabled automatically
Pins up-to-date!
/home/carlosavila/.steam/ubuntu12_32/steam
[2019-12-29 14:22:57] Startup - updater built Dec 16 2019 16:48:42
SteamUpdateUI: An X Error occurred
X Error of failed request: GLXBadContext
SteamUpdateUI: An X Error occurred
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 48
xerror_handler: X failed, continuing
Major opcode of failed request: 155 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 49
xerror_handler: X failed, continuing
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[2019-12-29 14:22:57] Checking for update on startup
[2019-12-29 14:22:57] Checking for available updates...
[2019-12-29 14:22:57] Downloading manifest: client-download.steampowered.com/client/steam_client_ubuntu12
[2019-12-29 14:22:58] Download skipped: /client/steam_client_ubuntu12 version 1576550254, installed version 1576550254
[2019-12-29 14:22:58] Nothing to do
[2019-12-29 14:22:58] Verifying installation...
[2019-12-29 14:22:58] Performing checksum verification of executable files
[2019-12-29 14:22:59] Verification complete
输出为glxinfo | grep "version"
:
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
OpenGL core profile version string: 4.6.0 NVIDIA 390.116
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL version string: 4.6.0 NVIDIA 390.116
OpenGL shading language version string: 4.60 NVIDIA
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 390.116
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,
答案1
问题是 Nvidia 弃用了.deb
驱动程序包中的 32 位库,而 steam 客户端是 32 位二进制文件,因此它依赖于 32 位库(需要说明的是,问题不在于驱动程序,而在于库)。有几种方法可以解决这个问题,“理论上”必须推荐的解决方案是下载驱动程序.run
并在安装时启用 32 位库,但在我看来,安装它.run
很繁琐(而且我从几年前就没有这样做过,所以我真的不知道它今天会如何工作)。
我的经验建议是安装图形驱动程序 ppa(https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa) sudo add-apt-repository ppa:graphics-drivers/ppa
,此 ppa 包含 nvidia 驱动程序以及 64 位和 32 位版本的库。它应该是实验性的,但对我来说它确实很好用。
您唯一需要关注的是,一旦安装了 ppa:graphics-drivers,由于您已经有了 nvidia 驱动程序,您将需要“强制版本”才能安装 ppa:graphics-drivers(即使它与您已经在使用的 nvidia-390 相同)。我建议使用 synaptic 包管理器,因为您可以在应用之前告诉 synaptic 您想要做的一切(因为您可能想要在此过程中更改多个库)。此外,在 synaptic 中,您可以转到架构过滤器并搜索nvidia
过滤,i386
以便您可以安装每个 32 位 nvidia 库(默认情况下不会安装,您需要安装它们)。
答案2
此命令__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia steam
对我有用。但重启后,它就无法正常工作了。
请参阅我的完整答案在其他帖子中