Dostępne jądro Linux-libre 6.12. Rozwiązanie problemów licencyjnych z sterownikami Tuxedo

Fundacja Wolnego Oprogramowania Ameryki Łacińskiej opublikowała całkowicie wolną wersję jądra Linux 6.12 — Linux-libre 6.12-gnu, oczyszczoną z elementów firmware i sterowników, które zawierają niesferyczne komponenty lub segmenty kodu, których zastosowanie jest ograniczone przez producenta. Ponadto, Linux-libre wyłącza funkcje jądra do ładowania zewnętrznych niesferycznych komponentów, które nie są dołączone do jądra, i usuwa odniesienia do użycia niesferycznych komponentów z dokumentacji.

Aby oczyścić jądro z niesferycznych części, projekt Linux-libre stworzył uniwersalny skrypt shell, który zawiera tysiące szablonów do wykrywania obecności binarnych wstawek i eliminowania fałszywych alarmów. Gotowe łatki, stworzone w oparciu o użycie wspomnianego skryptu, są również dostępne do pobrania. Jądro Linux-libre jest zalecane do użytku w dystrybucjach spełniających kryteria Fundacji Wolnego Oprogramowania dotyczące budowy całkowicie wolnych dystrybucji GNU/Linux. Na przykład, Linux-libre jest używane w takich dystrybucjach jak Dragora Linux, Trisquel, Dyne:Bolic, gNewSense, Parabola, Musix i Kongoni.

W wydaniu Linux-libre 6.12-gnu dodano kod do oczyszczania blobów w sterownikach dla SoC CPM/QE QMC, chipów bezprzewodowych Realtek 8852BE-VT, adapterów bluetooth Amlogic, kart sieciowych amcc qt2025, czujników aw96103/aw96105 oraz kodeków TI TLV320AIC31XX. Dodatkowe oczyszczanie blobów przeprowadzono w sterownikach dla kontrolerów xHCI Renesas i Intel ISH (Integrated Sensor Hub) HID. Zaktualizowano kod usuwania blobów w sterownikach i podsystemach MHI PCI host, Adreno 620/621, r8169, Qualcomm q6v5 remoteproc, rtw8852c, rtw8922a, a także w plikach dts dla chipów ARM54 TI PRU i Qualcomm. Oczyszczanie sterowników dla kart bezprzewodowych ks7010 i podsystemu dźwiękowego Intel SkyLake zostało wstrzymane, ponieważ te sterowniki zostały usunięte z jądra.

Zwraca się uwagę na wykrycie w materiałach źródłowych jednego z sterowników kodu wykonywalnego, wygenerowanego z nieopublikowanych materiałów źródłowych i osadzonego w formie sekwencji liczb szesnastkowych. Problemowy sterownik nie został wyraźnie nazwany, ale w związku ze zmianami mowa o obecności mikroprogramu cieniowania w pliku gfx_v9_4_3_cleaner_shader.h, który wchodzi w skład sterownika AMDGPU. Pierwsza podobna wstawka została wykryta w kernelu 6.11, a następnie zaproponowana przez jednego z deweloperów do usunięcia, ponieważ materiały źródłowe nie zostały dostarczone (pojawiła się sytuacja dostawy pod licencją GPL programu, dostępnego tylko w wersji binarnej). Niemniej jednak, w kernelu 6.12 wskazany kod binarny został zachowany, a do tego samego sterownika dodano kolejną podobną wstawkę.

Ponadto w zapowiedzi Linux-libre 6.12 wspomniano o jeszcze dwóch wydarzeniach:

  • W związku z integracją do kernela zaproponowano poprawkę, która blokuje sterownikom dla laptopów Tuxedo dostęp do subsystemów jądra, dostępnych tylko dla kodu na licencji GPLv2 (EXPORT_SYMBOL_GPL). Możliwość blokady została pierwotnie wprowadzona w celu ograniczenia wiązania własnościowych sterowników z komponentami jądra Linux, eksportowanymi tylko dla modułów na licencji GPLv2, ale jest skutecznie obchodzona poprzez tworzenie modułów-przełączników, które umożliwiają dostęp własnościowego sterownika do wymaganych interfejsów API jądra. W przypadku sterowników Tuxedo sytuacja jest odwrotna — mimo że sterowniki Tuxedo są rozwijane niezależnie od jądra, dostarczane są na licencji GPLv3, która z jednej strony jest niekompatybilna z GPLv2, ale z drugiej strony zapewnia więcej wolności, na przykład chroni przed tivoizacją.

    Zauważono, że firmy Tuxedo od dawna proponowały zmianę licencji na swoje sterowniki, ale nadal dostarczały kod na licencji GPLv3, a przy tym wskazywały w kodzie sterownika makro 'MODULE_LICENSE("GPL")' zamiast 'MODULE_LICENSE("GPL v3")' w celu uzyskania dostępu do wszystkich subsystemów jądra. Firma Tuxedo zgodziła się z krytyką i zmieniła licencję na GPLv2+ dla części swoich sterowników. Zmiana ta została zastosowana do sterowników gxtp7380, ite_8291, ite_8291_lb, ite_8297, ite_8297, stk8321, tuxedo_compatibility_check, tuxedo_nb02_nvidia_power_ctrl i tuxedo_tuxi. Ponad dziesięć sterowników nie zostało jeszcze przelicencjonowanych, ponieważ do zmiany licencji na nie potrzebne jest uzyskanie zgody od zewnętrznych deweloperów.

    Użycie w kodzie ‘MODULE_LICENSE(«GPL»)’ zamiast ‘MODULE_LICENSE(«GPL v3»)’ przedstawiciel Tuxedo uzasadnił brakiem jasnego wyjaśnienia w dokumentacji jądra, że znacznik «GPL» nie może być używany dla licencji GPLv3. Dodał również, że firma planuje przekazać swoje sterowniki do głównego składu jądra Linux i prowadzi nad nimi prace nad ich pełnym przepisaniem pod licencją GPLv2, z uwzględnieniem wymogów dotyczących komponentów jądra.

  • Programiści jądra dyskutują nad inicjatywą dodania flagi X86_BUG_OLD_MICROCODE, sygnalizującej, że w systemie używana jest nie najnowsza wersja mikrokodu CPU. Przy ustawieniu tej flagi system powinien być traktowany jako mający potencjalne niepoprawione podatności. Próby zrównania stanu systemu z nieaktualnym mikrokodem z sytuacją rzeczywistych niepoprawionych podatności w kodzie spotkały się z krytyką ze strony jednego z opiekunów projektu Linux-libre.

    Zdaniem opiekuna Linux-libre, jądro nie powinno naruszać prawa użytkowników do nieinstalowania niezweryfikowanych własnościowych firmware'ów i mikrokodu na swoim własnym urządzeniu. Mówi się, że kwestie podatności powinny być rozpatrywane w kontekście konkretnych poprawek w określonych wersjach firmware'ów, a nie nazywać podatnymi wszelkie systemy, na których nie jest zainstalowany najnowszy mikrokod, bez zbadania, czy w tym systemie występują podatności oraz czy nowy firmware zawiera poprawki tych podatności.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster