Linux 7.1 oficjalnie wydany: przegląd najważniejszych zmian
14 czerwca Linus Torvalds wydał stabilne jądro Linux 7.1. Po sporym wydaniu 7.0 to spokojniejszy cykl, ale dwie zmiany wyróżniają się na tle reszty: kompletnie nowy sterownik NTFS i domyślnie włączony Intel FRED. Reszta to porcja optymalizacji, hardeningu i nowego sprzętu.
Nowy sterownik NTFS, napisany od zera
Największa nowość tego wydania. Do tej pory dostęp do partycji Windowsa zapewniał sterownik ntfs3 przekazany przez Paragon Software, który przy zapisie potrafił sprawiać problemy. Linux 7.1 dostaje napisany od podstaw sterownik NTFS z pełnym wsparciem zapisu, opóźnioną alokacją i integracją z iomap oraz folio.
W praktyce oznacza to szybszy i bezpieczniejszy zapis na partycjach NTFS, co najbardziej odczują osoby z dual bootem Windows/Linux i podpinający dyski przenośne sformatowane pod Windowsa. Stary ntfs3 na razie zostaje obok, ale kierunek jest jasny.
Intel FRED domyślnie włączony
FRED (Flexible Return and Event Delivery) to przebudowa tego, jak procesor obsługuje przejścia między przestrzenią użytkownika a jądrem: wywołania systemowe, przerwania i wyjątki. Zastępuje mechanizm oparty na IDT, który w niezmienionej formie ciągnął się od lat 80. Efekt to niższy narzut na tych przejściach, czystsze zarządzanie stanem procesora i wyeliminowanie kilku kruchych przypadków brzegowych, które były źródłem błędów.
Wsparcie dochodziło do jądra przez kilka wydań, a w 7.1 jest włączone domyślnie. Korzyść jest natychmiastowa na procesorach Panther Lake i nowszych.
clone3() z nowymi flagami
Wywołanie clone3() dostało trzy nowe flagi do zarządzania procesami potomnymi. Najciekawsza pozwala na automatyczne sprzątanie procesu potomnego (reaping) bez potrzeby obsługi SIGCHLD, a kolejna wiąże zakończenie procesu z uchwytem pidfd. To realne ułatwienie dla supervisorów, runtime’ów kontenerowych i wszystkiego, co zarządza dużą liczbą procesów potomnych i do tej pory walczyło z procesami zombie.
sched_ext: sub-schedulery
sched_ext, rozszerzalna klasa schedulera pozwalająca pisać politykę planowania CPU w BPF, dostała wstępne wsparcie dla sub-schedulerów. To fundament pod osobne polityki planowania dla różnych grup kontrolnych (cgroup). Docelowo można będzie uruchamiać inny scheduler dla bazy danych, a inny dla zadań wsadowych na tej samej maszynie.
io_uring i BPF
Pętlę dispatchu io_uring można teraz zastąpić własną logiką w BPF. Daje to kontrolę nad tym, jak i w jakiej kolejności wykonywane są operacje, bez wracania do przestrzeni użytkownika. Kierunek znany z 7.0, gdzie pojawiło się filtrowanie io_uring przez cBPF, jest tu kontynuowany.
Bezpieczeństwo
- Landlock dostał nowe prawo dostępu dla gniazd domeny UNIX nazywanych ścieżką, podpięte przez nowy hook LSM. Aplikacje w piaskownicy mogą teraz precyzyjniej kontrolować, z którymi gniazdami wolno im się łączyć.
- Zaostrzono domyślne uprawnienia do
/proc/PID/mem, co utrudnia podglądanie pamięci cudzych procesów. - Dodano nowe hooki LSM dla systemu plików overlay i gniazd domeny UNIX.
Systemy plików
- Btrfs operacja shutdown przeszła z eksperymentalnej do stabilnej
- exFAT prealokacja klastrów bez zerowania przez
fallocate(), mniej fragmentacji - CIFS/SMB wsparcie
O_TMPFILEdo tworzenia plików tymczasowych - Ceph kompletna infrastruktura zbierania metryk we/wy per subwolumen
- ublk zero-copy we/wy, mniej zbędnego kopiowania danych
Wydajność i pamięć
Podsystem swap przeszedł modernizację z usunięciem starej mapy swap. Efekt to niższe zużycie pamięci i mniej zaszłości w kodzie. To kontynuacja porządków zaczętych w 7.0, gdzie skonsolidowano ścieżki swapin.
Sterowniki i hardware
CPU:
- Intel FRED domyślnie (powyżej), zysk na Panther Lake
- Usprawnienia
amd-pstateiintel_idlew zarządzaniu energią
GPU:
- Intel rozpoczyna wsparcie grafiki Nova Lake P
- Szybsza grafika Intel Arc Battlemage
- Poprawki dla starszych kart AMD Radeon
Inne:
- Apple SMC power driver, czyli odczyt poziomu baterii na MacBookach z Apple Silicon na mainline kernelu
- Kontroler Lenovo Legion Go
- 12 nowych SoC z rodzin ARM i RISC-V, między innymi Qualcomm i Rockchip
Usunięte
- Wsparcie procesorów Intel i486 zaczyna być wycofywane, na początek znikają opcje budowania
- Stary kod sterowników sieciowych ISDN, usunięty między innymi po to, by ograniczyć szum automatycznych zgłoszeń błędów przeciwko martwemu sprzętowi
- Protokół UDP-Lite
- W sumie ponad 140 000 linii przestarzałego kodu
Linux 7.1 to wydanie non-LTS, więc najpierw trafi do dystrybucji rolling (Arch, openSUSE Tumbleweed) i do Fedory, a na serwerach pojawi się jako opcjonalne jądro HWE. Jeśli korzystasz z dual boota albo dysków NTFS, to wydanie, na które warto zwrócić uwagę.
Źródła: Phoronix, Phoronix, przegląd funkcji, 9to5Linux, Linuxiac