Próbuję zainstalować najnowszy sterownik NVIDIA w Debian Stretch. Pobrałem NVIDIA-Linux-x86_64-390.48.run
od tutaj , ale gdy próbuję zrobić
sudo sh ./NVIDIA-Linux-x86_64-390.48.run
zgodnie z sugestią pojawia się komunikat o błędzie.
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.
Kiedy próbuję dowiedzieć się, kto używa nvidia-drm
(lub nvidia_drm
), nic nie widzę.
~$ 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
~$
A kiedy próbuję go usunąć, mówi, że jest używany.
~$ sudo modprobe -r nvidia-drm
modprobe: FATAL: Module nvidia_drm is in use.
~$
Zrestartowałem się i zacząłem w trybie tekstowym (naciskając Ctrl + Alt + F2 przed podaniem nazwy użytkownika / hasła), ale dostałem ten sam błąd.
Poza tym, skąd mam wiedzieć, że moje jądro obsługuje rozładowanie modułu?
Otrzymuję kilka ostrzeżeń podczas uruchamiania związanych z NVIDIA, ale nie mam pojęcia, czy są one powiązane:
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)
systemctl stop systemd-logind
przed rozładowaniem modułów.systemctl stop systemd-logind.service
, to zamyka ekran i przenosi mnie z powrotem do graficznego loginu, gdzie muszę ponownie nacisnąć Ctrl + Alt + F2.Odpowiedzi:
Wyobrażam sobie, że chcesz zatrzymać menedżera ekranu, co, jak podejrzewam, użyłoby sterowników Nvidii.
Po zmianie na konsolę tekstową (naciśnięcie Ctrl+ Alt+ F2) i zalogowaniu się jako root, użyj następującego polecenia, aby wyłączyć cel graficzny, co powoduje, że menedżer wyświetlania działa:
W tym momencie spodziewam się, że będziesz w stanie zwolnić sterowniki Nvidii za pomocą
modprobe -r
(lubrmmod
bezpośrednio):Gdy uda Ci się go wymienić / zaktualizować i będziesz gotowy ponownie uruchomić środowisko graficzne, możesz użyć tego polecenia:
źródło
modprobe
kroku.modprobe
kroku.systemctl isolate
to, żeby to zrobić. Ale możliwe, że nie jest poprawnie skonfigurowany w twoim systemie ... Sprawdź,ps -ef
czy możesz zauważyć, co może być przyczyną używania sterownika, a następnie zatrzymaj ten proces. To powinno pozwolić ci na rozładowanie sterownika.lsof
wyświetla listę plików używanych przez procesy w przestrzeni użytkownika. Alenvidia_drm
jest modułem jądra, więclsof
niekoniecznie zobaczy, czy jest faktycznie używany. (Plik moduł nie będzie otwarty, ponieważ kernel już całkowicie załadowany go do pamięci RAM. Ale moduł może być dostarczanie usług do przestrzeni użytkownika lub inne składniki jądra, i że to, co uniemożliwia przeładowanie modułu).Uruchom
lsmod | grep nvidia.drm
i zobacz cyfry po prawej stronienvidia_drm
nazwy modułu. Pierwsza liczba to po prostu rozmiar modułu; drugi to liczba użycia. Aby pomyślnie usunąć moduł, najpierw musi być 0.Jeśli serwer X11 działa i korzysta ze
nvidia
sterownika,nvidia_drm
moduł jądra z pewnością będzie w użyciu. Musisz przynajmniej przełączyć się na konsolę tekstową i zamknąć serwer X11. Zwykle można to zrobić, zatrzymując dowolną usługę X Display Manager, z której korzystasz (zależy od używanego środowiska pulpitu).Jak napisano w komunikacie o błędzie, jeśli działasz
nvidia-persistenced
, musisz to również zatrzymać, aby móc zwolnićnvidia_drm
moduł.źródło
lsmod
mówi mi, że jest 1 procesnvidia_drm
. Tak też zrobiłemsudo /etc/init.d/gdm3 stop
, cook
powstrzymałem. Ale nadal 1 proces wlsmod
. Teraz wewnątrz GNOME,ps aux | grep nvidia
pokazach[irq/129-nvidia]
i[nvidia]
ale nienvidia-persistenced
. Tutaj równieżlsmod
pokazano 2 procesy wykorzystującenvidia_drm
. Utknąłem.Miałem podobny problem.
Naprawiłem to, usuwając wszystkie pakiety NVIDIA.
Usuń wszystkie poprzednie instalacje NVIDIA za pomocą tych 2 poleceń:
$ sudo apt-get purge nvidia*
$ sudo apt-get autoremove
Moduł należy usunąć.
Uruchom ponownie i idź dalej.
źródło
W komentarzach meldujesz, że zatrzymanie usługi logd systemd zabierze Cię z powrotem do graficznego logowania. Jeśli masz login graficzny, X działa, więc sterownik wideo jest załadowany i używany. To bardzo prawdopodobnie wyjaśnia częściowo, dlaczego używany jest moduł nvidia-drm.
Ponadto zdradzasz pozorne nieporozumienie, kiedy mówisz
Naciśnięcie klawiszy Ctrl + Alt + F2 powoduje przejście do wirtualnego terminala # 2, który można skonfigurować do logowania w trybie tekstowym, ale jest to dalekie od „rozpoczynania w trybie tekstowym”. Jeśli miałeś graficzny ekran logowania na domyślnym terminalu wirtualnym, X działa, a przełączenie na inny VT tego nie zmienia. Logujesz się tylko do sesji innej niż X.
Pierwszą i najłatwiejszą próbą jest wyłączenie serwera X. Tradycyjnym sposobem na to byłoby zalogowanie się do sesji w trybie tekstowym i wykonanie polecenia
aby przejść do poziomu 3. To powinno również działać z systemd, ale natywnym sposobem systemd byłoby uruchomienie
Oba wymagają oczywiście przywileju, więc będziesz musiał użyć
sudo
lub sprawić , abyś rootował.Jeśli to nie usunie modułu lub przynajmniej pozwoli ci to zrobić ręcznie, następnym najlepszym rozwiązaniem byłoby uruchomienie systemu bezpośrednio na poziomie 3 (cel dla wielu użytkowników), a może nawet na poziomie 1 (cel ratunkowy). Zwykle robię to, dodając „3” (lub „1”) na końcu listy argumentów jądra w czasie rozruchu za pomocą programu ładującego. Możesz także zmienić domyślny cel rozruchowy zgodnie z opisem w tym artykule .
Należy również pamiętać, że sterownik nVidia jest dostępny w gotowych pakietach dla większości dystrybucji Linuksa. Niewielu włącza te pakiety do swoich własnych standardowych repozytoriów, ponieważ sterownik jest w końcu zastrzeżony, ale na pewno można znaleźć renomowane repozytorium, które go posiada. Zdecydowanie zalecam korzystanie z takich pakietów zamiast bezpośredniego uruchamiania instalatora, ale aby dostać się tam, skąd jesteś, może być konieczne ręczne odinstalowanie sterownika.
źródło
Instalacja CUDA
1) Pobierz najnowszy zestaw narzędzi CUDA
2) Przełącz na tty3, naciskając Ctl + Alt + F3
3) Przed kontynuowaniem rozładuj nvidia-drm.
3a) Izoluj cel wielu użytkowników
3b) Należy pamiętać, że nvidia-drm jest obecnie w użyciu.
3c) Zwolnij NVIDIA-DRM
4d) Należy pamiętać, że nvidia-drm nie jest już używana.
5) Przejdź do folderu pobierania i uruchom instalację cuda.
6) Odpowiedz na wszelkie monity podczas instalacji.
7) Po zakończeniu instalacji potwierdź, że wersja CUDA została zaktualizowana.
8) Uruchom ponownie GUI.
źródło
Miał ten sam problem z Debian Stretch podczas próby instalacji sterowników Nvidia. W trybie tekstowym moim jedynym rozwiązaniem było usunięcie sterownika, ponowne zainstalowanie gdm i gnome-shell. Wiem, że to niezdarne rozwiązanie, ale pamiętam, że najpierw próbowałem naprawić powłokę gnome i tylko usunąć sterownik Nvidia i ponownie zainstalować GDM. Okazało się, że znacznie łatwiej było po prostu ponownie zainstalować całą powłokę.
źródło
Zetknąłem się również z tym samym problemem. Przyczyną błędu było to, że podczas instalacji cuda przypadkowo wybrałem „Zainstaluj sterownik NVIDIA”.
Tak więc podczas instalacji CUDA napotkasz następujące opcje:
Wybierz q , problem zostanie rozwiązany.
źródło
to, co zadziałało, to zmiana systemu na bardziej tekstowy
następnie ponownie uruchom i zainstaluj sterownik nvidia cuda po zakończeniu, możesz chcieć zmienić system, aby ponownie uruchomić w trybie graficznym
źródło
Zatrzymanie
systemd-logind
naprawiło to dla mnie:Jest to sugerowane jako obejście tego problemu na githubie na stronie gvub nvidia-xrun:
źródło