Ketidakcocokan Nvidia API

27

Saya telah merencanakan hari bersantai dengan Portal 2 tetapi memulai Steam (untuk pertama kalinya dalam beberapa minggu) saya disambut dengan pesan berikut di terminal:

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.

Saya akui saya tidak benar-benar tahu apa yang dibicarakan ketika dikatakan pengemudi. Verifikasi nvidia-currentadalah 270.41.19. Saya pikir itu adalah driver dan modul, semuanya dalam satu.

Saya menggunakan X-SWAT PPA dan saya perhatikan bahwa nvidia-settingspaketnya sudah ditingkatkan 275.09.07. Karena ini hanya aplikasi pengaturan, saya tidak berpikir ketidakcocokan ini ada hubungannya dengan ini. Ini juga bukan versi yang sama dengan masalah yang dijelaskan.

Saya lebih suka tidak membersihkan kembali ke driver Nvidia standar karena kurang stabil pada GTX580 saya. Saya akan menerima jawaban yang mengambil pengaturan manual dan membuatnya mengkompilasi ulang ketika kernel mengkompilasi ulang (yaitu, beberapa sihir DKMS) tetapi harus bekerja. Saya tidak ingin kembali ke mode teks setiap kali saya memulai kembali setelah upgrade kernel.

Sunting: Minecraft bekerja tanpa satu keluhan tentang versi driver. Penumbra mati dengan kesalahan yang kira-kira sama ketika memasuki sebuah game.

Sunting: Inilah yang saya hadapi dalam hal file 32-bit. Mereka semua tampaknya berada di versi yang tepat.

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  

Sunting 2: Saya mungkin menemukan sesuatu.

Bersembunyi di tempat yang /usr/lib32/tepat (bukan nvidia-currentsubdir) Saya menemukan yang berikut:

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

Untuk beberapa alasan, semua yang /usr/lib32/nvidia-current/ada di versi yang benar tetapi ada banyak kesalahan /usr/lib32/yang mungkin merusak pesta.

Sunting 3: Mencoba melacak paket mana yang memiliki file-file ini gagal:

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.

Adakah tips tentang bagaimana saya harus menangani versi yang rusak ini? Hapus mereka? Hapus lalu symlink ke ./nvidia-current/versi?

Oli
sumber
Apakah Anda menggunakan sistem 64-bit? Jika demikian, mungkinkah perbedaan antara game yang berfungsi dan yang rusak adalah apakah game itu 32-bit atau 64-bit? Jika itu masalahnya, maka bisa jadi komponen ruang pengguna 32-atau 64-bit sudah usang.
James Henstridge
Saya menggunakan 64bit. Ini kedengarannya seperti diagnosis yang baik. Trine (yang juga asli 64bit) juga berfungsi.
Oli
@ James tahu bagaimana cara memperbaikinya?
Oli
Saya tidak memiliki sistem Nvidia, jadi berikut ini adalah dugaan. Perpustakaan ruang pengguna 32-bit mungkin di suatu tempat di bawah /usr/lib32. Periksa apakah mereka terlihat seperti versi yang sama dengan yang utama 64-bit. Jika berbeda, cari tahu paket apa yang dimiliki dan cari pembaruan.
James Henstridge

Jawaban:

17

Melakukan hal berikut ini untuk saya pada Ubuntu 12.04 64bit dengan kernel 3.0.29. Semoga ini bisa membantu.

sudo apt-get purge nvidia-current
sudo apt-get install nvidia-current
gsbabil
sumber
4
Gunakan dpkg --get-selections | grep nvidiauntuk menemukan paket nvidia lain yang harus Anda bersihkan
Christopher Manning
Terima kasih GSBabil, memperbaiki masalah serupa untuk saya. Diperlukan reboot setelah itu sebelum "diambil".
Ash
5
@ChristopherManning cara yang lebih mudah untuk melakukan itu adalah sudo apt-get remove --purge nvidia *
Ben McCann
Bekerja dengan baik terima kasih! Akhirnya memiliki driver terbaru, Steam senang: D
Ads20000
@ GSBabil Saya ingin membelikan Anda bir yang sangat buruk.
Matthew Scragg
14

Saat mengetahui ada banyak file lama yang terurai / usr / lib32 / saya memindahkannya dengan perintah berikut:

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

Dan restart X. Ini merusak semuanya 3D. Sabas. Menggunakan pujian sebelumnya saya bisa melihat ada empat tautan yang terputus:

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

Alih-alih secara manual mengganti tautan untuk empat file, saya pergi ke Elrond, Lord of Rivendell dan menugaskannya untuk mengatur persekutuan yang dapat menjebak ke Morhdorh, berjalan ke Gunung Doom dan membuat saya satu perintah untuk membawakan saya (dan dengan itu saya benar-benar berarti kita semua) dan dalam kegelapan mengikat kita.

Cukup itu saja. Ini adalah satu perintah:

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"

Bukankah dia spektakuler? Dan itu berhasil. Saya sekarang memiliki 4 symlink baru yang mengkilap:

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

