Nowy Linux całkiem odporny na luki Spectre, wytrzyma też dłużej na baterii

To mało ekscytujące wydanie, nawet w oczach samego LinusaTorvaldsa, który nie bacząc na połączenie Pierwszego Kwietnia iświąt Wielkiej Nocy wydałLinuksa 4.16. Znacznie ciekawsze rzeczy czekają na nas w 4.17, ale itak warto skupić się na dojrzałych owocach ponad dwóch miesięcypracy linuksowych deweloperów.

Nowy Linux całkiem odporny na luki Spectre, wytrzyma też dłużej na baterii

03.04.2018 | aktual.: 03.04.2018 14:04

Linux 4.16 to niemal 15 tys. commitów, ponad 12 tys. zmienionychplików, ponad 25 MB kodu źródłowego. W tych wszystkich zmianachnajważniejsze są dłuższy czas pracy urządzeń zasilanychbateryjnie, łatka na pierwszy wariant ataku Spectre, lepsza pracalinuksowych gości w VirtualBoksie, możliwość indywidualnegoszyfrowania maszyn wirtualnych pod hiperwizorem KVM na procesorachAMD, oraz zwiększenie bezpieczeństwa kernela poprzez domyślnewłączenie opcjonalnych dotychczas zabezpieczeń.

Dłuższa praca z notebookiem

Nowa opcja konfiguracji kernela pozwala wreszcie na ustalaniepolityk LPM (ATA Link Power Management). Pozwala to na czipsetachIntela kontrolować oszczędzanie energii przez dyski, zapewniajączmniejszenie jej zużycia o 1-1,5 W na jałowym biegu. Pozwala towydłużyć pracę przeciętnego notebooka o nawet godzinę.

Wcześniej próby takiej kontroli na Linuksie kończyły się źle,najczęściej utratą danych. Jednak nowy programowalny tryboszczędzania DIPM (Device Initiated Power Management) pozwolił naobejście tych problemów. Wykorzystano doświadczenia prowadzoneprzez Intela na Windowsie, konfigurując polityki ALPM dokładnie taksamo, jak konfiguruje je oficjalny intelowy sterownik na systemyMicrosoftu. Teraz opiekunowie kerneli w ramach danej dystrybucji mogąpo prostu nakazać automatyczne włączenie DIPM – przynajmniej nalaptopach z mobilnymi czipsetami Intela. Pierwszą dystrybucją,która ma zapewnić wsparcie tego rozwiązania będzie Fedora 28.

Na wydłużenie czasu pracy urządzeń zasilanych bateryjniewpłynie też druga opcja pozwalająca na automatyczne włączaniemechanizmu usypiania łączności Bluetooth, gdy tylko jest tomożliwe. Do tej pory takie usypianie było możliwe tylko po ręcznejaktywacji. Teraz włączać będzie to sam kernel, przy okazjiobniżając zużycie energii przez sam kontroler USB i pozwalającprocesorowi na głębsze stany uśpienia. Według autora tegorozwiązania, pozwoli ono obniżyć zużycie energii o przynajmniej0,4 W. Wbrew pozorom nie jest to mało, ultralekkie laptopy najałowym biegu są dziś przecieć w stanie pobierać 5 W.

Spectre mniej straszne

Nowy kernel skuteczniej i bez takich strat w wydajności chroniprzez pierwszym wariantem ataku Spectre (Bounds Check Bypass).Znaleziono potencjalnie podatne na Spectre fragmenty kodu iprzepisano je tak, aby uniemożliwić spekulatywne wykonywanie,poprzez wywoływanie specjalnie do tego celu stworzonych makr. Terazodczytanie zawartości plikusys/devices/system/cpu/vulnerabilities/spectre_v1zwraca ciąg __user pointer sanitization.

Prawdopodobnie na tych łatkachsię nie skończy, poszukiwane są kolejne miejsca kernela mogącezostać zaatakowane przez Spectre, powstać ma opensource’owenarzędzie do automatycznego wskazywania takich lokalizacji.

