Nvidia API 불일치


27

Portal 2에서 휴식을 취할 계획 이었지만 Steam을 시작할 때 (2 주만에 처음으로) 터미널에서 다음 메시지가 표시되었습니다.

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.

나는 그것이 드라이버를 말할 때 그것이 무엇을 말하는지 정말로 모른다고 고백 할 것입니다. 의 버전은 nvidia-current입니다 270.41.19. 나는 그것이 드라이버와 모듈 이라고 생각 했습니다 .

X-SWAT PPA를 사용하고 있으며 nvidia-settings패키지가로 향상되었습니다 275.09.07. 이것은 설정 응용 프로그램 이므로이 불일치가 이것과 관련이 있다고 생각하지 않습니다. 또한 설명중인 문제와 동일한 버전이 아닙니다.

GTX580에서 표준 Nvidia 드라이버보다 안정적이지 않기 때문에 표준 Nvidia 드라이버로 제거하지 않습니다. 커널을 다시 컴파일 할 때 (즉, 일부 DKMS 마법사) 수동 설정을하고 다시 컴파일하는 대답을 수락하지만 작동해야합니다. 커널 업그레이드 후 다시 시작할 때마다 텍스트 모드로 돌아가고 싶지 않습니다.

편집 : Minecraft는 드라이버 버전에 대한 단일 불만없이 작동합니다. 게임에 들어갈 때 반음은 거의 같은 오류로 죽습니다.

편집 : 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  

편집 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

어떤 이유로 든 모든 것이 /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.

이 깨진 버전을 어떻게 처리해야하는지에 대한 팁이 있습니까? 삭제 하시겠습니까? ./nvidia-current/버전으로 심볼릭 링크를 삭제하고 삭제 하시겠습니까?


64 비트 시스템을 사용하고 있습니까? 그렇다면 작동하는 게임과 깨진 게임의 차이점이 32 비트인지 64 비트 일 수 있습니까? 이 경우 32 비트 또는 64 비트 사용자 공간 구성 요소가 오래되었을 수 있습니다.
James Henstridge

나는 64 비트에 있습니다. 이것은 좋은 진단 일 것 같습니다. Trine (기본 64 비트이기도 함)도 작동합니다.
Oli

@James 어떻게 그 문제를 해결할 수 있을지 알고 있습니까?
Oli

나는 Nvidia 시스템을 가지고 있지 않으므로 다음은 추측입니다. 32 비트 사용자 공간 라이브러리는 아마도 아래에있을 것입니다 /usr/lib32. 기본 64 비트 버전과 동일한 버전인지 확인하십시오. 서로 다른 경우 패키지를 소유 한 패키지를 찾아 업데이트를 찾으십시오.
James Henstridge 2016 년

답변:


17

다음을 수행하면 3.0.29 커널의 Ubuntu 12.04 64bit에서 해결되었습니다. 도움이 되길 바랍니다.

sudo apt-get purge nvidia-current
sudo apt-get install nvidia-current

4
dpkg --get-selections | grep nvidia제거해야 할 다른 엔비디아 패키지를 찾는 데 사용
Christopher Manning

GSBabil에게 감사드립니다. 비슷한 문제가 해결되었습니다. 이후 "재개"하기 전에 재부팅해야했습니다.
Ash

5
@Christopher 쉬운 방법은 sudo apt-get remove --purge nvidia * 일 것입니다.
Ben McCann

훌륭하게 감사합니다! 마지막으로 최신 드라이버를 가지고, Steam은 행복합니다 : D
Ads20000

@GSBabil 나는 당신에게 너무 나쁜 맥주를 사고 싶습니다.
Matthew Scragg

14

/ usr / lib32 /를 crufting하는 오래된 파일이 많이 있다는 것을 알았을 때 다음 명령으로 파일을 제거했습니다.

sudo find /usr/lib32 -iname '*270.41.06*' -exec mv {} {}.old \;

그리고 X를 다시 시작했습니다. 이로 인해 모든 것이 3D가되었습니다. 후자. 이전의 칭찬을 사용하여 4 개의 깨진 링크가 있음을 알 수있었습니다.

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

4 개의 파일에 대한 링크를 수동으로 교체하는 대신, Rivendell의 군주 Elrond에 가서 Morhdorh에 갇히고 Doom 산에 웅덩이를 던지고 나를 데려 오는 하나의 명령을 만들 수있는 우정을 쌓는 일을 맡았습니다. 우리 모두를 의미) 어둠 속에서 우리를 묶습니다.

충분합니다. 하나의 명령은 다음과 같습니다.

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"

그녀는 장엄하지 않습니까? 그리고 효과가있었습니다. 이제 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

그런 다음 모든 것이 제대로 작동하는지 확인했습니다. 다시 시작하기 전에 링크가 올바른지 확인해야한다고 생각했습니다.

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)

큰. 따라서 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

적어도 그것들은 적절하게 (약간 불합리한) 연결되어 있습니다. 테스트 할 시간입니다.

편집 : 이것은 효과가 있었지만 내 투쟁에서 배웁니다. 단순하게 유지하십시오.


나는 이런 종류의 지옥을 잘 기억한다. 나는 명령 줄을 사용하여 (뭔가 잘못 칠 경우) 내 것을 고칠 위험이 없었다 : P.
RolandiXor

7

또한 이것을하십시오 :

$ 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

그리고:

$ sudo apt-get purge nvidia-experimental-x...
...
$ sudo reboot

