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

След две месеца разработки Линус Торвалдс представи версия на ядрото Linux 6.10. Някои от най-забележителните промени включват: драйвер ntsync с примитиви за синхронизация на Windows NT, компоненти DRM Panic за реализация на аналог на „синия екран на смъртта“, спиране на поддръжката на стари процесори Alpha, възможност за проверка на целостта във файловата система, базирана на FUSE, ограничаване на достъпа до ioctl чрез механизма Landlock, подсистема за профилиране на операциите по разпределение на памет, системно повикване mseal(), възможност за криптиране на обмена на данни с устройства TPM, поддръжка на високоприоритетни работни опашки в dm-crypt, драйвер panthor за десето поколение на GPU Mali.

В новата версия са внесени 14564 корекции от 1989 разработчици, размерът на патча е 41 MB (промените засягат 12509 файла, добавени са 547663 реда код, изтрити са 312464 реда). В предходното издание имаше 15680 корекции от 2106 разработчици, размерът на патча беше 54 MB. Около 41% от всички представени в 6.10 промени са свързани с драйверите на устройства, около 15% от промените имат отношение към обновяването на код, специфичен за хардуерни архитектури, 13% са свързани с мрежовия стек, 5% — с файлови системи и 4% — с вътрешни подсистеми на ядрото.

