Linus Torvalds, twórca i główny twórca jądra Linuksa, ogłosił wydanie jądra Linux w wersji 5.0.
Wbrew pozorom, ta nowa stabilna wersja jądra nie wnosi niczego rewolucyjnego. To wydanie zwiększa ot tak po prostu numer wersji jądra głównego do wersji 5.x, z wersji 4.x. A poniżej argumentacja z listy mailingowej:
„Te overall changes for all of the 5.0 release are much bigger. But I’d like to point out (yet again) that we don’t do feature-based releases, and that “5.0” doesn’t mean anything more than that the 4.x numbers started getting big enough that I ran out of fingers and toes.”
czyli:
„ogólnie zmiany w całym wydaniu 5.0 są znacznie większe, ale chciałbym jeszcze raz podkreślić, że nie robimy wersji opartych na funkcjonalności, a 5.0 oznacza tylko tyle, że numeracja 4.x była już tak obszerna, że skończyły mi się palce u rąk i nóg”
Co nowego jednak można znaleźć w jądrze Linux 5.0?
- Ulepszenia sterownika Intel i915 GPU Linux
- Zestaw poprawek sterownika GPU amdgpu / radeon Dodano wsparcie dla Adaptive-Sync (vide AMD FreeSync) w otwartym sterowniku AMDGPU dla kart Radeon, co zapewne ucieszy graczy
- Wsparcie systemu szyfrowania Adiantum, przeznaczonego dla urządzeń o niskiej mocy/telefonów komórkowych, a opracowanego przez Google dla Androida i ChromeOS
- Lepsza obsługa błędów procesora, takich jak Spectre i Meltdown
- Wsparcie dla procesora NXP i.MX8, czyli jednostki, w którą ma być wyposażony Purism Librem 5 – pierwszy smartfon z „prawdziwym” Linuksem
- Obsługa pliku wymiany w systemie plików Btrfs
- Nowy dyspozytor dla układów ARM w systemie big.LITTLE
- Obsługa funkcji Generic Receive Offload (GRO) w UDP i kontrolera zasobów cpuset w cgroupv2
- Wprowadzono wsparcie dla dokładnego przewijania, na które pozwalają myszki Logitech
- Zaimportowano zabezpieczenia kontenera Linux przy użyciu silnika seccomp
- Zobacz pełną listę zmian jądra Linuksa 5 tutaj
A oto przy tej okazji, jak wogóle skompilować jądro Linux 5.0, i dokonać zmiany starszego obecnego jądra systemu na nowsze, na przykładzie Debian Stretch GNU/Linux
- Zaczynamy od upewnienia się, czy wszystkie zainstalowane pakiety w systemie są aktualne:
apt update apt upgrade
- Instalujemy pakiety niezbędne do procesu kompilacji jądra Linux:
apt install build-essential linux-source bc kmod cpio flex cpio libncurses5-dev bison libssl-dev libelf-dev
- Pobieramy jądro Linux:
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.xz
- Pobrany plik to skompresowane archiwum, a aby można było w następnym kroku zweryfikować podpis elektroniczny, to musi ono być w postaci odkompresowanego archiwum „tar”, dlatego też należy je zdekompresować:
xz -v -d linux-5.0.tar.xz
- Teraz upewniamy się, że pobrane archiwum jest tym, jakie wydała faktycznie ekipa Pana Linusa Torvaldsa, z wykorzystaniem podpisu elektronicznego GPG (pobieramy plik z podpisem, następnie pobieramy klucze publiczne używane do podpisywania jąder Linux, i weryfikujemy już sam podpis):
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.sign apt install dirmngr gpg --keyserver hkp://keys.gnupg.net --recv-keys 00411886 gpg --keyserver hkp://keys.gnupg.net --recv-keys 6092693E gpg --verify linux-5.0.tar.sign
W efekcie zakończenia polecenia weryfikacji powinna ukazać się informacja o prawidłowości podpisu elektronicznego, co można zauważyć na poniższym rysunku w czerwonym zaznaczeniu (jeżeli nie pojawi się infomarcja o prawidłowości podpisu, to nie mamy pewności, czy źródła jądra Linux jakie pobraliśmy, są tymi wydanymi przez producenta, także dalsza procedura na własne ryzyko wtedy):
Na powyższym rysunku można znaleźć także informację o problemie z „zaufaniem” do certyfikatu (niebieskie zaznacznenie), stąd także należy zweryfikować odcisk palca klucza publicznego (zielone zaznaczenie) wykorzystywanego do weryfikacji podpisu (a wcześniej pobranego).
Informacje o prawidłowym odcisku palca można znaleźć na stronie: https://www.kernel.org/signature.htmlJeżeli powyższa procedura jest mało zrozumiała, to zapraszamy do naszego cyklu na kanale YouTube dotyczącego podstaw szyfrowania danych, gdzie można zrozumieć powyższą technologię: https://www.youtube.com/playlist?list=PL144PdtmXQoqGs75vytrl4A3VHkR_yMfV
- Teraz można rozpakować archiwum „tar”:
tar xvf linux-5.0.tar
- Po rozpakowaniu przechodzimy do katalogu w którym znajdują się rozpakowane źródła jądra Linux, i następnie generujemy plik „.config” na bazie aktualnej konfiguracji naszego systemu Linux (tak chyba łatwiej, i mniej problematycznie, niż od podstaw „odhaczać” potrzebne sterowniki w ramach konfiguracji jądra), w którym to pliku wskazana jest lista sterowników jakie mają zostać skompilowane wraz z jądrem (czy to na stałe, czy to jako moduły):
cd linux-5.0
cp -v /boot/config-$(uname -r) .config
- Mimo wszystko warto czasem zweryfikować, czy jakichś sterowników nie braknie (czyli po wydaniu poniższego polecenia przeglądamy listę wszystkich sterowników i ewentualnie dorzucamy jakieś potrzebne do konfiguracji):
make menuconfig
- Teraz można już rozpocząć proces kompilacji jądra Linux, poniżej zawarto polecenie, które wykona kompilację do tzw. paczki Debian’owej (.deb), dzięki czemu będzie można łatwo ten utworzony pakiet zainstalować na dowolnym innym systemie Debian GNU/Linux:
make -j`nproc` bindeb-pkg
Ciekawostka: Przełącznik -j `nproc` wskazuje, aby wykorzystać wszystkie dostępne procesory do procesu kompilacji (bnędzie troszkę szybciej, choć to już jak szybko, zależy od „mocy przerobowej” naszego urządzenia).
- Po zakończeniu procesu kompilacji:
w katalogu w którym znajduje się podkatalog z wcześniej rozpakowanymi źródłami (czyli równolegle do niego), znaleźć można utworzone pakiety „.deb”.Należy je zainstalować poleceniem:dpkg -i linux*.deb
- Teraz zostaje zrestartować system operacyjny:
reboot
i zweryfikować, czy uruchomił się z nowym jądrem Linux, z wykorzystaniem poniższych poleceń:hostnamectl
uname -mrs
uname -a
spodziewany efekt można zobaczyć na poniższym zdjęciu (czyli widzimy aktualną wersję jądra Linux na którym pracuje nasz system operacyjny):
Oczywiście w innych dystrybucjach niż tych opartych na dystrybucji Debian GNU Linux, procedura będzie wyglądała nieznacznie inaczej, aczkolwiek różnice pojawią się sumarycznie od polecenia realizującego kompilację jądra Linux (jak w sumie również w liście pakietów jakie należałoby doinstalować)
Tak z pamięci już troszkę (także jakiś mały błąd może się wkraść) konfiguracja kompilacji i instalacji jądra Linux dla CENTOS/RHEL/ORACLE/SCIENTIFIC oraz FEDORA LINUX, wyglądałaby mniej więcej jak poniżej:
make -j $(nproc)
make modules_install
make install
grub2-mkconfig -o /boot/grub2/grub.cfg
grubby --set-default /boot/vmlinuz-5.0.0
reboot
hostnamctl