'Nvidia-drm' çekirdek modülü nasıl kaldırılır?


29

Debian Stretch'te en güncel NVIDIA sürücüsünü yüklemeye çalışıyorum. İndirdiğim NVIDIA-Linux-x86_64-390.48.rungelen burada ama yapmam çalıştığınızda

sudo sh ./NVIDIA-Linux-x86_64-390.48.run

önerildiği gibi, bir hata mesajı belirir.

ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel.  This may be because it is in use (for example, by an X server, a CUDA program, or 
         the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading.  Please be sure to exit any programs    
         that may be using the GPU(s) before attempting to upgrade your driver.  If no GPU-based programs are running, you know that your kernel supports module unloading,   
         and you still receive this message, then an error may have occured that has corrupted an NVIDIA kernel module's usage count, for which the simplest remedy is to     
         reboot your computer.

Kimin kullandığını nvidia-drm(veya nvidia_drm) bulmaya çalıştığımda hiçbir şey göremiyorum.

~$ sudo lsof | grep nvidia-drm
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
~$ sudo lsof -e /run/user/1000/gvfs | grep nvidia-drm
~$

Ve onu çıkarmaya çalıştığımda, kullanıldığını söylüyor.

~$ sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$ 

Yeniden başlattım ve yalnızca metin modunda başlattım (kullanıcı adı / parola vermeden önce Ctrl + Alt + F2 tuşlarına basarak), ancak aynı hatayı aldım.

Bunun yanında, "çekirdeğimin modül boşaltmayı desteklediğini" nasıl anlarım?

Nvidia ile ilgili önyükleme konusunda birkaç uyarı alıyorum;

Apr 30 00:46:15 debian-9 kernel: nvidia: loading out-of-tree module taints kernel.
Apr 30 00:46:15 debian-9 kernel: nvidia: module license 'NVIDIA' taints kernel.
Apr 30 00:46:15 debian-9 kernel: Disabling lock debugging due to kernel taint
Apr 30 00:46:15 debian-9 kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module  375.82  Wed Jul 19 21:16:49 PDT 2017 (using threaded interrupts)

Kurtarma modunda yapmayı deneyebilir misin?
vfbsilva

Modülleri boşaltmadan önce github'daki bu konuya bakınız : systemctl stop systemd-logind
GAD3R,

@vfbsilva Kurtarma kipim garip, sonsuza kadar tekrar ediyor, tüm USB aygıtlarını tekrar tekrar tanımlıyor. Enter tuşuna basmayı, root şifresini vermeyi ve bir bilgi istemi almayı başardım, ancak / dev yok, bu nedenle diskin takılması mümkün değil.
Rodrigo

@ GAD3R Sahip olduğum tek şey systemctl stop systemd-logind.servicebu, ancak ekranı kapattı ve beni tekrar Ctrl + Alt + F2 yapmak zorunda olduğum grafik girişine geri götürüyor.
Rodrigo

Yanıtlar:


28

Nvidia sürücülerini kullanacağından şüphelendiğim ekran yöneticisini durdurmak istediğinizi hayal ediyorum.

Bir metin konsoluna geçtikten sonra ( Ctrl+ Alt+ tuşlarına basın F2) ve kök olarak oturum açtıktan sonra , ekran yöneticisinin çalışmasını sağlayan grafik hedefi devre dışı bırakmak için aşağıdaki komutu kullanın:

# systemctl isolate multi-user.target

Bu noktada, Nvidia sürücülerini kullanarak modprobe -r(veya rmmoddoğrudan) kaldırabileceğinizi umuyorum :

# modprobe -r nvidia-drm

Değiştirmeyi / yükseltmeyi başardıktan ve grafik ortamını yeniden başlatmaya hazır olduğunuzda, şu komutu kullanabilirsiniz:

# systemctl start graphical.target

Kaldırmayı (cevabını kullanarak) kaldırmayı ve yeni sürümü, artık çalışan grafik modunun olmadığı noktaya kurmayı başardım. Bilgisayarı biçimlendirmek ve Debian'ı yeniden kurmak zorunda kaldım. Şimdi tamamen farklı bir hatalar dizisine ... Tüm bunlar sadece "GPU" yu Blender'da oluşturma seçeneği olarak görmek için, ve hala görmüyorum. Özel sürücüler berbat!
Rodrigo,

4
Bu benim için modprobeadım olmadan çalıştı .
Don Kirkby

1
Evet, hiçbir modprobeadıma ihtiyacım yoktu .
David Jung,

Metin konsolundayken bile nvidia-drm'yi çıkaramıyorum. Nasıl zorla çıkarabilirim?
addison,

Sadece yeterli olmadığını @addison Not olmak bir metin konsolda, çekirdekten nvidia sürücüsünü kullanıyor olursa olsun X11 veya Wayland veya durdurmak gerekir. Nokta systemctl isolatekomuta olduğunu yapmaktır. Ancak sisteminizde doğru şekilde yapılandırılmamış ps -efolabilir ... Sürücüyü neyin kullandığını tespit edip edemediğinizi kontrol edin ve görün, ardından bu işlemi durdurun. Bu, sürücüyü kaldırmanıza izin vermelidir.
filbranden

5

lsofKullanıcı alanı işlemleri tarafından kullanılan dosyaları listeler. Fakat nvidia_drmbir çekirdek modülüdür, yani lsofgerçekten kullanımda olup olmadığını görmeyiniz. (Çekirdek zaten RAM'e tamamen yüklediği için modül dosyası açılmıyor. Ancak modül, kullanıcı alanına veya diğer çekirdek bileşenlerine hizmet veriyor olabilir ve bu modülün boşaltılmasını engelliyor.)

Çalıştırın lsmod | grep nvidia.drmve nvidia_drmmodül adının sağındaki sayıları görün . İlk sayı basitçe modülün boyutudur; ikincisi kullanım sayısıdır. Modülü başarılı bir şekilde kaldırmak için önce kullanım sayısının 0 olması gerekir.

X11 sunucusu çalışıyor ve nvidiasürücüyü kullanıyorsa , nvidia_drmçekirdek modülü en iyi şekilde kullanımda olacaktır. Dolayısıyla, en azından metin konsoluna geçmeniz ve X11 sunucusunu kapatmanız gerekir. Genellikle bu, kullandığınız X Display Manager servisini (hangi masaüstü ortamını kullandığınıza bağlı olarak) durdurarak yapılabilir.

Hata mesajının dediği gibi, çalışıyorsanız nvidia-persistenced, nvidia_drmmodülü çıkarmadan önce bunu durdurmanız gerekir .


Ctrl + Alt + F2 sonra lsmodkullanarak 1 süreç var beni anlatıyor nvidia_drm. Bu yüzden yaptım sudo /etc/init.d/gdm3 stop, okdurdu. Ama yine de 1 süreç içinde lsmod. Şimdi Gnome içinde, ps aux | grep nvidiagösterir [irq/129-nvidia]ve [nvidia]ama hayır nvidia-persistenced. Ayrıca, burada lsmod2 işlemi kullanarak gösterir nvidia_drm. Sıkıştım.
Rodrigo

3

Ben de benzer bir problem yaşadım.

* Sebep: nvidia.drm paketi kullanımdaydı


Tüm NVIDIA paketlerini temizleyerek düzelttim.

Bu 2 komutla önceki tüm NVIDIA kurulumlarını kaldırın:


$ sudo apt-get purge nvidia*
$ sudo apt-get autoremove

Modül çıkarılmalıdır.

Yeniden başlat ve devam et.


Teşekkür ederim! Tekrar biçimlendirmem gerekirse, bu kullanışlı olabilir ...
Rodrigo

2

Systemd-logind hizmetini durdurmanın sizi grafik girişine geri götürdüğü yorumlarında bildirirsiniz . Grafik bir giriş bilginiz varsa, X çalışıyor demektir, böylece video sürücüsü yüklenir ve kullanımdadır. Bu, nvidia-drm modülünün neden kullanıldığını kısmen açıklıyor.

Ayrıca, söylerken görünüşte yanlış anlaşılmalara ihanet ediyorsunuz

Yeniden başlattım ve yalnızca metin modunda başlattım (kullanıcı adı / parola vermeden önce Ctrl + Alt + F2 tuşlarına basarak), ancak aynı hatayı aldım.

Ctrl + Alt + F2 tuşlarına basmak, metin modu oturumu için iyi yapılandırılmış sanal bir terminal # 2'ye geçer, ancak bu "metin modunda başlamaktan" çok uzaktır. Varsayılan sanal terminalde bir grafik giriş ekranınız varsa, X çalışıyor ve farklı bir VT'ye geçmek bunu değiştirmiyor. Sadece X olmayan bir oturumda oturum açıyorsunuz.

Denenecek ilk ve en kolay şey aslında X sunucusunu kapatmak. Bunu yapmanın eski yolu, metin modu oturumunuza giriş yapmak ve komutu çalıştırmaktır.

telinit 3

runlevel 3'e geçmek için. Bu da systemd ile çalışmalı, ancak yerel systemd yolu bunun yerine

systemctl isolate multi-user.target

Her ikisi de elbette ayrıcalık gerektirir, bu yüzden sudokendinizi kullanmanız veya kök salmanız gerekir.

Bu, modülü çıkarmazsa veya en azından manuel olarak yapmanızı mümkün kılıyorsa, bir sonraki en iyi tercihiniz, sistemi doğrudan çalışma seviyesi 3'e (çoklu kullanıcı hedefi) veya hatta çalışma seviyesi 1'e başlatmak olacaktır. (kurtarma hedefi). Bunu genellikle önyükleme sırasında önyükleme sırasında çekirdek bağımsız değişken listesinin sonuna "3" (veya "1") ekleyerek yapıyorum. Varsayılan önyükleme hedefini, bu makalede anlatıldığı şekilde değiştirebilirsiniz .

NVidia sürücüsünün çoğu Linux dağıtımı için önceden oluşturulmuş paketlerde bulunduğunu da unutmayın. Bu paketleri çok az bir kısmı kendi standart repolarına dahil ediyor çünkü sürücü her şeyden önce tescilli, ancak kesinlikle güvenilir bir 3. parti repo bulabilirsiniz. Yükleyiciyi doğrudan çalıştırmak yerine bu tür paketleri kullanmanızı şiddetle tavsiye ediyorum, ancak bulunduğunuz yerden oraya ulaşmak için önce sürücüyü el ile kaldırmanız gerekebilir.


Onu (Filipe'ın cevabını kullanarak) kaldırmayı ve yeni sürümü daha fazla çalışan grafik modunun olmadığı noktaya yerleştirmeyi başardım. Bilgisayarı biçimlendirmek ve Debian'ı yeniden kurmak zorunda kaldım. Şimdi tamamen farklı bir hatalar dizisine ... Tüm bunlar sadece "GPU" yu Blender'da oluşturma seçeneği olarak görmek için, ve hala görmüyorum. Özel sürücüler berbat!
Rodrigo,

@Rodrigo, çok kötü bir deneyim yaşadığın için üzgünüm. Ancak bu tür bir sorun, el ile kurulum yapmak yerine paketleri kullanmanızı önerdiğim bir örnektir.
John Bollinger

Evet, paketleri kullanmayı tercih ederim. Ama bir yerlerde, Blender'daki GPU seçeneğinin, eski bir sürücü yüzünden muhtemelen etkin olmadığını okudum ...
Rodrigo,

2

CUDA Kurulumu

1) En son CUDA Toolkit'i indirin

2) Ctl + Alt + F3 tuşlarına basarak tty3'e geçin

3) Devam etmeden önce nvidia-drm'yi boşaltın.

