Релиз на ядрото Linux 7.1

След като разработката продължи два месеца, Линус Торвалдс представи версия 7.1 на ядрото Linux. Сред най-значителните промени са: нов драйвер ntfsplus, първа стъпка към прекратяване на поддръжката на CPU i486, премахване на стари Ethernet адаптери, премахване на ISDN и AX.25 протоколи, имплементирано по подразбиране механизма Intel FRED, поддръжка на BPF обработчици в io_uring, оптимизация на подсистемата за странициране, поддръжка на подсcheduler-и в sched_ext, вход/изход в режим zero-copy в драйвера ublk, ioctl операция „shutdown“ в Btrfs, динамично превключване на режима на производителност в драйвера amd-pstate, поддръжка на xattr за Unix сокети.

В новата версия са представени 17275 корекции от 2589 разработчици,
размерът на пача е 57 MB (промените засягат 13528 файла, добавени са 751785 реда код, изтрити са 405916 реда). В миналото издание имаше 15624 корекции от 2477 разработчици, размерът на пача беше 56 MB. Около 41% от всички представени в 7.1 промени са свързани с драйвери, приблизително 12% от промените са свързани с актуализиране на код, специфичен за хардуерни архитектури, 14% са свързани с мрежов стек, 5% с файлови системи и 3% с вътрешни подсистеми на ядрото.