Saya kemudian memeriksa untuk melihat apakah semuanya berhasil. Sebelum memulai kembali saya pikir saya harus memeriksa untuk melihat apakah tautannya benar:

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)

Besar. Jadi perintah-mega hanya melakukan dua tautan dengan benar. Setelah melihat sedikit lebih jauh, tampaknya libvdpaufile - file itu benar-benar hidup /usr/lib32/nvidia-current/vdpau/. Tidak mengacaukan saat ini:

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

Setidaknya mereka benar (jika sedikit canggung) terkait. Saatnya untuk menguji.

Sunting: Ini berhasil tetapi belajar dari perjuangan saya: Tetap sederhana.

Oli
sumber
Saya ingat neraka semacam ini dengan baik - hanya saja saya tidak mengambil risiko menggunakan baris perintah (jika terjadi kesalahan ketik sesuatu) untuk memperbaiki milik saya: P.
RolandiXor
7

lakukan saja ini juga:

$ 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

lalu:

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

semuanya baik-baik saja!

shgnInc
sumber
2
Ini sangat membantu karena memperlihatkan versi lama yang diinstal. Setelah saya membersihkan mereka semuanya boot dengan baik. Terima kasih!
Josh Johnson
baik. Saya sangat senang untuk itu.
shgnInc
Jawaban yang bagus Saya memeriksa daftar saya dan membersihkannya, kemudian menginstal ulang apa yang saya butuhkan dan reboot. Voila! +1
nicorellius
7

Saya pernah mengalami masalah ini, dan ternyata mudah diperbaiki.

Yang berikut ini didasarkan pada memori yang tambal sulam jadi hati-hati!
Pertama, Anda perlu melihat bahwa perpustakaan nvidia di / usr / lib32 / match:

/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 

Menurut apa yang Anda jelaskan, mereka kemungkinan besar tidak cocok dengan ini. Jika ini masalahnya, maka Anda harus menghapusnya (hati-hati - gunakan file manager, jangan coba rm -rf !!!!!!!!! ), lalu instal ulang nvidia-current :).
Ini akan memberi Anda versi perpustakaan yang tepat dan memberi Anda sistem kerja.

RolandiXor
sumber
4

Saya memiliki masalah ini yang mempengaruhi peluncur SWTOR saya dalam anggur. Membaca di atas saya memutuskan untuk mencoba dan melakukan hal-hal melalui UI Ubuntu. Inilah solusi sederhana yang bekerja untuk saya;

Hapus dan instal ulang driver tambahan melalui UI:

  1. Buka Sistem -> Administrasi -> Driver Tambahan
  2. Pilih driver grafis yang dipercepat NVIDIA dan tekan tombol "hapus". JANGAN REBOOT SEGERA SETELAH.
  3. Setelah dihapus, pilih driver yang sama dan klik "aktifkan".
  4. Sekarang reboot.
  5. Harus diperbaiki.
Erik Madsen
sumber
3

setelah beberapa tes saya menemukan bahwa paket:

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

bekerja untuk semua kernel 3.2.0- * dan 3.8.0- *,

paket sementara:

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

hanya berfungsi untuk Kernel 3.8.0- *.

Ubuntu jockey masih merekomendasikan versi 319 juga ketika kernel 3.2.0- * hanya ada. Jadi ada bug di sini.

Selanjutnya perintahnya:

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

atau

$ sudo dpkg-reconfigure nvidia-current

instal driver hanya untuk satu versi kernel untuk setiap versi minor, dan hapus untuk yang lainnya.

Jadi, dalam kasus saya saya menginstal kernel berikut:

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

Saya mendapatkan driver hanya untuk:

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

saat boot dengan kernel lain, hasil driver tidak diinstal.

Menurut saya di suatu tempat dalam paket ada indikasi yang salah untuk membangun dan menginstal untuk beberapa kernel saja.

Di mana saja, mengeluarkan perintah berikut memperbaiki situasi:

$ 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

hingga apt-get install nvidia-current atau konfigurasi ulang

Thread: Driver Nvidia diperbarui - versi campuran 304,88 dan 319,32 terkait dengan hal yang sama, tetapi saya tidak memiliki kredit yang cukup untuk mengirim di sana.

efa
sumber
1

Ini terjadi pada saya setelah saya menginstal driver Nvidia eksperimental terbaru. Saya masih ingin mencoba driver terbaru jika memungkinkan alih-alih kembali ke driver yang lebih lama, jadi inilah yang berhasil bagi saya:

sudo apt-get remove --purge nvidia*
sudo apt-get install nvidia-319
sudo reboot
bupupin
sumber
0

Menghapus semua paket nvidia dan menginstal ulang memang cara termudah untuk memperbaikinya.

Pertama saya menghapus semua paket nvidia dengan perintah di bawah ini:

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

Lalu saya melakukan reboot hanya karena penasaran, untuk melihat bagaimana antarmuka grafis saya akan terlihat - resolusi buruk dan lambat, seperti yang diharapkan.

Setelah membuka sebuah shell saya menjalankan perintah di bawah ini untuk menginstal nvidia kembali:

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

Semuanya bekerja lagi. Semoga berhasil.

George Anderson
sumber