Ręczna aktualizacja kernela na serwerze z systemem Ubuntu

Poradniki społeczności
vps, ubuntu, linux
DoreK
DoreK α-tester v3

Wprowadzenie

Kernel jest jądrem systemu Linux, odpowiedzialny za wszystkie jego zadania. Często możemy być w posiadaniu bardzo starej wersji Kernela, która nie zawiera najnowszych usprawnień, dlatego warto go zaktualizować do najnowszej, stabilnej wersji.

Domyślnie, Ubuntu 18.04 zawiera kernel 4.15, a najnowsza wersja to 5.3.1 (stan na 22.09.2019). Ponadto, Kernel 4.15 jest znany ze swojej awaryjności, dlatego warto dokonać aktualizacji.

Często automatyczne aktualizacje systemu nie powodują aktualizacji kernela, dlatego w tym celu skorzystamy z manualnej metody aktualizacji.

⚠️ Jeżeli korzystasz z konta root, przedrostek sudo przed poleceniami jest niepotrzebny.

Aktualizacja kernela

Sprawdzenie używanej wersji kernela

Pierw sprawdźmy, z którego kernela korzystamy aktualnie. W tym celu należy użyć komendy

uname -r

W moim przypadku wersja kernela to: image|168x22

Wybranie wersji kernela

Przejdź pod ten adres - jest to oficjalne repozytorium Ubuntu, gdzie znajdują się różne wersje Kernela. Jak zejdziesz na sam dół (za pomocą przycisku END), zobaczysz najnowsze wersje jąra. Podczas pisania tego poradnika, powyższa strona wyglądała w ten sposób: image|308x500 Jak widać, najnowszą wersją kernela jest v5.3.1, zatem z tej wersji chcę skorzystać. Przechodzimy do katalogu v5.3.1. Naszym oczom ukazuje się taki widok: image|564x500 Wyjaśnienie: 1 - dokumentacja 2 - kernel dla systemów 64 bitowych 3 - kernel dla systemów 32 bitowych ... - kernele dla systemów z innymi architekturami.

W lvlup.pro instalowane są systemy 64 bitowe, jednak jeśli korzystasz z innej architektury, musisz wybrać odpowiedni kernel.

Jak widzisz, dostępne są też dwa rodzaje kerneli - generic oraz lowlatency. Wyjaśnienie: generic - podstawowa wersja Kernela. lowlatency - specjalna wersja z małym opóźnieniem systemu, nie wpływa jednak korzystnie dla oszczędności energii. Przydatna tylko, gdy potrzebujesz małe opóźnienie, np. gdy zajmujesz się nagrywaniem audio.

W tym przypadku użyję generic pod amd64. W tym celu należy pobrać wszystkie pliki znajdujące się pod

Build for amd64 succeeded (see BUILD.LOG.amd64):

które mają w nazwie:

  • _all
  • generic

Tak nazywają się pliki kernela generic pod amd64:

linux-headers-wersja_wersja.data_all.deb
linux-headers-wersja-generic_wersja.data_amd64.deb
linux-image-unsigned-wersja-generic_wersja.data_amd64.deb
linux-modules-wersja-generic_wersja.data_amd64.deb

W przypadku wybranego przeze mnie kernela, są to pliki o poniższych nazwach:

linux-headers-5.3.1-050301_5.3.1-050301.201909210632_all.deb
linux-headers-5.3.1-050301-generic_5.3.1-050301.201909210632_amd64.deb
linux-image-unsigned-5.3.1-050301-generic_5.3.1-050301.201909210632_amd64.deb
linux-modules-5.3.1-050301-generic_5.3.1-050301.201909210632_amd64.deb

Pobranie kernela

Aby pobrać każdy plik, należy skopiować link do każdego pliku, a następnie skorzystać z polecenia

wget link

W przypadku wybranego przeze mnie kernela, polecenia będą wyglądać tak:

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.3.1/linux-headers-5.3.1-050301_5.3.1-050301.201909210632_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.3.1/linux-headers-5.3.1-050301-generic_5.3.1-050301.201909210632_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.3.1/linux-image-unsigned-5.3.1-050301-generic_5.3.1-050301.201909210632_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.3.1/linux-modules-5.3.1-050301-generic_5.3.1-050301.201909210632_amd64.deb

Instalacja kernela

Teraz wystarczy zainstalować wszystkie pobrane paczki za pomocą polecenia

sudo dpkg -i *.deb

Cała operacja przeprowadzona zostanie automatycznie. Gdy wszystko się powiedzie, powinniśmy zobaczyć informację done.

Ponowne uruchomienie systemu

Należy zrestartować system, w tym celu użyj komendy

reboot

Sprawdzenie wersji kernela

Gdy system zostanie uruchomiony (to może trochę potrwać!) sprawdzamy, czy uruchomiony został przed chwilą zainstalowany kernel. W tym celu użyj polecenia

uname -r

W moim przypadku wszystko się powiodło: image|165x21

Aktualizacja kernela przebiegła pomyślnie :)

kotyk
kotyk Regularny

I git, przy okazji zaktualizuje z 4.15 do tego 5.3.1 :slight_smile:

SystemZ
SystemZ Admin lvlup.pro

Fajnie że opublikowałeś taki poradnik, może się przydać :slight_smile: Sądzę jednak że przed skorzystaniem z tego poradnika warto jeszcze poruszyć przynajmniej trzy ważne kwestie.

  1. Co konkretnie zyska przeciętny użytkownik na użyciu kernela na inny niż ten który jest dobrze przetestowany i dostarczany wraz z dystrybucją? Niejako użycie alternatywnego sugeruje że masa ludzi pracującymi lata nad Ubuntu się myli. Idąc dalej czy sugerowanie takiego działania nie zahacza o "wszyscy się mylą, ja mam rację"? Cyferki w wersji kernela już dawno niewiele znaczą, póki działa i nie ma dziur to jest ok, wystarczy popatrzeć na starożytne według niektórych wersje jąder w RHEL (np. 2.6.x jest wspierane do listopada 2020 w RHEL 6 https://access.redhat.com/support/policy/updates/errata/) a przecież Red Hata używają też instytucje finansowe (mają na to certyfikację)

  2. Brak automatycznej lub szybkiej manualnej aktualizacji obniża bezpieczeństwo gdyż nie możemy założyć że użytkownikowi będzie chciało się ciągle patrzeć czy jest nowy kernel, ręcznie ściągać i instalować. Bezpieczeństwo jest zachowane głównie wtedy jeśli nie trzeba nic robić lub poświecić tylko chwilę na apt-get update i apt-get upgrade Może akurat jest PPA dla tych paczek? Przynajmniej linki z których korzystasz na to wskazują. Dałoby to taki sam łatwy proces jaki jest domyślnie.

  3. Czy nie łatwiej i lepiej skorzystać z alternatywnych paczek które są już w repozytoriach Ubuntu? https://wiki.ubuntu.com/Kernel/LTSEnablementStack Wygląda na to że ten sposób daje kernela 5.x i jest to tylko jedna komenda a mamy też potem łatwe aktualizacje:

sudo apt-get install --install-recommends linux-generic-hwe-18.04 

Generalnie dla większości użytkowników poleciłbym albo zostać przy domyślnym kernelu lub zainstalować wspomnianą wyżej paczkę kernela HWE jeśli naprawdę jest tego potrzeba a założę się że w 99% przypadków tak nie jest.