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_TMPFILE do 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-pstate i intel_idle w 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