Основни нововъведения в ядрото 6.10:

  • Дисковата подсистема, вход/изход и файловите системи
    • Добавена е нова fcntl операция F_DUPFD_QUERY, с помощта на която процесът може да определи, че два различни файлови дескриптора сочат към един и същи файл. В отличие от подобни възможности, предоставяни от системното повикване kcmp(), F_DUPFD_QUERY не разкрива излишна информация и работи на системи с изключен kcmp.
    • В подсистемата FUSE, приложена за реализиране на файлови системи в пространството на потребителя, е реализирана възможността за прилагане на механизма fs-verity за проверка на целостта и автентичността на файловете.
    • В модула dm-crypt, използван за криптиране на блокови устройства, е добавена опция „high_priority“, позволяваща задействането на високоприоритетни работни опашки за увеличаване на производителността на мощни системи. сървъриПо подразбиране режимът е изключен, тъй като може да доведе до увеличени забавяния при изпълнението на задачи, които не са свързани с криптиране, като обработка на звук на обикновени компютри.
    • Добавен протокол за управление NFS-сървъра, базиран на netlink, в ядрото. В потребителското пространство е подготвена утилита nfsdctl на базата на този протокол. Поддръжката за монтаж на NFS v2 е деактивирана по подразбиране (в утилитата mount.nfs поддръжката за NFS v2 бе прекратена още през 2021 г.).
    • Продължава работата върху реализиране на възможността за използване на утилитата fsck за проверка и корекция на откритите проблеми в online-режим, без демонтиране на файловата система в файловата система XFS. Добавен е ioctl XFS_IOC_EXCHANGE_RANGE за обмен на байтови диапазони между два файла в атомарен режим.
    • В Btrfs е реализирана поддръжка на урязване (shrinker) на незакрепените карти на екстентите, което може да е полезно за намаляване на потреблението на памет в условия на недостиг на памет в системата. Кодът за компресия на данни и функцията put_file_data() са преведени да използват страницни фолиа (page folios). Преработен е механизмът за блокиране на екстентите при изпълнение на операции за обратна запис.
    • В FS Ext4 е добавена поддръжка на ioctl FS_IOC_GETFSSYSFSPATH за определяне на местоположението на зададената примонтирована файловат система в иерархията /sys/fs.
    • Файловите системи OPENPROMFS, ISOFS, QNX6, NILFS2, MINIX и FREEVXFS са преведени на нов API за монтиране на дялове.
    • В файловата система EROFS (Extendable Read-Only File System), предназначена за използване на дялове, достъпни само в режим само за четене, е добавена поддръжка на алгоритъма за компресия Zstandard.
    • В Bcachefs е подготвена изпълнението на fsck без демонтиране на дяловете (online-проверка). Добавени са промени и корекции за повишаване на надеждността на работата. Реализирана е възможността за обновление и откат на формата на файловата система в режим „nochanges“, който деактивира записването и съхранява метаданните само в паметта.
    • В файловата система OverlayFS е добавена поддръжка за създаване на временни файлове, използвайки опцията O_TMPFILE.
    • Прекратена е поддръжката на механизма за ограничаване на пропускната способност на блочните устройства „CONFIG_BLK_DEV_THROTTLING_LOW“, който от 2017 г. запази статуса си на експериментален, не се наложи на практика и затруднява поддръжката на подсистемата на блочните устройства.
  • Памет и системни услуги
    • Добавен, но изключен при компилация, драйвера ntsync, който реализира символно устройство /dev/ntsync и набор от примитиви за синхронизация, използвани в ядрото на Windows NT. Реализацията на подобни примитиви на ниво ядро позволява значително повишаване на производителността на Windows игри, стартирани чрез Wine. Увеличението на производителността се постигна благодарение на избягването на разходите, свързани с използването на RPC в пространството на потребителя. Създаването на отделен драйвер за ядрото на Linux се обяснява с проблемността на коректното реализиране на API за синхронизация NT над съществуващите примитиви в ядрото.
    • Добавена е подсистема за профилиране на операции за разпределяне на памет в ядрото на Linux, която позволява откриването на течове на памет в ядрото и улеснява извършването на оптимизации на потреблението на памет. Подсистемата осигурява ниски разходи, което позволява да се използва не само в отладъчни версии на ядрото, но и на работещи системи.
    • Добавено е начално реализиране на обработчик на аварийни ситуации в ядрото — DRM Panic, използващ подсистемата DRM (Direct Rendering Manager) за показване на илюстративен цветен отчет в стил „син екран на смъртта“. В следващото издание се планира добавяне на възможност за показване на логото и QR код на екрана при възникване на аварийна ситуация.
    • Продължава прехвърлянето на изменения от клона Rust-for-Linux, свързани с използването на езика Rust като втори език за разработка на драйвери и модули в ядрото (поддръжката на Rust не е активирана по подразбиране и не води до включването на Rust в списъка с задължителните зависимости за компилация на ядрото). Извършен е преход към използване на версия 1.78 на Rust, който позволи преминаване към използване на стандартната библиотека alloc вместо собствено разклонение. Добавени са абстракции за работа с време в ядрото (обвивка над структурата ktime_t). Добавена е поддръжка за използване на компоненти на ядрото на езика Rust на системи с архитектура RISC-V.
    • В BPF програмите е реализирана възможност за използване на опашки за изчакване (wait queue) в ядреното пространство. Добавени са функциите bpf_preempt_disable и bpf_preempt_enable, които позволяват създаването на секции с код, които не могат да се прекъсват от планировчика на задачи. Осигурен е достъп на BPF програмите до криптографските функции на ядрото (crypto). Реализирана е поддръжка на JIT компилация на BPF програми за системи с 32-битови процесори ARCv2.
    • За 32-битови ARM системи е реализирана поддръжка за компилиране на ядрото с компилатор Clang, активирайки защита CFI (Control Flow Integrity), която блокира нарушения в нормалния контрол на потока (control flow) в резултат на експлойти, променящи указателите на функции, съхранени в паметта.
    • Добавена е възможност за директно отразяване чрез mmap() на наливни буфери за трасировка за предаване на тяхното съдържание в пространството на потребителя без допълнителни копия.
    • Добавен е системен повик "mseal", който позволява на процесите да задават заключение за промяна на определени части от своето адресно пространство. Новият системен повик е планиран да се използва в браузъра Chrome за усилване на изолацията на пясъчника.
    • За субархитектурата x32, която предоставя хибриден x86_64 ABI, позволяващ използването на 32-битова адресна модел на паметта в 64-битови системи (процесорът работи в 64-битови режим, но използва 32-битови указатели и аритметични операции), е добавена поддръжка на механизъм Shadow Stack, който блокира много експлойти, използвайки хардуерни възможности на Intel процесорите за защита от презапис на адреса на връщане от функция при преливане на буфер в стека.
    • На ARM64 архитектури в системния повик userfaultfd(), който позволява създаване на обработчици за достъп до неразпределени страници памет (page faults) в пространството на потребителя, са реализирани функции, свързани с защита от запис на области памет и елементи от таблицата на страници памет.
    • Код за поддръжка на процесорите Alpha 21164 (EV5) и по-ранни серии, издаван през 1995 г., е премахнат. Поддръжката на кода за тези процесори беше затруднена поради отсъствието на възможност за достъп до паметта на ниво отделни байтове. Alpha беше първата архитектура, на която беше портировано ядрото на Linux, първоначално достъпно само за системи x86.
  • Виртуализация и сигурност
    • Добавена е поддръжка за криптирано предаване на данни с устройствата TPM (Trusted Platform Module) и проверка на целостта на транзакциите.
    • В LSM модула Landlock, който позволява ограничаване на взаимодействието на група процеси с външната среда, е добавена възможността да се прилагат правила за ограничаване на достъпа до повикванията на ioctl().
    • Предложена е опция init_mlocked_on_free, задаваща се при зареждане, която осигурява нулиране на съдържанието на паметта, защитена от изхвърляне в дялове, при използване на повикването mlock(), ако тази памет бъде освободена без отключване чрез повикване на munlock(). Използването на тази опция позволява да се избегне натрупването на криптографски ключове в паметта в случай на аварийно приключване на приложението, работещо с тях.
    • В подсистемата crypto е ускорено изпълнението на операции за дисково криптиране, използвайки алгоритъма AES-XTS на системи x86_64 с процесори Intel и AMD, поддържащи разширения VAES, AVX2, VPCLMULQDQ, AVX10 или AVX512.
    • Възможността за събиране на статистика за използването на криптосубсистемата на ядрото (CONFIG_CRYPTO_STATS) е премахната. Тази функция не е била реално използвана и доведе до значително намаляване на производителността, а също така създаде осезаема допълнителна натовареност на поддръжниците.
  • Мрежова подсистема
    • Значително е повишена производителността на операции за предаване на данни в режим zero-copy при използване на подсистемата io_uring. Добавена е възможността за обединяване („bundle“) на няколко буфера за операции за предаване и приемане на данни.
    • Кодът за събиране на боклука, прилаган при предаване на файлови дескриптори през Unix-сокети с използване на съобщения SCM_RIGHTS, е пренаписан. Това изменение позволява решаване на проблема с натрупването на циклични броячи на референции.
    • Добавена е възможност за задаване на филтри за протокола PFCP (Packet Forwarding Control Protocol), използван в мрежи 4G и 5G.
    • Добавена поддръжка на опцията за мрежови сокети SO_PEEK_OFF, която, по аналогия с подобна опция за Unix-сокетите, позволява да се определи отклонението на данните в опашката, използвано от системния вик recv при указването на флаг MSG_PEEK (означава данните като непрочетени и те ще бъдат отново предоставени при следващия вик на recv).
    • В подсистемата io_uring е добавена поддръжка на операцията IORING_CQE_F_SOCK_NONEMPTY, която позволява да се определи наличието на заявки за свързване на мрежов сокет, чакащи обработка.
    • Предложена е реализация на технологията PoE (Power over Ethernet), базирана на преди това наличния код за поддръжка на PoDL (Power over Data Line) и съвместима с PoE контролерите на Microchip PD692x0 и TI TPS23881.
    • За протоколите TCP, DCCP и MPTC е добавена поддръжка на механизма rstreason, който позволява да се определи причината за изпращането на RST пакети (например, NO_SOCKET).
  • Оборудване
    • Включен е драйверът panthor за десетото поколение GPU Mali (G310, G510, G710), в който се прилага технологията CSF (Command Stream Frontend), извеждаща някои функции на драйвера на страна за намаляване на натоварването на CPU и предлагаща нова модел на организация на изпълнението на работните задачи на GPU. Промените за поддръжка на новия драйвер също са приети в Mesa и са включени в Gallium драйвера panfrost за GPU Mali.
    • В драйвера i915 са добавени PCI идентификатори на новите дискретни видеокарти Intel Arc (DG2/Alchemist).
    • Продължава работата по drm драйвера (Direct Rendering Manager) Xe за GPU на базата на архитектурата Intel Xe, която се използва във видеокартите Intel от семейството Arc и интегрираната графика, започвайки от процесорите Tiger Lake. Добавена е поддръжка за CPU Arrow Lake H. Продължава реализирането на поддръжката за процесорите Lunar Lake. Добавена е начална поддръжка на механизма SR-IOV (Single Root I/O Virtualization).
    • В драйвера AMDGPU е добавена поддръжка на SMU 14.0 (System Management Unit). Добавена е възможност за използване на нови AMD GPU на системи с архитектура RISC-V.
    • Добавен е драйвер за ускорителя на криптографски операции Tegra Security Engine, който може да се използва за ускорение на AES и различни алгоритми за хеширане.
    • Добавена е поддръжка на екранните панели LG SW43408, Innolux G121XCE-L01 LVDS, RK3326 GameForce Chi, Crystal Clear CMT430B19N00, POWERTIP PH128800T006-ZHC01, Startek KD050HDFIA020-C020A, Pixel 3a, Khadas TS050 V2, Raydium RM69380, BOE NT116WHM-N44, CMN N116BCA-EA1 и AUO B120XAN01.0.
    • Добавена поддръжка за звуковата подсистема на лаптопите Lenovo Thinkbook 13x Gen 4, Lenovo Thinkbook 16P Gen 5, Lenovo Thinkbook 13X и ASUS Zenbook 2024 HN7306W. Добавена е поддръжка за външни звукови карти Vocaster One и Vocaster Two. Добавен е драйвер за усилвателите NAU8325 от Nuvoton Technology.
    • В драйвера HID-Steam е добавена поддръжка на IMU (Импулсно измервателно устройство) на игровия контролер Steam Deck, което позволява използването на отделен модул evdev за достъп до данните от гироскопа и акселерометъра.
    • Включени са промени за поддръжка на ARM SoC Snapdragon X Elite, който разполага със собствен 12-ядрен CPU Qualcomm Oryon и GPU Qualcomm Adreno. Чипът е насочен към употреба в лаптопи и ПК и превъзхожда в много тестове производителността на чиповете Apple M3 и Intel Core Ultra 155H.
    • Добавена е поддръжка за ARM платформи, SoC и устройства: PocketBook 614 Plus, Sony Xperia Z3, Xperia 1 V, Samsung Galaxy S5 China, Motorola Moto G, RK3326 GameForce Chi, Anbernic RG35XX (Plus/H/2024), Airoha EN7581, Radxa ROCK 3C, ArmSom Sige7, Tanix TX1, Toradex Colibri iMX8DX, Renesas RZ/V2H, Forlinx OK3588-C, Protonic MECSBC, Emcraft Systems NavQ+, NXP S32G3, Wolfvision pf5, Amlogic A4/A5, ASUS RT-AC3200, ASUS RT-AC5300, ASrock E3C256D4I, IBM system1 BMC, Meta Harma BMC(AST2600), ASRock X570D4U BMC, Au-Zone Maivin AI Vision Starter Kit.
    • Добавена е поддръжка за платки Milk-V Mars, използващи SoC Starfive JH7110 на базата на архитектурата RISC-V.

Междувременно, Латиноамериканският Фонд за свободен софтуер създаде вариант на напълно свободното ядро 6.10 — Linux-libre 6.10-gnu, което е премахнато от елементи на микропрограми и драйвери, съдържащи несвободни компоненти или части от код, чиято употреба е ограничена от производителя. В версия 6.10 е обновен кодът за почистване на блобовете в драйверите Intel i915, rtl8xxxu, qla2xxx и QCAI sahara. Извършено е почистване на имената на блобовете в dts файловете (devicetree) за архитектурата Aarch64. Почистват се новите файлове, добавени в драйверите на Adreno, Intel IPU3 и PRUEth. Извършено е почистване на новите драйвери Panthor, Intel IPU6, PRUEth SR1, rtw8703b, tps23881, air_en8811h, Intel ISH HID и pcm6240. Почистването на USB драйвера Prism2.5/3 USB, който е премахнат от ядрото, е прекратено.

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

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