3a) Çok kullanıcılı yalıtımı.target

sudo systemctl isolate multi-user.target

3b) nvidia-drm'nin şu anda kullanımda olduğunu unutmayın.

lsmod | grep nvidia.drm

3c) nvidia-drm'yi boşaltın

sudo modprobe -r nvidia-drm

4d) nvidia-drm'nin artık kullanılmadığını unutmayın.

lsmod | grep nvidia.drm

5) İndirme klasörünüze gidin ve cuda kurulumunu çalıştırın.

sudo sh cuda_10.1.168_418.67_linux.run

6) Kurulum sırasında istemleri yanıtlayın.

7) Kurulum tamamlandığında, CUDA Sürümünün güncellendiğini onaylayın.

nvidia-smi

8) GUI'yi tekrar başlatın.

sudo systemctl start graphical.target

0

Nvidia sürücülerini kurmaya çalışırken Debian Stretch ile aynı problemi yaşadım. Metin kipinde tek çözümüm sürücüyü kaldırmaktı. Sakarca bir çözüm olduğunu biliyorum, ama önce gnome kabuğunu tamir etmeyi ve sadece Nvidia sürücüsünü kaldırmayı ve GDM'yi yeniden yüklemeyi denediğimi hatırlıyorum. Sadece tüm kabuğu yeniden yüklemek çok daha kolaydı.


