Model stabilnego wydawania jądra Linuksa rozpoczął się w 2005 roku, kiedy ustalono, że istniejący model rozwoju jądra (nowe wydanie co 2-3 miesiące) nie spełnia potrzeb większości użytkowników. Użytkownicy chcieli poprawek błędów dokonanych w ciągu tych 2-3 miesięcy, a dystrybucje Linuksa miały trudności z aktualizowaniem jądra bez opinii społeczności jądra. Ogólnie rzecz biorąc, próby zabezpieczenia poszczególnych jąder i najnowsze poprawki błędów były dużym i mylącym wysiłkiem wielu różnych osób.
Stabilne wydania jądra bazują bezpośrednio na wydaniach Linusa Torvaldsa i są publikowane mniej więcej co tydzień, w zależności od różnych czynników zewnętrznych (pora roku, dostępne łaty, obciążenie opiekunów itp.). Numeracja wydań stabilnych zaczyna się od numeru wydania jądra, a na końcu dodawany jest dodatkowy numer. Na przykład jądro 4.4 zostało wydane przez Linusa, a następnie stabilne wydania jądra oparte na tym jądrze mają numery 4.4.1, 4.4.2, 4.4.3 i tak dalej. Sekwencja ta jest zwykle skracana o numer 4.4.y w odniesieniu do stabilnego drzewa wydań jądra. Każde stabilne drzewo wydań jądra jest utrzymywane przez jednego programistę jądra, który jest odpowiedzialny za wybieranie potrzebnych łatek do wydania i zarządzanie procesem przeglądu/wydawania.
Jądra stabilne są utrzymywane przez cały bieżący cykl rozwojowy. Po wydaniu przez Linusa nowego jądra, poprzednie stabilne drzewo wydań jądra jest zatrzymywane, a użytkownicy muszą przejść do nowszego wydanego jądra.
Jądra stabilne długoterminowo
Po roku tego nowego stabilnego procesu wydawania ustalono, że wielu różnych użytkowników Linuksa chce, aby jądro było obsługiwane dłużej niż tylko kilka miesięcy. W odpowiedzi stworzono wydanie jądra Long Term Supported (LTS), z pierwszym jądrem LTS (2.6.16) wydanym w 2006 roku. Od tego czasu nowe jądro LTS jest wybierane raz w roku, a społeczność jądra utrzymuje to jądro przez minimum 2 lata.
W chwili pisania tego tekstu jądra LTS to wydania 4.4.y, 4.9.y, 4.14.y, 4.19.y, 5.4.y i 5.10.y. Nowe jądro jest wydawane co tydzień. Ze względu na potrzeby niektórych użytkowników i dystrybucji, kilka dodatkowych starszych jąder jest utrzymywanych przez deweloperów jądra w wolniejszym cyklu wydawniczym. Informacje o wszystkich długoterminowo stabilnych jądrach, kto jest za nimi odpowiedzialny i jak długo będą utrzymywane, można znaleźć na stronie z wydaniami kernel.org .
Jądro LTS wydaje średnio 6-8 łatek akceptowanych dziennie, podczas gdy normalne stabilne wydania jądra zawierają 10-15 łat dziennie. Liczba poprawek zmienia się na wydanie, biorąc pod uwagę aktualny czas odpowiedniego wydania jądra rozwojowego i inne zmienne zewnętrzne. Im starsze jest jądro LTS, tym mniej poprawek jest do niego stosowanych, ponieważ wiele ostatnich poprawek błędów nie dotyczy starszych jąder. Jednak im starsze jest jądro, tym trudniej jest wprowadzić zmiany, które należy zastosować, ze względu na zmiany w kodzie. Tak więc, chociaż może być mniej nakładanych łat, wysiłek związany z utrzymaniem jądra LTS jest większy niż utrzymanie normalnego stabilnego jądra.
Stabilne zasady łatek jądra
Zasady dotyczące tego, co można dodać do stabilnego wydania jądra, pozostały niemal identyczne od czasu jego wprowadzenia i zostały podsumowane poniżej:
- Musi być oczywiście poprawny i sprawdzony.
- Nie może być większy niż 100 linii.
- Muszę naprawić tylko jedną rzecz.
- Musisz naprawić coś, co zostało zgłoszone jako problem.
- Może być nowym identyfikatorem urządzenia lub dziwactwem sprzętowym, ale nie może dodawać większej nowej funkcjonalności.
- Musi być już włączony do drzewa Linusa Torvaldsa.
Ostatnia zasada, "Musi być już włączony do drzewa Linusa Torvaldsa", zapobiega utracie poprawek przez społeczność jądra. Społeczność nigdy nie chce, aby poprawka trafiła do stabilnego wydania jądra, którego nie ma jeszcze w drzewie Linusa Torvaldsa, aby każdy, kto dokonuje aktualizacji, nigdy nie widział regresji. Zapobiega to wielu problemom, jakie mogą mieć inne projekty, które utrzymują stabilną i rozwojową gałąź.
Aktualizacje jądra
Społeczność jądra Linuksa obiecała swojej bazie użytkowników, że żadna aktualizacja nigdy nie zepsuje niczego, co działa obecnie w poprzedniej wersji. Ta obietnica jest nadal aktualna. Regresje się zdarzają, ale są to błędy o najwyższym priorytecie i albo są szybko naprawiane, albo zmiana, która spowodowała regresję, jest szybko przywracana z drzewa jądra Linuksa.
Obietnica ta jest prawdziwa zarówno w przypadku przyrostowych stabilnych aktualizacji jądra, jak i większych dużych aktualizacji, które mają miejsce co trzy miesiące. Jednak społeczność jądra może złożyć tę obietnicę tylko dla kodu, który jest włączony do drzewa jądra Linuksa. Każdy kod scalony z jądrem urządzenia, którego nie ma w wydaniach kernel.org , jest nieznany i interakcji z nim nigdy nie można planować ani nawet rozważać.
Urządzenia oparte na Linuksie, które mają duże zestawy poprawek, mogą mieć poważne problemy podczas aktualizacji do nowszych jąder, ze względu na dużą liczbę zmian między poszczególnymi wydaniami (10-14 tysięcy zmian na wydanie). Szczególnie wiadomo, że zestawy poprawek SoC mają problemy z aktualizacją do nowszych jąder ze względu na ich duży rozmiar i duże modyfikacje specyficznego dla architektury, a czasem rdzenia kodu jądra. W rezultacie większość dostawców SoC zaczyna standaryzować używanie wersji LTS dla swoich urządzeń, umożliwiając tym urządzeniom otrzymywanie aktualizacji błędów i zabezpieczeń bezpośrednio od społeczności jądra Linuksa.
Bezpieczeństwo
Społeczność jądra Linuksa prawie nigdy nie deklaruje konkretnych zmian jako poprawki bezpieczeństwa . Wynika to z podstawowego problemu, jakim jest trudność w określeniu, czy poprawka błędu jest poprawką bezpieczeństwa, czy nie w momencie tworzenia. Ponadto wiele poprawek błędów jest określanych jako związane z bezpieczeństwem dopiero po upływie dłuższego czasu, więc społeczność jądra zdecydowanie zaleca, aby zawsze brać wszystkie wydane poprawki.
Gdy problemy związane z bezpieczeństwem są zgłaszane społeczności jądra, są one naprawiane tak szybko, jak to możliwe i umieszczane publicznie w drzewie rozwoju i wydaniach stabilnych. Jak opisano powyżej, zmiany prawie nigdy nie są opisywane jako „poprawka bezpieczeństwa”, ale raczej wyglądają jak każda inna poprawka dla jądra. Ma to na celu umożliwienie zainteresowanym stronom aktualizacji swoich systemów, zanim zgłaszający problem ogłosi go.
Szczegółowe informacje na temat zgłaszania błędów bezpieczeństwa społeczności jądra w celu jak najszybszego ich rozwiązania i naprawy można znaleźć w sekcji Błędy bezpieczeństwa w Podręczniku użytkownika i administratora jądra systemu Linux na stronie www.kernel.org .
Ponieważ błędy bezpieczeństwa nie są ogłaszane publicznie przez zespół jądra, numery CVE dotyczące problemów związanych z jądrem Linuksa są zwykle publikowane tygodnie, miesiące, a czasem lata po połączeniu poprawki w gałęziach stabilnych i rozwojowych.
Utrzymanie bezpiecznego systemu
Podczas wdrażania urządzenia korzystającego z systemu Linux zdecydowanie zaleca się, aby wszystkie aktualizacje jądra LTS zostały pobrane przez producenta i rozesłane do użytkowników po przeprowadzeniu odpowiednich testów, które wykażą, że aktualizacja działa prawidłowo. Ma to kilka zalet:
- Wydania zostały przejrzane przez twórców jądra jako całość, a nie poszczególne części.
- Trudno, jeśli nie niemożliwe, określić, które łatki naprawiają problemy z „bezpieczeństwem”, a które nie. Prawie każde wydanie LTS zawiera co najmniej jedną znaną poprawkę bezpieczeństwa, a wiele jeszcze „nieznanych”.
- Jeśli testy wykażą problem, społeczność programistów jądra zareaguje szybko, aby rozwiązać problem.
- Próby odfiltrowania tylko uruchomionych zmian spowodują powstanie drzewa jądra, którego nie da się poprawnie scalić z przyszłymi wydaniami autorskimi.