Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

Kompilacja jądra Linuksa

Spośród powodów, dla których warto samodzielnie skompilować jądro Linuksa, ten o większej wydajności systemu dość łatwo zanegować. Znamy jednak co najmniej kilka lepszych argumentów przemawiających za tym, że warto to robić.

Narzędzie menuconfig służy do przygotowania źródeł jądra Linuksa do kompilacji. Napisano je w bibliotece ncurses, dzięki czemu oferuje graficzny interfejs, a przy tym uruchamiane jest z konsoli Linuksa.

W czasach, kiedy systemy i aplikacje dostarczane są w formie gotowych do użycia obrazów maszyn wirtualnych albo, idąc krok dalej – kontenerów, pomysł samodzielnego kompilowania jądra Linuksa może się wydać co najmniej szalony. Istnieje jednak wiele powodów, dla których warto, a nawet trzeba to zrobić. Najważniejszy to chęć włączenia (lub wyłączenia) niedostępnych w standardowych kompilacjach funkcji jądra Linuksa, w tym tych oznaczonych jako eksperymentalne. W ten sposób dostarczane mogą być również dodatkowe sterowniki urządzeń, chociaż dla porządku dodajmy, że nie zawsze musimy wówczas rekompilować całe jądro. Ponadto sterowniki mogą być kompilowane oddzielnie, jeśli w systemie zainstalowano pakiet linux-headers. Innym argumentem może być potrzeba przygotowania specjalnej, np. okrojonej o niepotrzebne funkcje wersji jądra pod własną dystrybucję Linuksa albo system wbudowany. Wiele osób decyduje się na rekompilację jądra z chęci poznania zakamarków systemu. Wiedza ta zainteresuje entuzjastów Linuksa, uczniów i studentów, administratorów oraz programistów.

Optymalizacja wydajności

W tym momencie dochodzimy do najciekawszej kwestii, a mianowicie samodzielnej kompilacji jądra, aby poprawić ogólną wydajność serwera lub stacji roboczej. Stosując własne parametry (flagi) kompilatora, można próbować zoptymalizować jądro do danej architektury procesora, ale w przypadku typowych zastosowań zmiany te mogą pozostać nawet niezauważalne. Znacznie lepszym pomysłem jest alokowanie większej mocy CPU i pamięci RAM.

Na rynku znajdziemy też specjalizowane jądra, np. Liquorix, które zawierają pewne optymalizacje i dodatkowe łatki mające zapewnić lepszą wydajność systemu. Efekt ten jest osiągany poprzez zmiany w architekturze samego jądra, a nie jego kompilacji na konkretnym komputerze. Potwierdzeniem tego niech będzie to, że jądro Liquorix dostępne jest również w formie prekompilowanych pakietów.

Faktem jest natomiast, że jądro Linuksa ma wiele parametrów, które pozwalają optymalizować wydajność systemu (tuning), ale nie ma tutaj mowy o konieczności jego samodzielnej kompilacji. Mowa o dostosowaniu jądra serwera pod konkretne zastosowania, np. przetwarzanie grafiki, obsługę baz danych czy pracę w funkcji serwera WWW. Listę parametrów jądra w największym stopniu wpływających na wydajność systemu znajdziemy m.in. w dokumencie Tuning the Linux Kernel autorstwa Longa Yi i Jamesa Connana (itwa.pl/d6).

Gdzie szukać jądra

Domem dla projektu jądra Linuksa jest witryna The Linux Kernel Archives. Źródła kolejnych wydań jądra publikowane są pod adresem kernel.org i udostępniane w protokołach HTTPS, Git oraz rsync.

Jądro Linuksa rozwijane jest w kilku liniach (drzewach produktowych) i publikowane w ramach kolejnych wydań (releases). Mainline to drzewo rozwojowe, gdzie testowane są wszystkie nowe funkcje, które później trafią (lub nie) do stabilnego wydania jądra. Za zarządzanie drzewem mainline odpowiada bezpośrednio Linus Torvalds.

Co 2–3 miesiące jądro z gałęzi mainline zostaje oficjalnie wydane, stając się kolejnym stabilnym jądrem oznaczonym jako stable. Na tym etapie zadania związane z utrzymaniem danej wersji jądra przekazywane są do wyznaczonego dewelopera, który odpowiada za przenoszenie krytycznych aktualizacji i łatek zabezpieczeń z linii mainline do jądra z linii stable. Aktualizacje dla stabilnego jądra wydawane są według potrzeb, choć z reguły ma to miejsce raz na tydzień.

Wersje stabilne przeznaczone są do użytku w zastosowaniach produkcyjnych. W systemach o znaczeniu krytycznym warto rozważyć wybór jądra oznaczonego przyrostkiem longterm. Wydania longterm (zazwyczaj kilka w różnych wersjach jądra) objęte są długoterminowym wsparciem. Przykładowo wydane w grudniu 2016 r. jądro Linuksa w wersji 4.16 będzie otrzymywać aktualizacje o znaczeniu krytycznym aż do stycznia 2023 r. Do pobrania jest jeszcze jądro z linii 3.16 objęte rozszerzonym wsparciem do kwietnia 2020 r.

[...]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej