我原本计划在 Portal 2 中度过一天放松的时光,但在启动 Steam 时(几周后的第一次),我在终端中收到了以下消息:
Error: API mismatch: the NVIDIA kernel module has version 270.41.19,
but this NVIDIA driver component has version 270.41.06. Please make
sure that the kernel module and all NVIDIA driver components
have the same version.
Run Code Online (Sandbox Code Playgroud)
我承认,当它说司机时,我真的不知道它在说什么。的版本nvidia-current是270.41.19。我认为这是驱动程序和模块,合二为一。
我使用 X-SWAT PPA,我注意到该nvidia-settings软件包已提升到275.09.07. 由于这只是一个设置应用程序,我认为这种不匹配与此无关。它也与所描述的问题的版本不同。
我宁愿不清除回标准 Nvidia 驱动程序,因为它在我的 GTX580 上不太稳定。我会接受一个需要手动设置并在内核重新编译时重新编译的答案(即,一些 DKMS 向导),但它必须工作。我不想每次在内核升级后重新启动时都回到文本模式。
编辑:Minecraft 工作时没有任何关于驱动程序版本的抱怨。进入游戏时,Penumbra 会因大致相同的错误而死亡。
编辑:这是我正在处理的 32 位文件。他们似乎都在正确的版本。
ls -l /usr/lib32/nvidia-current/ | awk '{ print $8 " " $9 " " $10 }'
libcuda.so -> libcuda.so.270.41.19
libcuda.so.1 -> libcuda.so.270.41.19
libcuda.so.270.41.19
libGL.la
libGL.so -> libGL.so.1
libGL.so.1 -> libGL.so.270.41.19
libGL.so.270.41.19
libnvcuvid.so -> libnvcuvid.so.1
libnvcuvid.so.1 -> libnvcuvid.so.270.41.19
libnvcuvid.so.270.41.19
libnvidia-cfg.so -> libnvidia-cfg.so.1
libnvidia-cfg.so.1 -> libnvidia-cfg.so.270.41.19
libnvidia-cfg.so.270.41.19
libnvidia-compiler.so -> libnvidia-compiler.so.1
libnvidia-compiler.so.1 -> libnvidia-compiler.so.270.41.19
libnvidia-compiler.so.270.41.19
libnvidia-glcore.so.270.41.19
libnvidia-ml.so -> libnvidia-ml.so.1
libnvidia-ml.so.1 -> libnvidia-ml.so.270.41.19
libnvidia-ml.so.270.41.19
libnvidia-tls.so.270.41.19
libnvidia-wfb.so.1 -> libnvidia-wfb.so.270.41.19
libnvidia-wfb.so.270.41.19
libOpenCL.so -> libOpenCL.so.1
libOpenCL.so.1 -> libOpenCL.so.1.0
libOpenCL.so.1.0 -> libOpenCL.so.1.0.0
libOpenCL.so.1.0.0
libXvMCNVIDIA_dynamic.so.1 -> libXvMCNVIDIA.so.270.41.19
libXvMCNVIDIA.so -> libXvMCNVIDIA.so.270.41.19
libXvMCNVIDIA.so.1 -> libXvMCNVIDIA.so.270.41.19
libXvMCNVIDIA.so.270.41.19
Run Code Online (Sandbox Code Playgroud)
编辑 2:我可能找到了一些东西。
潜伏在/usr/lib32/适当的(不是nvidia-current子目录)中,我发现了以下内容:
ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep 270
libcuda.so.1 -> libcuda.so.270.41.06
libcuda.so.270.41.06
libGL.so.1 -> libGL.so.270.41.06
libGL.so.270.41.06
libnvidia-compiler.so.270.41.06
libnvidia-glcore.so.270.41.06
libnvidia-tls.so.270.41.06
libvdpau.so.1 -> libvdpau.so.270.41.06
libvdpau.so.270.41.06
libvdpau_trace.so -> vdpau/libvdpau_trace.so.270.41.06
Run Code Online (Sandbox Code Playgroud)
出于某种原因,里面的所有内容/usr/lib32/nvidia-current/都是正确的版本,但其中有很多/usr/lib32/可能会毁了派对的东西。
编辑 3:试图追踪哪个包拥有这些文件失败:
find /usr/lib32 -iname '*270.41.06*' -exec dpkg -S "{}" \;
dpkg-query: no path found matching pattern /usr/lib32/libnvidia-compiler.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libGL.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/vdpau/libvdpau_nvidia.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/vdpau/libvdpau_trace.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libvdpau.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/tls/libnvidia-tls.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libnvidia-tls.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libcuda.so.270.41.06.
dpkg-query: no path found matching pattern /usr/lib32/libnvidia-glcore.so.270.41.06.
Run Code Online (Sandbox Code Playgroud)
关于如何处理这些损坏版本的任何提示?删除它们?删除然后符号链接到./nvidia-current/版本?
小智 17
在带有 3.0.29 内核的 Ubuntu 12.04 64bit 上执行以下操作为我解决了这个问题。希望能帮助到你。
sudo apt-get purge nvidia-current
sudo apt-get install nvidia-current
Run Code Online (Sandbox Code Playgroud)
Oli*_*Oli 14
在发现有大量旧文件堆积在 /usr/lib32/ 上时,我使用以下命令将它们移开:
sudo find /usr/lib32 -iname '*270.41.06*' -exec mv {} {}.old \;
Run Code Online (Sandbox Code Playgroud)
并重新启动 X。这打破了 3D 的一切。哈扎。使用之前的推荐,我可以看到有四个断开的链接:
ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep 270
libcuda.so.1 -> libcuda.so.270.41.06
libGL.so.1 -> libGL.so.270.41.06
libvdpau.so.1 -> libvdpau.so.270.41.06
libvdpau_trace.so -> vdpau/libvdpau_trace.so.270.41.06
Run Code Online (Sandbox Code Playgroud)
我没有手动替换四个文件的链接,而是去了瑞文戴尔领主埃尔隆德,并委托他建立一个可以进入莫赫多的团契,蹒跚地爬到末日山并为我制定一个命令来带给我(通过那个我确实意味着我们所有人)并在黑暗中束缚我们。
够了。这是一个命令:
ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep 270 | cut -d' ' -f1 | xargs -l1 sudo bash -c "rm /usr/lib32/\$0 && ln -s /usr/lib32/nvidia-current/\$0 /usr/lib32/\$0"
Run Code Online (Sandbox Code Playgroud)
她是不是很壮观。它奏效了。我现在有 4 个闪亮的新符号链接:
ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep '/nvidia-current'
libcuda.so.1 -> /usr/lib32/nvidia-current/libcuda.so.1
libGL.so.1 -> /usr/lib32/nvidia-current/libGL.so.1
libOpenCL.so -> nvidia-current/libOpenCL.so
libvdpau.so.1 -> /usr/lib32/nvidia-current/libvdpau.so.1
libvdpau_trace.so -> /usr/lib32/nvidia-current/libvdpau_trace.so
Run Code Online (Sandbox Code Playgroud)
然后我检查是否一切正常。在重新启动之前,我想我应该检查一下链接是否正确:
ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep '/nvidia-current' | cut -d' ' -f3 | xargs file
/usr/lib32/nvidia-current/libcuda.so.1: symbolic link to `libcuda.so.270.41.19'
/usr/lib32/nvidia-current/libGL.so.1: symbolic link to `libGL.so.270.41.19'
/usr/lib32/nvidia-current/libvdpau.so.1: ERROR: cannot open `/usr/lib32/nvidia-current/libvdpau.so.1' (No such file or directory)
/usr/lib32/nvidia-current/libvdpau_trace.so: ERROR: cannot open `/usr/lib32/nvidia-current/libvdpau_trace.so' (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
伟大的。所以mega-command 只对了两个链接。进一步查看后,似乎这些libvdpau文件实际上位于/usr/lib32/nvidia-current/vdpau/. 这次不要乱说:
sudo rm /usr/lib32/libvdpau{,_trace}.so*
sudo ln -s /usr/lib32/{nvidia-current/vdpau/,}libvdpau.so*
sudo ln -s /usr/lib32/{nvidia-current/vdpau/,}libvdpau_trace.so*
ls -l /usr/lib32/ | awk '{ print $8 " " $9 " " $10 }' | grep '/nvidia-current' | cut -d' ' -f3 | xargs file
/usr/lib32/nvidia-current/libcuda.so.1: symbolic link to `libcuda.so.270.41.19'
/usr/lib32/nvidia-current/libGL.so.1: symbolic link to `libGL.so.270.41.19'
/usr/lib32/nvidia-current/vdpau/libvdpau.so.270.41.19: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
/usr/lib32/nvidia-current/vdpau/libvdpau_trace.so.270.41.19: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
Run Code Online (Sandbox Code Playgroud)
至少它们正确地(如果有点笨拙)连接在一起。是时候测试了。
我曾经遇到过这个问题,而且解决起来非常容易。
以下内容基于不完整的记忆,所以要小心!
首先,您需要查看 /usr/lib32/ 中的 nvidia 库是否匹配:
/usr/lib32/libOpenCL.so
/usr/lib32/nvidia-current
/usr/lib32/nvidia-current/libGL.la
/usr/lib32/nvidia-current/libGL.so
/usr/lib32/nvidia-current/libGL.so.1
/usr/lib32/nvidia-current/libGL.so.270.41.06
/usr/lib32/nvidia-current/libOpenCL.so
/usr/lib32/nvidia-current/libOpenCL.so.1
/usr/lib32/nvidia-current/libOpenCL.so.1.0
/usr/lib32/nvidia-current/libOpenCL.so.1.0.0
/usr/lib32/nvidia-current/libXvMCNVIDIA.so
/usr/lib32/nvidia-current/libXvMCNVIDIA.so.1
/usr/lib32/nvidia-current/libXvMCNVIDIA.so.270.41.06
/usr/lib32/nvidia-current/libXvMCNVIDIA_dynamic.so.1
/usr/lib32/nvidia-current/libcuda.so
/usr/lib32/nvidia-current/libcuda.so.1
/usr/lib32/nvidia-current/libcuda.so.270.41.06
/usr/lib32/nvidia-current/libnvcuvid.so
/usr/lib32/nvidia-current/libnvcuvid.so.1
/usr/lib32/nvidia-current/libnvcuvid.so.270.41.06
/usr/lib32/nvidia-current/libnvidia-cfg.so
/usr/lib32/nvidia-current/libnvidia-cfg.so.1
/usr/lib32/nvidia-current/libnvidia-cfg.so.270.41.06
/usr/lib32/nvidia-current/libnvidia-compiler.so
/usr/lib32/nvidia-current/libnvidia-compiler.so.1
/usr/lib32/nvidia-current/libnvidia-compiler.so.270.41.06
/usr/lib32/nvidia-current/libnvidia-glcore.so.270.41.06
/usr/lib32/nvidia-current/libnvidia-ml.so
/usr/lib32/nvidia-current/libnvidia-ml.so.1
/usr/lib32/nvidia-current/libnvidia-ml.so.270.41.06
/usr/lib32/nvidia-current/libnvidia-tls.so.270.41.06
/usr/lib32/nvidia-current/libnvidia-wfb.so.270.41.06
/usr/lib32/nvidia-current/tls
/usr/lib32/nvidia-current/tls/libnvidia-tls.so.270.41.06
/usr/lib32/nvidia-current/vdpau
/usr/lib32/nvidia-current/vdpau/libvdpau.so.270.41.06
/usr/lib32/nvidia-current/vdpau/libvdpau_nvidia.so
/usr/lib32/nvidia-current/vdpau/libvdpau_nvidia.so.1
/usr/lib32/nvidia-current/vdpau/libvdpau_nvidia.so.270.41.06
/usr/lib32/nvidia-current/vdpau/libvdpau_trace.so.270.41.06
/usr/lib32/vdpau
Run Code Online (Sandbox Code Playgroud)
根据您的描述,它们很可能与这些不匹配。如果是这种情况,那么您需要删除它们(小心 - 使用文件管理器,不要尝试 rm -rf !!!!!!!!!),然后重新安装 nvidia-current :)。
这应该为您提供正确版本的库并为您提供一个工作系统。
也只需这样做:
$ dpkg --get-selections | grep nvidia
nvidia-common install
nvidia-current install
nvidia-current-updates install
nvidia-experimental-x... install
nvidia-settings install
nvidia-settings-updates install
Run Code Online (Sandbox Code Playgroud)
进而:
$ sudo apt-get purge nvidia-experimental-x...
...
$ sudo reboot
Run Code Online (Sandbox Code Playgroud)
一切都好!
| 归档时间: |
|
| 查看次数: |
29198 次 |
| 最近记录: |