Nvidia API uyuşmazlığı


27

Portal 2 ile dinlenerek bir gün geçirmeyi planlamıştım ancak Steam'i başlatırken (birkaç haftada ilk kez) terminalde şu mesajla karşılaştım:

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.

İtiraf edeyim, sürücü söylediğinde ne hakkında konuştuğunu gerçekten bilmiyorum. Bir verion nvidia-currentDİR 270.41.19. Hepsi bir arada sürücü ve modül olduğunu sanıyordum .

X-SWAT PPA kullanıyorum ve nvidia-settingspaketin arttığını belirttim 275.09.07. Bu sadece bir ayar uygulaması olduğu için, bu uyuşmazlığın bununla bir ilgisi olduğunu sanmıyorum. Ayrıca tarif edilen problemle aynı değil.

GTX580'imde kararlı olmadığından, standart Nvidia sürücüsüne geri dönmeyi tercih etmem. Manuel kurulumu yapan ve çekirdeği yeniden derlediğinde (yani, bazı DKMS sihirbazı) yeniden derleyen bir cevap kabul ediyorum, fakat çalışması gerekiyor. Çekirdek yükseltme işleminden sonra her yeniden başlatışımda metin moduna geri dönmek istemiyorum.

Düzenleme: Minecraft, sürücü sürümleriyle ilgili tek bir şikayet olmadan çalışır. Penumbra, oyuna girerken kabaca aynı hatayla ölüyor.

Düzenleme: İşte 32bit dosyaları açısından uğraştığım şey. Hepsi doğru sürümde görünüyor.

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  

Düzenleme 2: Bir şey bulmuş olabilirim.

Gizlenen /usr/lib32/uygun (değil nvidia-currentsubdir) Aşağıdaki bulundu:

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

Bazı nedenlerden dolayı her şey /usr/lib32/nvidia-current/doğru versiyonda ancak /usr/lib32/partiyi mahvedebilecek bir sürü sıkıntı var .

Düzenleme 3: Hangi dosyaların bu dosyalara sahip olduğunu tespit etmeye çalışmak başarısız oldu:

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.

Bu bozuk sürümlerle nasıl başa çıkmam gerektiği hakkında herhangi bir ipucu var mı? Onları sil? Sil daha sonra ./nvidia-current/sürümlere bağlantı ?


64 bit sistemde misiniz? Eğer öyleyse, çalışan ve bozuk oyunlar arasındaki fark 32-bit mi yoksa 64-bit mi olabilir? Bu durumda, 32 ya da 64 bit kullanıcı alanı bileşenlerinin güncel olmadığı olabilir.
James Henstridge

64bit yaşıyorum. Bu iyi bir tanı olabilir gibi geliyor. Aynı zamanda yerli 64bit olan Trine de çalışıyor.
Oli

@James, bunu nasıl düzeltebileceğime dair bir fikrin var mı?
Oli

Etrafımda bir Nvidia sistemi yok, bu yüzden aşağıdaki bir tahmin. 32 bit kullanıcı alanı kütüphaneleri muhtemelen altında bir yerdedir /usr/lib32. Birincil 64 bit sürümleriyle aynı sürümde olup olmadıklarını kontrol edin. Farklılarsa, hangi paketin kendilerine ait olduğunu bulun ve bir güncelleme arayın.
James Henstridge

Yanıtlar:


17

Aşağıdakileri yapmak benim için Ubuntu'daki 12.04 64bit 3.0.29 çekirdeği ile çözüldü. Umarım yardımcı olur.

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

4
dpkg --get-selections | grep nvidiaTemizlemek zorunda olduğunuz diğer nvidia paketlerini bulmak için kullanın
Christopher Manning

Teşekkürler GSBabil, benim için benzer bir sorunu çözdü. Daha sonra "aldı" önce olsa yeniden başlatılması gerekiyordu.
Ash,

5
@ChristopherBu işi kolaylaştırmanın daha kolay bir yolu sudo apt-get kaldırıcı olur
Ben McCann

Zekice çalıştı, teşekkür ederim! Sonunda güncel sürücülere sahip, Steam mutlu: D
Ads20000

@GSBabil Sana çok kötü bir bira almak istiyorum.
Matthew Scragg

14

Bunu bulduktan sonra / usr / lib32 / up crufing bir sürü eski dosya vardı / Ben aşağıdaki komutu ile onları dışarı taşındı:

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

Ve X yeniden başlatıldı. Bu her şeyi 3B bozdu. Hurra. Önceki bir övgüyü kullanarak dört kopuk bağlantı olduğunu görebiliyordum:

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

Dört dosya için bağlantıları el ile değiştirmek yerine, Rivendell Lordu Elrond’a gittim ve ona Morhdorh’a sıkışabilecek bir arkadaşlık kurmayı, Doom’a dolanıp beni getirecek bir emir vermeyi görevlendirdim. hepimizi kastettin) ve karanlıkta bizi bağlar.

Bu kadar yeter. İşte bir komut:

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"

Muhteşem değil mi? Ve işe yaradı. Şimdi 4 tane parlak yeni sembolüm var:

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

