След талантливата разработка на Линус Торвалдс представи е публикувана 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 (kernelnewbies.org, lwn.net, opennet):

Дискова подсистема, вход/изход и файлови системи
  • Приета е нова реализация на файловата система NTFS — ntfsplus, базирана на кода, премахнат от ядрото на класическия драйвер ntfs. Старият драйвер е преработен, разширен с възможността за запис на данни и адаптиран за поддръжка на съвременни възможности, като например използване фолианти на страници в паметта (folios) вместо структурата buffer_head. В новия драйвер е реализирано отложено разпределение на блокове, което позволява постигане на висока производителност на операциите за запис и намаляване на фрагментацията. За буферираните операции за запис/четене, директен вход/изход, мапинг на експонати и операции за страничен запис/четене е използвана библиотеката iomap. В тестовете iozone драйверът ntfsplus се оказа с 3-5% по-бърз от ntfs3 при запис в еднопоточен режим и с 35-110% при използване на 4 потока. Скоростта на четене на ntfsplus и ntfs3 е на приблизително едно и също ниво. Драйверът ntfs3 остава в състава на ядрото и в него са внесени са корекции и малки подобрения.
  • Добавена е поддръжка за генериране и верификация на данни за проверка на целостта T10 (deepwiki.com) на ниво файловата система, а не на блочно устройство, което позволява постигане на повишаване на производителността на операциите за четене.
  • В драйвера на блочните устройства ublk, позволяващ да се прехвърли специфичната логика на страната на процеса в пространството на потребителя, е добавена поддръжка на входно/изходни операции чрез споделена памет без копиране на данни между буферите (режим zero-copy).
  • За самошифроващи блокови устройства SED-OPAL добавени ioctl за управление на режима Един потребител и е реализирана команда 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 (kernel.org) (Direct Access), поддържащи работа в обход на страничния кеш. Посоченият интерфейс е необходим за интеграция в ядрото на файловата система famfs, разположена в оперативната памет.
  • В файловата система Ceph е реализиран събиране на метрики за входно/изходни операции, свързани с подразделите.
Памет и системни услуги
  • Приета първата серия изменения за прекратяване на поддръжката на процесори i486. От Kconfig са премахнати опции за компилиране на ядрото с поддръжка на процесори 486DX, 486SX и AMD ELAN (CONFIG_M486, CONFIG_M486SX и CONFIG_MELAN), а от Makefile са изключени опции за компилация за системи i486 (-march=i486). Кодът за действителна поддръжка на работа на процесори 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 (arm.com) (Privileged Access Never).
  • В системите с ARM процесори е подобрена поддръжката на разширението на архитектурата на набора от инструкции MPAM (Memory System Resource Partitioning and Monitoring) и е добавена възможност за използването й в пространството на потребителя за управление на ресурсите чрез механизма 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 (timers с висока резолюция). Планировчикът на задачи сега може да използва таймери с висока резолюция без загуба на производителност вместо по-малко точни таймери.
  • Продължава пренасяне на промени от клона 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 (kernel.org) (Runtime Verification), предназначен за проверка на коректността на работа на високо надеждни системи, добавени са компоненти за мониторинг "stall" за проследяване на задачи, чието изпълнение е временно спряно или блокирано, и "deadline" за анализ на поведението на планировчика на задачи.
Виртуализация и безопасност
  • По подразбиране е зададен флаг PROC_MEM_FORCE_PTRACE, който позволява заобикаляне на правата за достъп до паметта на процеса чрез файл /proc/PID/mem само за процеси, прилагащи системния повик ptrace() за отстраняване на грешки.
  • Добавен е нов набор от hook-ове за LSM модули (Linux Security Module), улесняващи реализацията на политики за стекови файлови системи, като overlayfs. В LSM също добавен hook за управление на достъпа до Unix-сокети, който macOS: За всички прозорци на цял екран в 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.
  • от инструменталната лента, ако не е използвана в продължение на 120 дни (някога беше включена по подразбиране и след това беше запазена в много стари профили, въпреки че потребителите на тези профили вече не я ползват). поддръжка на протокола 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.
  • от инструменталната лента, ако не е използвана в продължение на 120 дни (някога беше включена по подразбиране и след това беше запазена в много стари профили, въпреки че потребителите на тези профили вече не я ползват). поддръжка на контролери 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 хиляди реда код.

Източник: linux.org.ru

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