Strona główna
» LINUX
»
Jak naprawić problem braku ładowania sterowników NVIDIA po aktualizacji jądra w systemie Ubuntu
Jak naprawić problem braku ładowania sterowników NVIDIA po aktualizacji jądra w systemie Ubuntu
Aktualizacja jądra Ubuntu może spowodować, że system NVIDIA uruchomi się normalnie, a zastrzeżony sterownik przestanie się ładować. Objawy mogą być różne: nvidia-smimoże to oznaczać brak komunikacji ze sterownikiem, aplikacje CUDA mogą przestać widzieć GPU, pulpit może powrócić do renderowania programowego lub modprobe nvidiamoże przestać działać. Praktycznym rozwiązaniem jest zidentyfikowanie uszkodzonej warstwy zamiast ponownej instalacji wszystkiego naraz.
Niniejszy dokument koncentruje się na sterownikach NVIDIA w pakietach Ubuntu oraz aktualnych wytycznych Canonical. Od października 2026 roku Ubuntu zaleca korzystanie z tego ubuntu-driversnarzędzia lub aplikacji „Dodatkowe sterowniki” dla większości systemów, a także zaleca korzystanie z prekompilowanych, podpisanych modułów jądra, jeśli są dostępne. Własna dokumentacja Ubuntu firmy NVIDIA również obsługuje Ubuntu 22.04, 24.04 i 26.04, ale nazewnictwo pakietów różni się w nowszych gałęziach, dlatego nie kopiuj numeru gałęzi z przykładu, chyba że jest on faktycznie oferowany dla Twojego komputera.
Szybka lista kontrolna diagnozy
Sprawdzać
Rozkaz
Co ci to mówi
Uruchamianie jądra
uname -r
Dokładny interfejs ABI jądra wymagający odpowiedniego modułu NVIDIA.
Status kierowcy
nvidia-smi
Czy przestrzeń użytkownika może komunikować się z załadowanym modułem jądra NVIDIA.
Załadowane moduły
lsmod | grep -E 'nvidia|nouveau'
Czy obecnie właścicielem GPU jest NVIDIA czy Nouveau?
Zalecany pakiet
sudo ubuntu-drivers list
Gałęzie sterowników, które Ubuntu uznaje za odpowiednie dla danego sprzętu.
Bezpieczny rozruch
mokutil --sb-state
Czy niepodpisane moduły jądra innych firm mogą zostać odrzucone.
Przydatne wskazówki dotyczące niezgodności interfejsu API, odrzucenia podpisu lub błędów sondy.
Typowy schemat awarii po aktualizacji: nowe jądro działa, ale moduł NVIDIA nie jest załadowany. Dokładne wersje jądra i sterowników w Twoim systemie mogą się różnić.
1. Sprawdź, czy problem zaczął się od aktualnego jądra
Najpierw zarejestruj działające jądro i aktualny stan NVIDIA:
Jeśli nvidia-smiwystąpi błąd i nie nvidiapojawią się żadne moduły w lsmod, awaria występuje poniżej warstwy CUDA lub aplikacji pulpitu. Jeśli nvidia-smizgłosi Failed to initialize NVML: Driver/library version mismatch, Canonical dokumentuje to jako niezgodność przestrzeni użytkownika/jądra z modułem, która często następuje po aktualizacji sterownika; ponowne uruchomienie może być wystarczające, jeśli nowy moduł jest już zainstalowany.
Jeśli nadal możesz wybrać starsze jądro z GRUB-a i sterownik tam działa, to jest to mocny dowód na to, że nowe jądro nie posiada użytecznego modułu NVIDIA. Starsze jądro to przydatne rozwiązanie tymczasowe, ale nie jest to ostateczne rozwiązanie, ponieważ nadal potrzebujesz zgodności aktualnego jądra i stosu sterowników.
2. Zapytaj Ubuntu, jaką gałąź sterownika zaleca
Na standardowym komputerze stacjonarnym lub stacji roboczej Ubuntu należy użyć logiki wyboru sterowników Ubuntu, zamiast zgadywać gałąź:
sudo apt update
sudo ubuntu-drivers list
W przypadku większości komputerów stacjonarnych i systemów do gier Canonical zaleca standardowy sterownik UDA zamiast -serverpakietu. W przypadku serwerów obliczeniowych należy stosować się do wskazówek dotyczących serwera i ubuntu-drivers list --gpgpuw razie potrzeby. Jeśli system został wcześniej zainstalowany za pomocą samodzielnego .runinstalatora firmy NVIDIA lub repozytorium innej firmy, mieszanie źródeł pakietów może utrudnić diagnostykę. Canonical wyraźnie ostrzega, że sterowniki zainstalowane poza udokumentowanymi metodami mogą nadpisywać komponenty dostarczone przez Ubuntu i zakłócać działanie funkcji Secure Boot.
Użyj funkcji wykrywania sterowników Ubuntu, aby zidentyfikować odpowiednią gałąź dla zainstalowanego procesora GPU zamiast kodować wersję na stałe z innego komputera.
3. Przed odbudową czegokolwiek sprawdź Bezpieczny rozruch
Bezpieczny rozruch to częsty powód, dla którego moduł NVIDIA jest obecny na dysku, ale nie chce się załadować. Sprawdź jego stan:
mokutil --sb-state
sudo modprobe nvidia
Jeśli funkcja Bezpieczny rozruch jest włączona i modprobezwraca komunikat taki jak Key was rejected by service, jądro wymusza zaufanie do modułów. Ubuntu od lat wymusza walidację modułów jądra w ramach Bezpiecznego rozruchu w obsługiwanych wersjach amd64. Preferowaną metodą przez Canonical jest korzystanie z podpisanych, prekompilowanych modułów NVIDIA, o ile są dostępne. Jeśli celowo używasz DKMS, Ubuntu może wymagać utworzenia i zarejestrowania klucza właściciela maszyny (MOK) podczas ponownego uruchomienia.
Nie wyłączaj funkcji Secure Boot jako pierwszego kroku rozwiązywania problemów. Może to być krótki eksperyment diagnostyczny w kontrolowanym środowisku, ale lepszym rozwiązaniem jest zazwyczaj instalacja podpisanego modułu lub poprawna rejestracja modułu MOK. Canonical dokumentuje proces rejestracji w swojej dokumentacji UEFI Secure Boot .
Odrzucenie podpisu wskazuje na zaufanie Secure Boot, a nie na brak GPU. Rozwiąż problem z podpisywaniem modułów lub rejestracją MOK zamiast wielokrotnej reinstalacji bibliotek przestrzeni użytkownika.
4. Sprawdź, czy istnieje odpowiedni moduł NVIDIA dla uruchomionego jądra
Prekompilowane pakiety NVIDIA Ubuntu są powiązane z ABI jądra. Zastąp DRIVER_BRANCHgałęzią pokazaną przez ubuntu-drivers list:
Jeśli pakiet jest zainstalowany dla bieżącego jądra, przejdź do poniższych procedur bezpiecznego rozruchu, Nouveau i sprawdzania dziennika. Jeśli brakuje pakietu, zainstaluj dokładnie pasujący pakiet modułów:
Canonical obsługuje również instalację metapakietu, na przykład linux-modules-nvidia-${DRIVER_BRANCH}-generic, który ułatwia przyszłym aktualizacjom jądra pobieranie odpowiednich modułów NVIDIA. Dokładna nazwa pakietu zależy od wersji Ubuntu, wersji jądra, gałęzi sterownika oraz od tego, czy używasz wariantu serwerowego, dlatego przed potwierdzeniem należy sprawdzić kandydata wskazanego przez APT.
Sprawdzenie polityki pakietów pozwala odróżnić brakujący moduł NVIDIA specyficzny dla jądra od problemu ze sterownikiem przestrzeni użytkownika.
5. Jeśli używasz DKMS, upewnij się, że obecne są aktualne nagłówki jądra
DKMS buduje moduł dokładnie dla używanego jądra. Dlatego wymaga on pasujących nagłówków jądra. Canonical zaleca DKMS głównie wtedy, gdy prekompilowane moduły są niedostępne, na przykład w przypadku niektórych niestandardowych jąder.
sudo apt install linux-headers-$(uname -r)
dkms status
Jeśli wpis NVIDIA DKMS nie wskazuje na pomyślną kompilację bieżącego jądra, przed próbą losowego usuwania pakietów należy sprawdzić dziennik kompilacji /var/lib/dkms/. Typowe błędy to brakujące nagłówki, nieobsługiwane kombinacje kompilatora/jądra lub problem z podpisywaniem modułów. Po usunięciu problemu, zainstaluj ponownie odpowiedni pakiet DKMS lub skorzystaj ze ścieżki automatycznej Ubuntu:
sudo ubuntu-drivers install --include-dkms
Użyj tego polecenia tylko wtedy, gdy DKMS jest rzeczywiście wymagany. Aktualna dokumentacja Canonical Desktop podaje, że prekompilowane moduły są preferowanym wyborem dla większości użytkowników, szczególnie w przypadku bezpiecznego rozruchu.
Dopasowane nagłówki jądra są wymagane, gdy DKMS musi skompilować moduł NVIDIA dla bieżącego jądra.
6. Zainstaluj brakujący, skompilowany moduł, jeśli jest dostępny
Jeżeli krok 4 pokazał, że obecne jądro nie posiada prekompilowanego modułu NVIDIA, zainstaluj go jawnie i pozwól APT na odbudowanie initramfs:
Następnie sprawdź, czy APT zakończył działanie bez błędów zależności. Unikaj wymuszania instalacji pakietów za pomocą dpkg --force-*;, ponieważ może to spowodować, że moduł jądra, biblioteki przestrzeni użytkownika i metapakiet będą w niekompatybilnych wersjach.
Jeśli nie jesteś pewien, z której gałęzi skorzystać, bezpieczniejszą metodą naprawy ogólnej jest:
sudo ubuntu-drivers install
Kanoniczne stwierdzenie ubuntu-driverswykorzystuje tę samą logikę, co aplikacja Dodatkowe sterowniki i domyślnie wybiera wstępnie skompilowane podpisane sterowniki, które współpracują z funkcją Bezpiecznego rozruchu.
Zainstalowanie pakietu modułów specyficznych dla jądra rozwiązuje częsty problem, w którym gałąź sterownika jest obecna, ale nowe jądro nie posiada odpowiadającego jej modułu NVIDIA.
7. Ponowne uruchomienie po zmianach pakietu
Ponowne uruchomienie nie jest tu jedynie formalnością. Działające jądro może zachować starszy moduł NVIDIA w pamięci, podczas gdy APT zaktualizował już biblioteki przestrzeni użytkownika na dysku. Canonical wyraźnie dokumentuje to jako przyczynę niezgodności wersji sterownika/biblioteki NVML po aktualizacjach.
sudo reboot
Po ponownym uruchomieniu nie instaluj od razu systemu ponownie. Najpierw sprawdź wynik za pomocą poleceń z następnej sekcji.
Po zmianie sterownika lub modułu jądra należy uruchomić ponownie komputer, aby jądro załadowało nowo zainstalowany moduł NVIDIA, a komponenty przestrzeni użytkownika powróciły do tej samej wersji.
Pomyślna naprawa ma trzy przydatne oznaki: nvidia-smiwyświetla listę GPU, lsmodpokazuje moduły NVIDIA i /proc/driver/nvidia/versionraportuje wersję uruchomionego modułu. W przypadku obciążeń CUDA należy również ponownie uruchomić aplikację lub framework, który wcześniej uległ awarii; nvidia-smisamo w sobie dowodzi to komunikacji ze sterownikami, a nie tego, czy wszystkie biblioteki CUDA w danym środowisku są kompatybilne.
Prawidłowy stan końcowy: nvidia-smi może komunikować się z GPU, a moduły jądra NVIDIA są załadowane. Podane wartości są przykładowe, a nie oznaczają wymaganej wersji.
Jeśli nadal nie działa: użyj objawu, aby wybrać następną akcję
„Niezgodność wersji sterownika/biblioteki”
Najpierw uruchom ponownie. Następnie porównaj działającą wersję modułu jądra z zainstalowanymi pakietami. Kanoniczne informacje wskazują, że zaktualizowane komponenty przestrzeni użytkownika mogą tymczasowo nie zgadzać się ze starszym modułem, który nadal jest załadowany w pamięci. Jeśli niezgodność nadal występuje po ponownym uruchomieniu, sprawdź, czy występują mieszane źródła pakietów i wiele gałęzi sterowników.
„Nie znaleziono urządzeń” i Nouveau jest załadowany
Sprawdzać:
lsmod | grep nouveau
W dokumentacji serwera Ubuntu podano, że Nouveau może w takiej sytuacji kolidować z zastrzeżonym sterownikiem NVIDIA. Jeśli Nouveau jest załadowany i zamierzasz używać zastrzeżonego sterownika, Canonical umieszcza go na liście blokowanych sterowników i przebudowuje initramfs:
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/disable-nouveau.conf
echo "options nouveau modeset=0" | sudo tee -a /etc/modprobe.d/disable-nouveau.conf
sudo update-initramfs -u
sudo reboot
Nie umieszczaj Nouveau na czarnej liście tylko dlatego, że znajduje się na dysku; najpierw sprawdź, czy jest rzeczywiście załadowany i ma związek z awarią.
modprobe nvidiamówi, że klucz został odrzucony
Wróć do ścieżki Bezpiecznego Rozruchu. Używaj podpisanych modułów Ubuntu, gdy to możliwe, lub dokończ rejestrację MOK dla modułu DKMS. Wielokrotna reinstalacja tego samego niepodpisanego modułu nie zmieni decyzji o zaufaniu.
Nowe jądro nie ma kompatybilnego pakietu modułów
Tymczasowo uruchom starsze jądro, o którym wiadomo, że działa, aktualizuj system i sprawdź, czy Ubuntu udostępnia odpowiedni, prekompilowany moduł dla nowszego jądra. Jeśli celowo uruchamiasz niestandardowe jądro, DKMS może być odpowiednim rozwiązaniem, ale przeczytaj jego dziennik kompilacji i potwierdź podpisanie Secure Boot. Unikaj przypinania starego jądra na czas nieokreślony, chyba że masz plan konserwacji aktualizacji zabezpieczeń.
Polecenia do zebrania przed poproszeniem o pomoc
Polecenia te zapewniają kompaktowy pakiet diagnostyczny bez konieczności zmiany systemu:
Podaj wersję Ubuntu z lsb_release -alub /etc/os-release, dokładny kernel z uname -r, a także informację, czy sterownik został pierwotnie zainstalowany za pośrednictwem pakietów Ubuntu, repozytorium NVIDIA, PPA czy samodzielnego instalatora. Te szczegóły zazwyczaj mają większe znaczenie niż ogólne stwierdzenie, że „sterownik zepsuł się po aktualizacji”.
Praktyczna profilaktyka
ubuntu-driversW przypadku normalnych systemów komputerowych preferuj przepływ pracy Ubuntu lub Dodatkowe sterowniki.
Zachowaj zainstalowany metapakiet wersji jądra, aby przyszłe aktualizacje jądra mogły zawierać pasujące moduły NVIDIA.
Po uaktualnieniu jądra lub sterownika NVIDIA należy przeprowadzić ponowne uruchomienie zamiast kontynuować korzystanie ze stosu mieszanego w pamięci i na dysku.
Zachowaj co najmniej jedno działające jądro, dopóki nie potwierdzisz, że nowe uruchamia się ze sterownikiem GPU.
Unikaj mieszania pakietów Ubuntu, PPA, samodzielnego instalatora NVIDIA i wielu repozytoriów, chyba że celowo zapobiegasz konsekwencjom.
Dokładna nazwa gałęzi sterownika, jądra ABI i pakietu zależy od wersji. Zawsze zastępuj wartościami zgłoszonymi przez system i APT, zamiast traktować przykładowe wersje jako uniwersalne.