内核更新后随机源游戏停止运行

内核更新后随机源游戏停止运行

我是 Xubuntu(和 Linux)的新手,已经使用 2 个月了,我一直依赖我的兄弟,他是 Linux 的熟练用户。
我已经下载并安装了最新的内核更新,linux-image-3.16.0-41-generic以及它所需的所有其他东西。因此,在那之后,我的一些 Source 游戏在 下停止运行optirun。我拥有的唯一可以运行的游戏是“Double Action: Boogaloo”和“Counter-Strike: Source”。

注意:我拥有所有《反恐精英》游戏(不包括 Nexus)、GMod 和 Portal 2。

CS:GO 的错误

~/.local/share/Steam/steamapps/common/Counter-Strike Global Offensive$ optirun ./csgo_linux 
./csgo_linux: error while loading shared libraries: libtcmalloc_minimal.so.4: cannot open shared object file: No such file or directory

GMod 的错误

~/.local/share/Steam/steamapps/common/GarrysMod$ optirun ./hl2_linux
AppFramework : Unable to load module /home/USERNAME/.local/share/Steam/steamapps/common/GarrysMod/bin/filesystem_stdio.so!

Portal 2 抛出与 CS:GO 相同的错误。

我已经bumblebee安装nvidia-349了(以及所有依赖项)。我已通过以下方式安装了 NVidia 驱动程序此方法,并已通过以下方式安装了 32 位库这个方法。请帮忙!

optirun编辑:在没有英特尔集成显卡的情况下也会发生这种情况。

更新:我steam在控制台中运行(而不是游戏本身),然后运行游戏。我在大多数日志中看到以下内容:

ERROR: ld.so: object '/home/pistol/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/pistol/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.

答案1

编辑

真正的解决办法

所有的功劳都归功于 Henrik Johansson,他制作了一本很棒的指南这里。我会简单告诉你该怎么做。

对于 Valve 游戏,请转到您最喜欢的编辑器中的可执行文件并搜索

 ${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"

并将其替换为

primusrun ${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"

(或者optirun,你的选择)

这似乎会影响所有使用.sh可执行文件的游戏。其他游戏可能以类似的方式修复。

我的解释

问题在于 Steam 如何运行命令。我最近才发现这个问题,现在知道答案了。问题似乎ld.so与英特尔驱动程序有关(至少我是这么认为的)。Steam 无法运行optirun/无法primusrun正确运行(或者可能根本) 因此使用英特尔驱动程序,但这是行不通的。

下面的内容不再适用,就像xorg-edgers现在一样graphics-drivers

请不要听下面这些。


经过多次在互联网上搜索和反复尝试,我可以肯定地得出结论,主要问题是 PPA xorg-edgers。 如果您遇到类似问题,则应删除所有驱动程序xorg-edgers,然后再ppa-purge进行修复。

如果您不知道该怎么做,请按照以下方法操作。

安装ppa-purge者...

sudo apt-get install ppa-purge

删除xorg-edgers...

sudo ppa-purge ppa:xorg-edgers/ppa

最后...

sudo apt-get update

答案2

在第一种情况下,游戏会抱怨缺少libtcmalloc_minimal.so.4库。可能 Steam 或游戏在目录中有这个库的版本。无论如何,您可以尝试从 Ubuntu 存储库安装它。我不知道它使用的是 32 位还是 64 位版本,但您可以尝试:

对于 64 位版本

sudo apt-get install libtcmalloc-minimal

或 32 位版本

sudo apt-get install libtcmalloc-minimal4:i386 

在第二种情况下,它抱怨说,由于某种原因,它无法加载 steam 安装中的 filesystem_stdio.so 文件。您可以尝试重新安装 steam。

相关内容