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

След два месеца разработка, Линус Торвалдс представи версия на ядрото Linux 7.1. Сред най-забележителните промени: нов драйвер ntfsplus, първа стъпка в спирането на поддръжката за CPU i486, премахване на стари Ethernet адаптери, премахване на протоколи ISDN и AX.25, включване по подразбиране на механизма Intel FRED, поддръжка на BPF обработчици в io_uring, оптимизация на подсистемата за виртуална памет, поддръжка на субпланиратели в 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 (Flexible Return and Event Delivery), който позволява да се увеличи ефективността и надеждността на доставката на информация за нискоуровневи събития. Подобряването на производителността и намаляването на закъсненията се осъществяват чрез връщането на събития с помощта на процесорна инструкция IRET вместо предаването на събития чрез таблица IDT (Interrupt Descriptor Table). Подобряването на надеждността се постига чрез отделна обработка на постъпването на събития в контекста на ядрото и контекста на потребителя, защита от вложено изпълнение 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, Partition ID) и идентификатор на групата за мониторинг (PMG, Monitoring Group ID). В зависимост от 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 да стане задължителна компилационна зависимост за ядрото). Изискванията за версия на Rust, необходима за компилация на компонентите на ядрото, са повишени до версия 1.85 (която се предлага в Debian 13). Добавена е експериментална опция Kconfig CONFIG_RUST_INLINE_HELPERS за вграждане на Си-прослоек в 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, която предоставя по-прости и бързи функции от традиционния крипто 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. Подобрява се поддръжката на звукови устройства с 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