Stabilne wydania jądra i amp; Aktualizacje

Model stabilnego wydania jądra Linuksa rozpoczął się w 2005 roku, kiedy stwierdzono, ż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 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 zapewnienia bezpieczeństwa poszczególnych jąder i najnowszych poprawek błędów były dużym i mylącym wysiłkiem wielu różnych osób.

Stabilne wydania jądra są bezpośrednio oparte na wydaniach Linusa Torvaldsa i wydawane są mniej więcej co tydzień, w zależności od różnych czynników zewnętrznych (pora roku, dostępne łatki, obciążenie pracą konserwatora itp.). Numeracja wydań stabilnych rozpoczyna się od numeru wydania jądra, a na jego 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 są ponumerowane 4.4.1, 4.4.2, 4.4.3 i tak dalej. Sekwencja ta jest zwykle skracana liczbą 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 wybór potrzebnych poprawek do wydania i zarządzanie procesem recenzji/wydania.

Stabilne jądra są utrzymywane przez cały bieżący cykl rozwoju. Po wydaniu przez Linusa nowego jądra poprzednie stabilne drzewo wydań jądra zostaje zatrzymane i użytkownicy muszą przejść do nowszego wydanego jądra.

Długoterminowo stabilne jądra

Po roku procesu wydawania nowego stabilnego wydania ustalono, że wielu różnych użytkowników Linuksa chciało, aby jądro było wspierane dłużej niż kilka miesięcy. W odpowiedzi stworzono wersję jądra z obsługą długoterminową (LTS), z pierwszym jądrem LTS (2.6.16) wydanym w 2006 r. Od tego czasu raz w roku wybierane jest nowe jądro LTS, a społeczność jądra utrzymuje to jądro przez długi czas 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, twórcy jądra utrzymują kilka dodatkowych starszych jąder w wolniejszym cyklu wydawniczym. Informacje o wszystkich długoterminowo stabilnych jądrach, kto jest za nie odpowiedzialny i jak długo będą utrzymywane, można znaleźć na stronie wydań kernel.org .

Jądro LTS wypuszcza średnio 6-8 poprawek akceptowanych dziennie, podczas gdy normalne stabilne wydania jądra zawierają 10-15 poprawek dziennie. Liczba poprawek zmienia się w zależności od wydania, biorąc pod uwagę bieżący czas wydania odpowiedniej wersji jądra rozwojowego i inne zmienne zewnętrzne. Im starsze jądro LTS, tym mniej poprawek można do niego zastosować, ponieważ wiele najnowszych poprawek błędów nie dotyczy starszych jąder. Jednak im starsze jądro, tym trudniej jest przenieść zmiany, które należy zastosować, ze względu na zmiany w bazie kodu. Tak więc, chociaż może być stosowana mniejsza liczba ogólnych poprawek, wysiłek związany z utrzymaniem jądra LTS jest większy niż utrzymanie normalnego, stabilnego jądra.

Stabilne zasady poprawek jądra

Zasady dotyczące tego, co można dodać do stabilnej wersji jądra, pozostały niemal identyczne od czasu jej wprowadzenia i zostały podsumowane poniżej:

  • Musi być oczywiście poprawne i przetestowane.
  • Nie może być większy niż 100 linii.
  • Muszę naprawić tylko jedną rzecz.
  • Należy 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ć nowych, istotnych funkcji.
  • Musi już zostać włączony do drzewa Linusa Torvaldsa.

Ostatnia zasada, „Musi być już włączona do drzewa Linusa Torvaldsa”, zapobiega utracie poprawek przez społeczność jądra. Społeczność nigdy nie chce, aby poprawka trafiała do stabilnej wersji jądra, której nie ma jeszcze w drzewie Linusa Torvaldsa, aby każdy, kto dokona aktualizacji, nigdy nie zobaczył regresji. Zapobiega to wielu problemom, jakie mogą mieć inne projekty utrzymujące stabilną i rozwojową gałąź.

Aktualizacje jądra

Społeczność jądra Linuksa obiecała swoim użytkownikom, że żadna aktualizacja nie zepsuje niczego, co aktualnie działało 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 usuwana z drzewa jądra Linuksa.

Obietnica ta dotyczy zarówno przyrostowych stabilnych aktualizacji jądra, jak i większych, głównych aktualizacji wydawanych co trzy miesiące. Jednakże społeczność jądra może obiecać to tylko w odniesieniu do kodu, który jest scalony z drzewem jądra Linuksa. Jakikolwiek kod scalony z jądrem urządzenia, którego nie ma w wydaniach kernel.org , jest nieznany i nigdy nie można zaplanować ani nawet rozważyć interakcji z nim.

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 pomię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ć korzystanie z wersji LTS w swoich urządzeniach, umożliwiając tym urządzeniom otrzymywanie aktualizacji błędów i zabezpieczeń bezpośrednio od społeczności jądra Linuksa.

Bezpieczeństwo

Podczas wydawania jądra społeczność jądra Linuksa prawie nigdy nie deklaruje określonych zmian jako poprawek bezpieczeństwa . Wynika to z podstawowego problemu polegającego na trudności w określeniu, czy poprawka stanowi poprawkę bezpieczeństwa, czy nie, w momencie tworzenia. Ponadto wiele poprawek błędów zostaje uznanych za związane z bezpieczeństwem dopiero po upływie dłuższego czasu, dlatego społeczność jądra zdecydowanie zaleca, aby zawsze pobierać wszystkie wydane poprawki błędów.

Kiedy problemy bezpieczeństwa zostaną zgłoszone społeczności jądra, zostaną one naprawione tak szybko, jak to możliwe i opublikowane publicznie w drzewie rozwoju i wydaniach stabilnych. Jak opisano powyżej, zmiany prawie nigdy nie są opisywane jako „poprawki bezpieczeństwa”, ale raczej wyglądają jak inne poprawki błędów jądra. Ma to na celu umożliwienie zainteresowanym stronom aktualizacji swoich systemów, zanim osoba zgłaszająca problem ogłosi to.

Aby uzyskać szczegółowe informacje na temat zgłaszania błędów bezpieczeństwa społeczności jądra, aby jak najszybciej je rozwiązać i naprawić, zobacz Błędy bezpieczeństwa w Podręczniku użytkownika i administratora jądra Linuksa 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 czasami lata po włączeniu poprawki do gałęzi stabilnej i rozwojowej.

Utrzymywanie bezpiecznego systemu

Podczas wdrażania urządzenia korzystającego z systemu Linux zdecydowanie zaleca się, aby producent pobrał wszystkie aktualizacje jądra LTS i przekazał je użytkownikom po przeprowadzeniu odpowiednich testów, które wykażą, że aktualizacja działa prawidłowo. Ma to kilka zalet:

  • Wersje zostały sprawdzone przez programistów jądra jako całość, a nie w poszczególnych częściach.
  • Określenie, które łaty rozwiązują problemy „bezpieczeństwa”, a które nie, jest trudne, jeśli nie niemożliwe. Prawie każde wydanie LTS zawiera co najmniej jedną znaną poprawkę bezpieczeństwa, a wiele z nich jest jeszcze „nieznanych”.
  • Jeśli testowanie wykaże problem, społeczność programistów jądra szybko zareaguje, aby rozwiązać problem.
  • Próby odfiltrowania tylko wprowadzonych zmian spowodują, że drzewo jądra będzie niemożliwe do prawidłowego połączenia z przyszłymi wydaniami nadrzędnymi.