Her şeyin işe yarayıp yaramadığını görmek için kontrol ettim. Yeniden başlatmadan önce bağlantıların doğru olup olmadığını kontrol etmem gerektiğini düşündüm:

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)

Harika. Bu yüzden mega komutu sadece iki bağlantıyı doğru yaptı. Biraz daha baktıktan sonra, libvdpaudosyalar gerçekten içinde yaşıyor gibi görünüyor /usr/lib32/nvidia-current/vdpau/. Bu sefer uğraşmak yok:

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

En azından onlar uygun şekilde (biraz da olsa) bağlantılılar. Test zamanı.

Düzenleme: Bu çalıştı ama benim mücadelemden öğren: Basit tutun.


Bu tür cehennemi iyi hatırlıyorum - sadece benimkini düzeltmek için komut satırını kullanma (bir şeyi yanlış yazması durumunda) risk almadım: P.
RolandiXor

7

ayrıca sadece şunu yapın:

$ 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

ve sonra:

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

her şey yolunda!


2
Bu, kurulu olan eski sürümleri gösterdiği için yardımcı oldu. Onları bir kez temizledim, her şey yoluna girdi. Teşekkürler!
Josh Johnson,

tamam. Bunun için çok kaygılıyım.
shgnInc

Mükemmel cevap. Listeme baktım ve temizledim, sonra ihtiyacım olanı yeniden yükledim ve yeniden başlattım. İşte bu kadar! +1
nicorellius,

7

Bir kez bu sorunu yaşadım ve çözülmesi şaşırtıcı derecede kolay.

Aşağıdaki düzensiz hafızaya dayanmaktadır, bu yüzden dikkatli olun!
Öncelikle nvidia kütüphanesinin / usr / lib32 / match içinde olduğunu görmelisin:

/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 

Tanımladığınıza göre, büyük olasılıkla bunlarla uyuşmuyor. Bu durumda, bunları silmeniz gerekir (dikkatlice - bir dosya yöneticisi kullanın, rm -rf !!!!!!!!!! ) Ve nvidia-akımını yeniden kurmaya çalışmayın :).
Bu size kütüphanelerin doğru versiyonlarını vermeli ve size bir çalışma sistemi sağlamalıdır.


4

Şarapta SWTOR fırlatıcımı etkileyen bu sorunu yaşadım. Yukarıdakileri okuyarak Ubuntu UI üzerinden bir şeyler yapmaya karar verdim. İşte benim için işe yarayan basit çözüm;

UI aracılığıyla ek sürücüleri kaldırın ve yeniden yükleyin:

  1. Sisteme Git -> Yönetim -> Ek Sürücüler
  2. NVIDIA hızlandırmalı grafik sürücüsünü seçin ve "kaldır" düğmesine basın. HEMEN SONRA ÇIKARMAYIN.
  3. Kaldırıldıktan sonra, aynı sürücüyü seçin ve "etkinleştir" i tıklayın.
  4. Şimdi yeniden başlat.
  5. Sabit olmalı.

3

Bazı testlerden sonra şu paketleri buldum:

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

Tüm çekirdekler için çalışma 3.2.0- * ve 3.8.0- *,

paketler:

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

sadece Çekirdek 3.8.0- * için çalışın.

Ubuntu jokey hala çekirdek 3.2.0- * mevcut olduğunda bile 319 versiyonunu tavsiye eder. Yani burada bir hata.

Ayrıca komutlar:

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

veya

$ sudo dpkg-reconfigure nvidia-current

sürücüyü her küçük sürüm için yalnızca bir çekirdek sürümüne yükleyin ve diğerlerini kaldırın.

Öyleyse, benim durumumda aşağıdaki çekirdeğin yüklü olması:

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

Sadece şoför var:

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

diğer çekirdeklerle önyükleme yapılırken, sürücü yüklenmemiş sonuçlara neden olur.

Bana göre, paketin bir yerinde, sadece bazı çekirdeği oluşturmak ve kurmak için yanlış bir gösterge var.

Her yerde, aşağıdaki komutu veren durumu düzeltin:

$ 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

Bir sonraki apt-get install nvidia-current ya da yeniden yapılandırana kadar

Konu: Nvidia sürücüsü güncellendi - 304.88 ve 319.32 karma sürümleri aynıydı, ancak oraya gönderecek kadar kredim yoktu.


1

Son deneysel Nvidia sürücüsünü kurduktan sonra bu bana oldu. Eski bir sürücüye geri dönmek yerine mümkünse en yeni sürücüyü denemek istedim, bu yüzden benim için çalıştı:

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

0

Tüm nvidia paketlerini kaldırmak ve yeniden kurmak gerçekten bunu düzeltmenin en kolay yoludur.

İlk önce aşağıdaki komutla tüm nvidia paketlerini kaldırdım:

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

Sonra grafik arayüzümün nasıl görüneceğini görmek için sadece merakımızı yeniden başlattım - beklendiği gibi zayıf çözünürlük ve yavaş.

Bir kabuğu açtıktan sonra nvidia'yı geri yüklemek için aşağıdaki komutu çalıştırıyorum:

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

Her şey tekrar çalışıyor. İyi şanslar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.