모든 것이 정상입니다!


2
설치된 이전 버전이 노출되어 도움이되었습니다. 내가 그들을 제거하면 모든 것이 잘 부팅되었습니다. 감사!
Josh Johnson

승인. 너무 기뻐요.
shgnInc

좋은 대답입니다. 내 목록을 살펴보고 정리 한 다음 필요한 것을 다시 설치하고 재부팅했습니다. 짜잔! +1
nicorellius

7

나는이 문제를 한 번 겪었고 놀랍게도 쉽게 고칠 수 있습니다.

다음은 패치 메모리를 기반으로하므로주의하십시오!
먼저 / 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 

당신이 묘사 한 것에 따르면, 그들은 아마도 이것과 일치하지 않을 것입니다. 이런 경우에는 파일을주의해서 삭제하십시오 (주의해서-파일 관리자를 사용 하여 rm -rf !!!!!!!!!를 시도하지 마십시오 ). nvidia-current :를 다시 설치하십시오.
이것은 올바른 버전의 라이브러리를 제공하고 작동 시스템을 제공해야합니다.


4

이 문제는 와인의 SWTOR 실행기에 영향을 미쳤습니다. 위의 내용을 읽은 나는 우분투 UI를 통해 일을하기로 결정했습니다. 나를 위해 일한 간단한 해결책은 다음과 같습니다.

UI를 통해 추가 드라이버를 제거하고 다시 설치하십시오.

  1. 시스템-> 관리-> 추가 드라이버로 이동하십시오.
  2. NVIDIA 가속 그래픽 드라이버를 선택하고 "제거"버튼을 누릅니다. 그런 다음에는 즉시 다시 부팅하지 마십시오.
  3. 제거되면 동일한 드라이버를 선택하고 "활성화"를 클릭하십시오.
  4. 이제 재부팅하십시오.
  5. 수정해야합니다.

3

몇 가지 테스트 후 패키지를 찾았습니다.

nvidia-current
nvidia-304
nvidia-settings
nvidia-settings-304

모든 커널 3.2.0- * 및 3.8.0- *에서 작동

패키지 :

nvidia-current-updates
nvidia-experimental-304
nvidia-304-updates
nvidia-settings-updates
nvidia-settings-experimental-304
nvidia-settings-304-updates
nvidia-319
nvidia-experimental-310
nvidia-319-updates
nvidia-settings-319
nvidia-settings-experimental-310
nvidia-settings-319-updates

커널 3.8.0- *에서만 작동합니다.

커널 3.2.0- * 만있는 경우에도 우분투 자키는 여전히 319 버전을 권장합니다. 여기 버그가 있습니다.

또한 명령 :

$ sudo apt-get purge nvidia-current
$ sudo apt-get install nvidia-current

또는

$ sudo dpkg-reconfigure nvidia-current

각 부 버전마다 하나의 커널 버전 용 드라이버를 설치하고 다른 모든 버전에서는 제거하십시오.

따라서 필자의 경우 다음 커널이 설치되어 있습니다.

3.8.0-32-generic
3.2.0-55-generic-pae
3.2.0-55-generic
3.2.0-54-generic-pae
3.2.0-54-generic
3.2.0-53-generic-pae
3.2.0-53-generic
3.2.0-52-generic-pae
3.2.0-52-generic
3.2.0-51-generic-pae
3.2.0-51-generic
3.2.0-49-generic-pae
3.2.0-49-generic

나는 다음에 대해서만 드라이버를 얻었다 :

3.8.0-32-generic
3.2.0-55-generic-pae

다른 커널로 부팅하는 동안 드라이버 결과가 설치되지 않습니다.

패키지 어딘가에 커널을 빌드하고 설치하라는 잘못된 표시가있는 것 같습니다.

다음 명령을 실행하면 상황이 수정됩니다.

$ sudo dkms install nvidia-304/304.88 -k 3.8.0-32-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-55-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-55-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-54-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-54-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-53-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-53-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-52-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-52-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-51-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-51-generic-pae
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-49-generic
$ sudo dkms install nvidia-304/304.88 -k 3.2.0-49-generic-pae

다음 apt-get 설치 nvidia-current 또는 재구성 할 때까지

스레드 : Nvidia 드라이버 업데이트-304.88과 319.32의 혼합 버전은 동일하지만 게시할만한 크레딧이 없습니다.


1

최신 실험용 Nvidia 드라이버를 설치 한 후에이 문제가 발생했습니다. 이전 드라이버로 되 돌리는 대신 가능한 경우 최신 드라이버를 사용하고 싶었으므로 이것이 나를 위해 일한 것입니다.

sudo apt-get remove --purge nvidia*
sudo apt-get install nvidia-319
sudo reboot

0

모든 nvidia 패키지를 제거하고 다시 설치하는 것이 실제로이 문제를 해결하는 가장 쉬운 방법입니다.

먼저 아래 명령으로 모든 nvidia 패키지를 제거했습니다.

$ dpkg --get-selections | grep nvidia | awk '{print $1}' | xargs sudo apt-get -y purge

그런 다음 호기심으로 재부팅하여 그래픽 인터페이스가 어떻게 보이는지 확인했습니다. 해상도가 느리고 예상대로 느립니다.

쉘을 연 후 아래 명령을 실행하여 nvidia를 다시 설치합니다.

$ sudo apt-get install nvidia-current
$ sudo reboot

모든 것이 다시 작동합니다. 행운을 빕니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.