Sanırım ortaya çıkarsa, daha az sakar bir çözüm bekleyeceğim.
Rodrigo

0

Ben de aynı problemle karşılaştım. Hatanın nedeni, yanlışlıkla cuda kurulumu sırasında "Install nvidia driver" ı seçmemdi.

Yani, CUDA'nın kurulumu sırasında, aşağıdaki seçeneklerle karşılaştığınızda:

Linux-x86_64 için NVIDIA Hızlandırılmış Grafik Sürücüsünü Kurun 384.81? (Y) es / (n) / o (Q):

Lütfen q seçimini yapın , sorun çözülecektir.


Peki sen ne diyorsun? Tek çözüm yeniden yüklemek için mi? Açıkçası tek çözüm bu değil; diğer cevaplar gönderildi.
Scott

0

Benim için çalışan şey, metinde başlayacak olan sistemi değiştirmekti.

systemctl set-default runlevel3.target

daha sonra yeniden başlatın ve nvidia cuda sürücüsünü yükledikten sonra bir kez grafik modunda başlatmak için sistemi değiştirmek isteyebilirsiniz

systemctl set-default runlevel5.target

0

Durdurmak systemd-logindbenim için düzeltti:

sudo systemctl stop systemd-logind

Bu, nvidia-xrun github sayfasındaki bu github sayısında bir geçici çözüm olarak önerilmektedir :

İyi haber millet, sistemli logind buradaki suçlu. Geçerli geçici çözüm, "nvidia-xrun" oturumundan çıktıktan sonra aşağıdaki komutu çalıştırmaktır sudo systemctl stop systemd-logind

Ardından, diğer nvidia modüllerini manuel olarak çıkarmanız ve DGPU’yu manuel olarak kapatmanız gerekir. İşte "nvidia-xrun" oturumundan çıktıktan sonra çalışan kod pasajı.

echo 'Unloading nvidia_drm module' 
execute "sudo rmmod nvidia_drm"

echo 'Unloading nvidia_modeset module' 
execute "sudo rmmod nvidia_modeset"

echo 'Unloading nvidia module' 
execute "sudo rmmod nvidia"

echo 'Turning off nvidia GPU' 
execute "sudo tee /proc/acpi/bbswitch <<<OFF"

echo -n 'Current state of nvidia GPU: ' 
execute "cat /proc/acpi/bbswitch"

Github'da sistem sorunu

Nvidia Linux Geliştiricileri portalından referans bağlantısı

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.