Jeśli chodzi o drugą wersjęataku Spectre (Branch Target Injection), to wciąż korzysta się ztechniki Return Trampoline (retpoline), która choć sprawdzała sięw większości scenariuszy, zawodziła w przypadku wirtualizacji. Wkernelu 4.16 retpoline zostało nieco ulepszone, wykorzystywane sąteż niektóre funkcje IBC (Indirect Branch Control), wprowadzone poostatnich aktualizacjach mikrokodu procesorów Intela i AMD.

IBC zostało w całości przyjęteprzez Windowsa, mimo jego poważnego wpływu na wydajność systemu,tymczasem większość linuksowych dystrybucji wolała trzymać sięmniej kosztownej retpoline, mimo tego, że nie zapewniała onabezpiecznej wirtualizacji i była niewystarczająca dla procesorówSkylake i późniejszych generacji. Teraz dzięki selektywnemuwybraniu niektórych mechanizmów IBC (dostępnych nawet bez wgraniamikrokodu) Linux eliminuje znane słabości repotline i pozwalabezpiecznie zwirtualizować Windowsa. Dodatkowo za pomocą jednego zmechanizmów z IBC chroni teraz też przed wymuszeniem zrzutu obrazupamięci w razie awarii programu – w zrzutach takich może siępojawić wiele wrażliwych danych.

Nie oznacza to, że Spectreprzestało być problemem – przykładowo Red Hat nie jest w ogóleprzekonany do retpoline i od początku w RHEL-u stosuje wyłączniezabezpieczenie IBC. Wciąż też pozostaje sporo do zrobienia wzakresie optymalizacji łatek nie tylko przeciw Spectre (szczególniena innych niż x86-64 architekturach) ale też przeciwko Meltdown.Pozostają też problemy z 32-bitowymi systemami uruchamianymi na64-bitowych procesorach, gdzie wydajność spadła najbardziej, azabezpieczenia przed Meltdown wciąż nie wprowadzono. Niestety miniejeszcze sporo czasu, zanim deweloperzy będą mogli przestać sięprzejmować 32-bitową architekturą x86.

Domyślnie bezpieczniej

Oprócz zabezpieczeń przed Meltdown i Spectre, zadbano też oinne sprawy w tej dziedzinie. Wprowadzono od dawna rekomendowanąblokadę dostępu do pamięci fizycznej przez urządzenie /dev/mem.

Automatycznie jest także aktywowana ochrona stosu (StackProtector), przynajmniej dla architektur i kompilatorów które towspierają. Poczyniono także zmiany mające na celu zabezpieczeniewymiany danych między kernelem a przestrzenią użytkownika.

VirtualBox bez dodatków

Domyślny kernel 4.16 zawiera już wszystko co potrzeba, abyuruchomione w VirtualBoksie linuksowe maszyny wirtualne od razu mogłykorzystać z akceleracji grafiki 3D, obsługiwały integracjęschowka, a także działały w trybie zintegrowanym, w którymaplikacje systemu gościa wyświetlane są w okienkach na pulpiciegospodarza.

Wciąż trwają prace nad ulepszeniem jakości sterownikagraficznego Vboxvideo, a także poprawieniem działania sterownikaVboxsf, pozwalającego na integrację systemów plików międzygościem a gospodarzem. Gdy prace te zostaną ukończone,uruchamianie zwirtualizowanych linuksowych systemów będzie znaczniełatwiejsze i wygodniejsze – nie trzeba będzie kompilowaćspecjalnych modułów do kernela, koniecznych dziś do wykorzystaniawszystkich możliwości wirtualizacji.

Wirtualizacja grafiki na Intelu