Основни нововъведения в ядрото 7.1 (1, 2, 3):

  • Дискова подсистема, вход/изход и файлови системи
    • Приета е нова реализация на файловата система NTFS — ntfsplus, основана на кода на изтегления от ядрото класически драйвер ntfs. Старият драйвер е преработен, разширен с възможността за запис на данни и адаптиран да поддържа съвременни функции, като използване на фолианти за страници в паметта (folios) вместо структурата buffer_head. В новия драйвер е реализирано отложено разпределение на блокове, което позволява постигането на висока производителност на операции за запис и намаляване на фрагментацията. За буферирани операции за запис/четене, директен вход/изход, картографиране на екстент и операции с страничен запис/четене е използвана библиотеката iomap. В тестовете iozone, драйверът ntfsplus се оказа с 3-5% по-бърз от ntfs3 при запис в еднопоточен режим и с 35-110% при използване на 4 потока. Скоростта на четене на ntfsplus и ntfs3 е на приблизително едно и също ниво. Драйверът ntfs3 остава в ядрото и в него са направени корекции и малки подобрения.
    • Добавена поддръжка за генериране и верификация на данни за проверка на целостта T10 на ниво файлова система, а не блоково устройство, което позволява повишаване на производителността на операции по четене.
    • В драйвера на блоковите устройства ublk, който позволява специфична логика да бъде изнесена на страната на процеса в пространството на потребителя, е добавена поддръжка за входно/изходни операции чрез споделена памет без копиране на данни между буферите (режим zero-copy).
    • За самошифроващите блокови устройства SED-OPAL са добавени ioctl команди за управление на режима Single User и е реализирана команда STACK_RESET.
    • В Btrfs е обявена за стабилна поддръжката на ioctl операцията «shutdown», която позволява да се преведе файловата система в състояние, при което се прави опит за завършване на вече стартиралите операции, но се блокират всички нови операции.
    • В exfat е реализирана възможността за резервиране на празни области чрез извикване на fallocate().
    • В файловата система CIFS е добавена поддръжка за създаване на временни файлове с флага O_TMPFILE.
    • В системния извик fsmount() е добавена опция FSMOUNT_NAMESPACE, която създава ново пространство от имена за точки на монтиране за монтираната файлова система. В системните извиквания clone3() и unshare() са добавени флагове за връщане на ново пространство от имена за точки на монтиране, съдържащо само монтирана празна файлова система-заглушка на базата на nullfs, драйвер fs-dax с файлов интерфейс към устройства DAX (Direct Access).
    • В NFS сървъра е добавена защита от атаки с подбиране на файлови дескриптори, реализирана чрез заверяване на дескрипторите с криптографска подпис. Защитата се активира чрез опцията за монтиране sign_fh.
    • Добавен е символен драйвер fs-dax, предоставящ интерфейс за взаимодействие с устройства DAX (Direct Access), поддържащи работа извън страницовия кеш. Указаният интерфейс е необходим за интеграция в ядрото на файловата система famfs, разположена в оперативната памет.
    • В файловата система Ceph е реализирано събиране на метрики за вход/изход, свързани с подразделите.
  • Памет и системни услуги
    • Приета е първата серия промени за прекратяване на поддръжката на процесори i486. Опциите за компилиране на ядрото с поддръжка на 486DX, 486SX и AMD ELAN (CONFIG_M486, CONFIG_M486SX и CONFIG_MELAN) са премахнати от Kconfig, а опциите за компилация за i486 системи (-march=i486) са изключени от Makefile. Кодът за действителна поддръжка на i486 процесори остава в ядрото, но компилирането за тези системи вече ще изисква прилагането на патчове към компилационните файлове. Причините за премахването на поддръжката на i486 процесори са свързани с желанието да се освободи ядрото от усложнения код, който емилира някои хардуерни операции, като CX8 (сравни и обменя 8 байта) и TSC (брояч на цикли на CPU, използван в планировчика на задачи).
    • В драйвера amd-pstate, използван за управление на енергоспестяването на системи с AMD процесори, е реализирано динамично превключване между настройки за производителност и промяна на поведението на управлението на захранването в зависимост от това дали системата работи на мрежово захранване или на батерия. При свързване към мрежата сега се активира режимът 'performance', а при работа на батерия - 'balance_performance'.
    • По подразбиране е задействан механизма Intel FRED (Гъвкава доставка на връщане и събития), позволяващ да се повиши ефективността и надеждността на доставката на информация за нискоуровневи събития. Повишаването на производителността и намаляването на закъсненията се осигуряват благодарение на връщането на събития чрез команда IRET вместо предаване на събития през таблицата IDT (Таблица с описания на прекъсвания). Надеждността се повишава благодарение на отделно обработване на постъпването на събития в контекста на ядрото и контекста на потребителя, защита от вложено изпълнение на NMI и запазване на всички регистри на CPU, свързани с изключението, в разширен стек.
    • В подсистемата perf е добавена поддръжка за блокове за мониторинг на производителността на паметта (PMU - Performance Monitoring Unit), използвани в SoC NVIDIA Tegra410.
    • Ускорено е изпълнението на операциите futex на ARM системи, благодарение на използването на инструкциите Arm 9.6 LSUI, които позволяват на ядрото да достъпи паметта на потребителското пространство без предварително изключване на режима на защита PAN (Privileged Access Never).
    • На системите с ARM процесори е подобрена поддръжката за разширението на архитектурата на командния набор MPAM (Разделяне и наблюдение на ресурси на паметта) и е добавена възможността да се използва в потребителското пространство за управление на ресурсите чрез механизма resctrl. MPAM предоставя маркиране на всяко обращение към паметта с идентификатор на секция (PARTID, Идентификатор на раздел) и идентификатор на група за наблюдение (PMG, Идентификатор на група за наблюдение). В контекста на PARTID може да бъде ограничено потреблението на ресурси, като например честотната лента на паметта или размерът на кеша, за да може определена група задачи да не заема всичките ресурси. В контекста на наблюдението комбинацията от PMG и PARTID може да се използва за проследяване на потреблението на ресурси на паметта при определени видове натоварвания.
    • Добавена е възможността за използване на режим в реално време (PREEMPT_RT) на 32-битови ARM процесори. Преди това поддръжката на PREEMPT_RT беше осигурена за архитектурите x86 и x86-64, ARM64, RISC-V и LoongArch.
    • В системния извикване clone3() са добавени нови флагове: CLONE_NNP — забрана за получаване на нови привилегии в създадения процес; CLONE_AUTOREAP — автоматично приключване на процеса вместо превръщането му в зомби-процес до изпълнението на функцията wait() от родителския процес;
      CLONE_PIDFD_AUTOKILL — приключване на дъщерния процес в случай на затваряне на свързания с него дескриптор pidfd (например, при приключване на родителския процес).
    • За всеки модул на ядрото в директорията /sys/module е добавен файл import_ns, съдържащ списък на импортираните пространства на имена на символи (symbol namespace).
    • В системата за асинхронен вход/изход io_uring е добавена поддръжка за използване на подсистемата BPF за създаване на обработчици. Например, основният цикъл на диспетчеризация може да бъде заменен с BPF-програма.
    • В подсистемата BPF е модернизиран анализът на използването на стека, което значително ускори проверката на много BPF-програми от верфикатора.
    • С цел оптимизация на производителността е презаписана подсистемата hrtimer (високочестотен таймер). Планировчикът на задачите сега може да използва таймери с висока резолюция без загуба на производителност вместо по-малко точни таймери.
    • Продължава прехвърлянето на промените от клон Rust-for-Linux, свързани с използването на езика Rust като втори език за разработка на драйвери и модули на ядрото (поддръжката на Rust не е активирана по подразбиране и не води до включване на Rust в списъка на задължителните зависимости за компилация на ядрото). До версия 1.85 (доставяна в Debian 13) бяха увеличени изискванията за версията на Rust, необходима за компилация на компонентите на ядрото. Добавена е експериментална Kconfig опция CONFIG_RUST_INLINE_HELPERS за вграждане на C-прослойки в Rust-код по време на компилация (оптимизацията ускори работата на блоковия драйвер null с 2%). Добавен е макрос ‘const_assert!’. Разширени са възможностите на модули ‘sizes’, ‘clk’, ‘ptr’, ‘sync’, ‘error’.
    • В механизма SCHED_EXT, позволяващ използването на BPF за създаване на CPU планировчици, е добавена първоначална възможност за създаване на вложени планировчици (sub-scheduler), чрез които за всяка cgroup може да се задейства собствен планиращ процес.
    • Продължава оптимизацията на подсистемата за разменяне (swap). Махната е старата структура swap_map, заменена с механизма „Swap Table“. Промените позволиха да се увеличи производителността и да се намали консумацията на памет в подсистемата за разменяне.
    • В подсистемата DAMON (Data Access MONitor), позволяваща следене на достъпа на процеса до данни в оперативната памет (например, може да се узнае до кои области на паметта е имал достъп процесът, а кои области останаха неизползвани), е добавена поддръжка на различни алгоритми за автоматично настройване на квотите.
    • В подсистемата за трасировка е реализирана концепцията за външни кръгови буфери, позволяващи получаване на данни за трасировка от на виртуални машини. Възможността е активирана в хипервизорите KVM и nVHE за предаване на данни за трасировка от гостуващата система на страната на хоста.
    • В подсистемата RV (Runtime Verification), предназначена за проверка на коректността на работата на високонадеждни системи, са добавени компоненти за мониторинг на „stall“ за следене на задачи, чието изпълнение е временно спряно или блокирано, и „deadline“ за анализ на поведението на планиращия процес.
  • Виртуализация и безопасност
    • По подразбиране е зададен флаг PROC_MEM_FORCE_PTRACE, допускащ заобикаляне на правата за достъп до паметта на процеса чрез файла /proc/PID/mem само за процеси, прилагащи системния повик ptrace() за отстраняване на грешки.
    • Добавен нов набор hook-ове за LSM-модули (Linux Security Module), улесняващ реализирането на политики за стекови файлови системи, като overlayfs. В LSM също е добавен hook за управление на достъпа до Unix-сокети, който е активиран в LSM-модула Landlock за назначаване на политики за достъп до Unix-сокети.
    • Вградена криптобиблиотека lib/crypto, предоставяща по-прости и бързи функции, отколкото традиционния crypto API, добави поддръжка на алгоритми AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH и SM3. Добавена е документация за lib/crypto.
    • Реализиран е режим pKVM (Protected KVM) за строга изолация на анонимна памет, използвайки разширения за виртуализация за архитектура AArch64. В този режим страниците памет на госта са изключени от таблицата на виртуалните адреси на хост системата.
    • В хипервизора KVM е добавена поддръжка на петата версия на виртуалния контролер на прекъсванията ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
  • Мрежовата подсистема
    • За unix-сокети, създадени чрез функцията socket(), е реализирана поддръжка на разширени атрибути на файлове (xattr) "user.*". От областите на приложение се отбелязва поставянето на етикети чрез разширените атрибути на Unix-сокети, използвани за IPC Varlink, с цел тяхното отличаване от общата маса за инспекция и отстраняване на проблеми при IPC с помощта на BPF-програми. В systemd-journald разширените атрибути са предназначени за определяне на формата на лога, свързан с сокета /dev/log.
    • Премахната е поддръжката на протокола UDP-Lite (RFC 3828), допускащ доставка на пакети с неправилна контролна сума, разчитайки на това, че например частично повредените аудио и видеоданни могат да бъдат възстановени на ниво кодек. Протоколът е премахнат, тъй като никой не го използва.
    • Премахната е възможността за сглобяване на стека IPv6 под формата на модул на ядрото, който не се е използвал на практика (IPv6 или се вгражда в ядрото, или се деактивира напълно), но усложняваше поддръжката, тъй като при сглобяване на IPv6 като модул на ядрото (CONFIG_IPV6=m), много подсистеми са принудени да добавят безполезни обработчици в случай на извеждане на модула IPv6.
  • Оборудване
    • В драйвера AMDGPU е включен нов дисплейен движък (DC) за APU AMD серия HD 7000 (Sea Islands, GCN 1.1).
    • В драйвера Nouveau е добавена начална поддръжка на GPU NVIDIA GA100 на базата на микроархитектурата Ampere.
    • Продължена работа по drm-драйвера (Direct Rendering Manager) Xe за GPU, основан на архитектурата Intel Xe, който се използва в графичните карти Intel от семейството Arc и интегрираната графика, започвайки от процесорите Tiger Lake. Добавена е поддръжка на графичната подсистема на процесорите Intel Nova Lake-P. Реализирани са изтривани буферни обекти (Purgeable Buffer Objects).
    • Продължена интеграция на компонентите на драйвера Nova за GPU NVIDIA, оборудвани с GSP-фърмуер, използвани от серията NVIDIA GeForce RTX 2000, основана на микроархитектурата Turing. Драйверът е написан на Rust. Добавена е начална поддръжка на GPU, основана на микроархитектурата Turing.
    • Добавен е DRM-драйвер corebootdrm за извеждане на графика през фреймбуфера на фърмуерите, основани на CoreBoot.
    • Добавена е поддръжка на звукови ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP и WM8962. Подобренa е поддръжката на звукови устройства с интерфейс USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
      PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
    • Добавен е драйвер yogafan за следене на скоростта на въртене на охладителя в лаптопи Lenovo Yoga, Legion и IdeaPad.
    • Добавена е поддръжка на ARM платформи, SoC и устройства: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 и ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
    • Премахната е поддръжката на контролните модули AHCI SATA и PCIe, използвани в SoC Baikal-T1, както и драйверите за таймер, памет, physmap, шина, hwmon, dwc и bt1-rom. Причината за премахването е липсата на поддръжка и незавършена интеграция в състава на ядрото на компонентите на платформата Baikal, производството на която в РФ бе прекратено през ноември 2025 година.
    • Установени са 12 драйвера за Ethernet устройства с интерфейси ISA и PCMCIA, произвеждани до 2002 г., за които няма намиращи се потребители, използващи ги в работни системи. Също така от ядрото са изключени
      подсистемата ISDN, реализации на протоколите AX.25, CAIF и Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), драйвери yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Amateur Radio), inport и logibm (busmouse). Причината за премахването е липсата на активни поддържащи, на фона на увеличаването на броя на откритите чрез syzbot и AI инструменти грешки, които никой не поема да поправя и цялото натоварване за отстраняване на сериозните проблеми падна на поддържащите основните мрежови подсистеми на ядрото. Общо е премахнато над 140 хиляди реда код.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster