随机源游戏在内核更新后停止工作
我是Xubuntu(和Linux)的noob两个月,我一直依赖我的兄弟,他是一个流利的Linux用户。
我已经下载并安装了最新的内核更新, linux-image-3.16.0-41-generic
,以及所需的所有其他内容。 所以在那之后,我的一些源游戏停止在optirun
下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.
编辑 :
实际修复
所有的荣誉都归功于Henrik Johansson,他在这里做了很棒的指导。 我会告诉你该怎么做。
对于Valve游戏,请转到您喜欢的编辑器中的可执行文件并搜索
${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
并替换它
primusrun ${DEBUGGER} "${GAMEROOT}"/${GAMEEXE} "$@"
(或optirun
,您的选择)
这似乎会影响所有使用.sh
可执行文件的游戏。 其他游戏可以以类似的方式固定。
我的解释
问题在于Steam如何运行命令。 这是我最近刚刚连接点的问题,现在知道了答案。 似乎ld.so
问题涉及英特尔驱动程序(或者我认为)。 Steam无法正确运行optirun
/ primusrun
(或者可能根本不运行),因此使用的Intel驱动程序无效。
下面的内容不再适用,因为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
在第一种情况下,游戏抱怨没有libtcmalloc_minimal.so.4
库。 也许,Steam或游戏在目录中有他们的lib版本。 无论如何,您可以尝试从Ubuntu存储库安装它。 我现在不使用32位或64位版本,但您可以尝试:
对于64位版本
sudo apt-get install libtcmalloc-minimal
或32位版本
sudo apt-get install libtcmalloc-minimal4:i386
在第二种情况下,它抱怨由于任何原因,它无法在steam instalation中加载文件filesystem_stdio.so。 您可以尝试重新安装蒸汽。