Zmiany w sterownikach grafiki Intela pozwolą wreszcie wykorzystaćtechnologię GVT-g, która pozwala przypisywać maszynom wirtualnymmechanizmy sprzętowej akceleracji grafiki dostępnesystemowi-gospodarzowi. W teorii działało to już od Linuksa 4.8,ale nie było sposobu na efektywne przesłanie obrazu stworzonego wsystemie-gościu do gospodarza. Teraz taki sposób powstał – nowaścieżka przekierowania grafiki wykorzystuje współdzieleniebuforów z bezpośrednim dostępem do pamięci.

Dzięki tej nowej ścieżce kompozytor grafiki na hoście będziemógł łatwo wykorzystać obraz z maszyny-gościa w okienku na swoimpulpicie, tak samo jakby np. korzystał z grafiki 3D. Można w tensposób też przesłać obraż bezpośrednio na drugi monitor wtrybie pełnoekranowym, a nawet zdalnie po sieci do zdalnego systemuz wykorzystaniem protokołu Spice.

Całe rozwiązanie działa już na hiperwizorze KVM z odpowiednimzmodyfikowanym Qemu. W ciągu najbliższych miesięcy powinno staćsię stałą częścią linuksowej wirtualizacji. Już teraz mówisię o wykorzystaniu tego do obsługi wirtualnych pulpitów czystrumieniowania gier z chmury.

Sieci i dyski

Sporo się dzieje w zakresie ulepszania popularnego systemu plikówXFS. Mechanizmy odwrotnego mapowania i referencyjnejgo linkowaniaprzestały być eksperymentalne. By zadziałać, potrzebująuaktualnionych narzędzi do obsługi systemu plików, ale testy jużpokazują, że skopiowanie pliku z opcją --reflink pozwalazaoszczędzić mnóstwo czasu: zamiast kopiować zawartość pliku,XFS tworzy jedynie nowy wpis w systemie plików z kopią metadanych,wskazujących na ten sam blok danych – tak jak to jest np. wsystemach ZFS i Btrfs. Wciąż jako eksperymentalny pozostajemechanizm automatycznych napraw systemu plików bez koniecznościodmontowywania partycji.

Protokół CIFS używany w windowsowych sieciach lokalnychobsługuje teraz zasoby udostępniane po najnowszym SMB3, w którychdane są rozprowadzane poprzez rozproszony system plików (DFS).Pojawiło się też eksperymentalne wsparcie dla SMB3 Direct,pozwalające klientowi bezpośrednio czytać i pisać na wyznaczonychobszarach pamięci serwera poprzez mechanizm zdalnego bezpośredniegodostępu (RDMA). Pozwala to na bardzo szybką komunikację międzyklientem i serwerem, praktycznie bez narzutów.

Na pewno też Linux 4.16 powinien znacznie przyspieszyć przywszystkich operacjach na małych obciążeniach I/O. Zmiana w kodzieobsługującym pole i_version dla i-węzłów (czyli strukturopisujących pliki w systemie) sprawiła, że w popularnym benchmarkuFIO uzyskano wynik o 244% lepszy niż przed zmianą. Zmiana jestnaprawdę trywialna: i_version było zwiększane o 1 przy każdejzmianie danych i-węzła czy metadanych. Jednak ta inkrementacja doniczego nie była potrzebna, i teraz po zakończeniu tej bezsensownejaktualizacji pola, operacje odczytu i zapisu dla wielu małych plikówpowinny gwałtownie przyspieszyć. Dobra to wiadomość, szczególniebiorąc pod uwagę spadki wydajności I/O po zastosowaniu łatek naMeltdown i Spectre.

Sterowniki

Nowy kernel obsługuje teraz karty GeForce 1030, lepiej sobieradzi ze wsparciem dla procesorów Cannon Lake Intela, dodajewsparcie dla dziesiątków urządzeń z procesorami ARM (w tympopularnego Orange Pi R1), obsługuje nowe sterowniki dźwiękowe (wtym coraz częściej stosowany Allwinner A83T) i wprowadza sporopoprawek dla laptopów firm takich jak Dell, Lenovo i Asus.

Bardziej szczegółowe informacje na temat kernela 4.16znajdziecie niebawem na kernelnewbies.org.

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (100)