Jak przywrócić kernel w Ubuntu po aktualizacji

linux ubuntu

linux ubuntu

Regularne wykonywanie aktualizacji systemu jest dość ważnym procesem, który należy wykonywać regularnie bez znaczenia czy korzystamy z Windowsa, Linuksa czy MacOS’a. Czasami jednak zamiast dostępu do nowych funkcji i udoskonaleń dostajemy problem z uruchomieniem systemu operacyjnego. W tym wpisie pokażę Ci jakie kroki podjąć, kiedy bo przeprowadzanej aktualizacji Twój ubuntu nie chce się uruchomić, a Twoim oczom ukazuje się tylko czarny ekran.

Czarny ekran lub błąd invalid environment error

Pierwsze co musimy zrobić w takiej sytuacji, to jednak w jakiś sposób uruchomić naszego Ubuntu. Mamy tak naprawdę dwa wyjścia:

  • uruchomić system na poprzedniej wersji kernela i usunąć nowo zainstalowaną wersję
  • wykorzystać nośnik instalacyjny i zamontować partycję z Ubuntu( oraz /dev, /proc, /sys) i na niej w środowisku chroot wykonać niezbędne operacje do usunięcia najnowszego kernela i przywrócenia jego poprzedniej wersji.

W tym wpisie zajmiemy się opcją pierwszą, ponieważ jest ona najszybsza i najmniej ryzykowna. Podczas uruchamiania komputera w bootloaderze GRUB wybieramy “Opcje zaawansowane dla systemu Ubuntu” (ang. Advanced option for Ubuntu). Jeśli korzystasz z UEFI to musisz najpierw wcisnąć klawisz “Tab” na klawiaturze zanim system zacznie się wczytywać. Dla pewności, że wszystko się uda proponuję Ci wyłączyć opcję Fast Boot w biosie.

opcje zaawansowane w grub

Wyświetli się lista wszystkich zainstalowanych kerneli w systemie, na której wybieramy wcześniejszą wersję za pomocą strzałek na klawiaturze i potwierdzamy wybór enterem. Rozpocznie się wczytywanie poprzedniego jądra systemu i po chwili Twój system powinien się uruchomić. Czasami może zdarzyć się, że proces wczytywania trwa dobrą chwilę i jeśli po paru minutach nic się nie zmieni, spróbuj wybrać jeszcze wcześniejszą wersję kernela.

wybieranie wcześniejszej wersji kernela

Usuwamy niedziałający kernel

Mamy już działający system, ale jeśli zostawimy go tak jak jest to przy następnym uruchomieniu będziemy mieli ten sam problem. Żeby się go pozbyć musimy usunąć niedziałający kernel. W terminalu wpisujemy polecenie

sudo apt list --installed | grep linux-image*

Dzięki temu zobaczymy jakie wersje kernela są obecnie zainstalowane i który pakiet trzeba usunąć. Na zrzucie ekranu poniżej (pochodzi on z innego komputera niż wybieranie kernela z gruba), chodzi o linux-image w wersji 5.0.0-25.

lista kerneli za pomoca polecenia apt

Usuwamy tę wersję jak normalny pakiet za pomocą polecenia apt remove

 sudo apt remove linux-image-unsigned-5.0.0-25-generic

Następnie uruchamiamy komputer ponownie i tym razem Ubuntu powinien się już włączyć poprawnie. Na koniec wspomnę tylko, że podczas usuwania kernela bootloader grub automatycznie się przebuduje wykrywając pozostałe kernele w systemie.

Zamiast usuwać najnowszy kernel możesz również wskazać ręcznie, który ma zostać załadowany zmieniając wartość GRUB_DEFAULT w pliku /etc/default/grub, ale to już temat na całkiem inny wpis

Być może zadajesz sobie teraz pytanie, czy po następnej aktualizacji znowu trzeba będzie przywrócić kernel w taki sam sposób? Odpowiedź brzmi: TAK. Istnieje możliwość zablokowania aktualizacji pakietu linux-image, jednak nie jest to najlepsze rozwiązanie (a wręcz niebezpieczne) problemu dlatego go też nie opiszę.

2 Comments

  1. Grzegorz pisze:

    Jak długo można „jechać” na tej starszej wersji kernela? Gdzie sprawdzić datę jej przydatności?

    Odpalam swoje lubuntu 18.04 na starym kernelu i … co dalej? Czy po kolejnej aktualizacji problem sam się naprawi?

    • O ile komputer nie jest wystawiony na światto „jechać” można na starsze wersji kernela dotąd aż wszystko działa. Przy kolejnej aktualizacji kernela być może problem się „sam naprawi”, w zależności od tego co było jego przyczyną. Z tego co zauważyłem to zazwyczaj czarny ekran po update występuje u użytkowników którzy mają zainstalowane dodatkowe sterowniki np do karty graficznej(zwłaszcza Nvidia).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *