Након два месеца развоја, Линус Торвалдс је објавио језгро. Linux 6.12. Међу најзначајнијим променама: могућност омогућавања режима реалног времена, sched_ext за креирање распоређивача процесора путем eBPF-а, излаз QR кода у ванредним условима, механизам TCP меморије уређаја, механизам резервације ресурса сервера SCHED_DEADLINE, побољшање распоређивача задатака EEVDF, IPE модул за подешавање политика интегритета.
Нова верзија укључује 14607 исправки од 2167 програмера, величина закрпе је 37 МБ (промене су утицале на 13087 датотека, додато је 507913 линија кода, 234083 линије су обрисане). Последње издање је имало 15130 исправки од 2078 програмера, величина закрпе је била 85 МБ (у кернелу 6.10 закрпа је била величине 41 МБ). Око 45% свих промена уведених у 6.12 односи се на драјвере уређаја, приближно 12% промена се односи на ажурирање кода специфичног за хардверске архитектуре, 13% се односи на мрежни стек, 6% на систем датотека и 3% односе се на унутрашње подсистеме кернела.
Главне иновације у кернелу 6.12:
- Меморијске и системске услуге
- Могућност изградње језгра са опцијом PREEMPT_RT без додатних закрпа за рад у реалном времену сада је доступна. Последња недостајућа функција језгра која је спречавала омогућавање PREEMPT_RT режима била је подршка за неблокирајући атомски излаз путем функције printk, која је такође укључена у језгро. Подршка за PREEMPT_RT је доступна за архитектуре x86, x86_64, ARM64 и RISC-V. До сада је имплементација PREEMPT_RT режима била обезбеђена у облику екстерних закрпа, које неке дистрибуције, као што су RHEL, SUSE и Ubuntu, креирали су одвојена издања својих производа у реалном времену, тражена у областима као што су финансијски системи, уређаји за обраду звука и видеа, авијација, медицина, роботика, телекомуникације и индустријски системи, где је потребно обезбедити предвидљиво време обраде догађаја.
- Додат је механизам „sched_ext“ (SCX), омогућавајући коришћење eBPF-а за креирање CPU планера који покривају практично све аспекте заказивања задатака и алокације CPU ресурса. Такви планери се могу динамички учитавати и извршавати унутар језгра. Linux в Виртуелна машина eBPF. Механизам sched_ext поједностављује креирање распоређивача специфичних за задатке, омогућава експериментисање са различитим техникама и стратегијама заказивања и дозвољава брзо креирање радних прототипова и замену распоређивача у ходу у производним инфраструктурама. На пример, користећи sched_ext, можете креирати распоређивач који узима у обзир специфичности одређене апликације и динамички мења своју стратегију заказивања у зависности од стања система и других фактора.
- Састав укључује преостали део закрпа неопходних за рад серверског механизма СЦХЕД_ДЕАДЛИНЕ, који решава проблем недовољног искоришћења ЦПУ ресурса обичним задацима када је ЦПУ монополизован задацима високог приоритета (у реалном времену). Да би спречио монополизацију ЦПУ-а, кернел је раније користио механизам пригушења у реалном времену, који је покушавао да резервише 5% за задатке ниског приоритета, остављајући 95% времена за задатке у реалном времену. Овај механизам је оставио много да се пожели, пошто обични задаци у многим ситуацијама нису добили довољно процесорског времена. СЦХЕД_ДЕАДЛИНЕ сервер примењује ефикаснији механизам за резервацију ресурса.
- Интеграција ЕЕВДФ (Прво најранији виртуелни рок) распореда задатака је завршена, који је заменио ЦФС (Цомплетели Фаир Сцхедулер) планер, који се испоручује почевши од кернела 2.6.23. Приликом избора следећег процеса за извршење преноса, нови планер узима у обзир процесе који нису примили довољно процесорских ресурса или су добили незаслужено велику количину процесорског времена. У првом случају, пренос контроле на процес је принуђен, ау другом се, напротив, одлаже. Стари ЦФС планер је користио хеуристику и фино подешавање да идентификује процесе којима је потребна посебна пажња, док их нови планер прати експлицитније и не захтева фино подешавање. Очекује се да ће ЕЕВДФ смањити кашњења у задацима са којима је ЦФС имао проблема са распоредом.
- У обрађивачу хитних случајева кернела - ДРМ Паниц, који користи ДРМ (Дирецт Рендеринг Манагер) подсистем за приказ визуелног извештаја у стилу „плавог екрана смрти“, могућност приказа логотипа и КР кода са кмсг извештајем на екрану када дође до хитног стања је додат. Пошто само 2953 бајта стане у КР код, обезбеђена је опција ДРМ_ПАНИЦ_СЦРЕЕН_КР_ЦОДЕ_УРЛ, у којој се кмсг извештај компримује помоћу злиб-а и прилаже као параметар УРЛ-у, што омогућава да се око 40 бајтова пренесе преко В7500 КР кода. Приликом прављења пакета са кернелом, дистрибуције могу да поставе основну УРЛ адресу за УРЛ, што ће им омогућити да дођу до странице ради пријаве проблема. Да бисте изабрали формат КР кода, обезбеђено је подешавање ДРМ_ПАНИЦ_СЦРЕЕН_КР_ВЕРСИОН.
- Додата подршка за АРМ ПОЕ (Пермиссион Оверлаи Ектенсион), која вам омогућава да поставите права приступа меморијским областима. Користећи ово проширење, на системима са АРМ64 процесорима, може се имплементирати механизам кључева за заштиту меморије, који се користи за ограничавање приступа меморијским страницама без промене табеле меморијских страница.
- За Лоонгарцх, АРМ64, ПоверПЦ и с390 архитектуре, имплементација гетрандом() системског позива је премештена, оптимизована коришћењем вДСО (виртуелни динамички дељени објекат) механизма, што омогућава да се руковалац системског позива премести из језгра у кориснички простор и избегавајте промене контекста. Оптимизација вам омогућава да убрзате генерисање случајних бројева до 15 пута.
- Могућност коришћења апсолутних тајмаута, који се активирају када се достигне одређено време на системском сату, додата је ио_уринг асинхроном улазно/излазном подсистему (раније су се могла подесити само релативна времена чекања, што је означавало трајање од почетка операције ).
- Додате датотеке за генерисање повезивања за библиотеку либцпуповер помоћу СВИГ алата, који вам омогућава да генеришете везе из Ц/Ц++ кода за различите програмске језике. Везивања вам омогућавају да креирате скрипте на Питхон-у и другим језицима и да их користите за проширење функционалности библиотеке либцпуповер, која обезбеђује АПИ за управљање цпуфрек-ом и драјверима из корисничког простора.
- Услужни програм цпуидле приказује вредност „резиденције“ стања мировања, која се користи за системе у реалном времену и узима у обзир минимално време које процесор мора да буде неактиван да би оправдао трошкове енергије преласка у и из овог стања.
- Додата је могућност коришћења Clang компајлера за изградњу стандардне C библиотеке nolibc, која је укључена у изворни код језгра. Linux и пружа омотач око основних системских позива. Приликом изградње nolibc-а у Clang-у, омогућена је оптимизација времена повезивања (LTO).
- Неки интерфејси цгроуп1 су застарели, као што је ТЦП рачуноводство, верзија XNUMX меког ограничења и управљање исцрпљивањем меморије. Подршка за ове функције за сада остаје у потпуности, а упозорење је дато да се проучи број корисника који настављају да користе ове функције.
- Додата је могућност конфигурисања бафера за праћење прстена за чување акумулираних података након поновног покретања, што ће вам омогућити да не изгубите акумулиране информације за отклањање грешака у случају пада кернела. Подаци се чувају у меморији. Омогућавање се врши преко параметра командне линије траце_инстанце кернела, на пример, подешавањем „траце_инстанце=боот_мап@0к285400000:12М“ ће се резервисати 12 МБ меморије на 0к285400000 за бафер „боот_мап“, који ће / бити доступан/ преко датотеке кернела /трацинг/инстанцес/боот_мап.
- Настављено мигрирање промена из Rust-for-branchLinux, везано за коришћење Руста као другог језика за развој драјвера и модула језгра (подршка за Руст није подразумевано активна и не укључује Руст међу потребне зависности језгра). Додати су модули „list“ и „rbtree“ за рад са двоструко повезаним листама и црвено-црним стаблима претраге. Проширене су могућности модула „init“, „sync“, „types“ и „error“. Додата је могућност коришћења Руст кода при изградњи језгра са заштитом од Spectre напада (опције MITIGATION_{RETHUNK,RETPOLINE,SLS}), коришћењем KASAN система за отклањање грешака, механизама заштите kCFI (kernel Control Flow Integrity) и Shadow Call, као и при коришћењу додатних GCC додатака. Додат је драјвер за Applied Micro QT2025 PHY Ethernet контролер, написан у Русту. Припремљена је посебна веб страница са документацијом: rust.docs.kernel.org.
- Услужни програм xdrgen је додат у изворни код језгра за конвертовање XDR (eXternal Data Representation) спецификација у XDR функције кодирања и декодирања написане коришћењем C стила који је усвојило језгро. Linux.
- Кернел је усвојио промену за имплементацију механизма за маскирање показивача како би се смањио број спорих позива барриер_носпец() у 64-битној функцији цопи_фром_усер(), која се користи за копирање података у језгро из корисничког простора. Коришћење маскирања убрзава тест „пер_тхреад_опс“, који процењује број операција које се могу извршити у једној нити, за 2.6%.
- Додан је нови УСБ драјвер који вам омогућава да користите 9пфс протокол као транспорт за слање и примање података са УСБ уређаја када монтирате 9п систем датотека преко УСБ-а (на пример, „моунт -т 9п -о транс=усбг, анаме=/патх/то/фс /мнт/9"). Пример коришћења новог драјвера је његово коришћење уместо НФС-а за организовање покретања основне партиције приликом развоја уграђених уређаја.
- Дисковни подсистем, И/О и системи датотека
- У ВФС подсистем је додата могућност рада са уређајима за складиштење чија је величина блока већа од величине меморијске странице у систему. У системима датотека, ова функција је тренутно подржана само у КСФС.
- Подсистем ФУСЕ, који вам омогућава да креирате имплементације система датотека који раде у корисничком простору, додао је подршку за мапирање корисничких идентификатора монтираних система датотека, који се користе за упаривање датотека одређеног корисника на монтираној страној партицији са другим корисником на тренутној система.
- Имплементирана је нова фцнтл операција, Ф_ЦРЕАТЕД_КУЕРИ, која даје апликацији могућност да одреди да ли је датотека отворена помоћу ознаке О_ЦРЕАТ креирана или је већ постојала раније.
- Додата је могућност коришћења јединствених 64-битних ИД-ова тачака монтирања у системски позив наме_то_хандле_ат() да би се избегли услови трке приликом рашчлањивања /проц/моунтинфо.
- Величина структуре „фајла“ у језгру је смањена са 232 на 184 бајта, што смањује потрошњу меморије на системима који активно раде са датотекама.
- Монтирање система датотека за монтирање тачака унутар /проц хијерархије, као што је /проц/ПИД/фд, било је забрањено, што је створило потенцијалне безбедносне проблеме.
- Псеудо-ФС НСФС (НамеСпаце ФС), који се користи за рад са именским просторима, пружа додатне информације о именским просторима тачака монтирања.
- Систем датотека ЕРОФС (Ектендабле Реад-Онли Филе Систем), дизајниран за употребу на партицијама само за читање, сада подржава монтирање система датотека директно са слика диска сачуваних као датотеке.
- Нове иоцтл команде КСФС_ИОЦ_СТАРТ_ЦОММИТ и КСФС_ИОЦ_ЦОММИТ_РАНГЕ су додате у КСФС за размену садржаја између две датотеке.
- NFS је додао подршку за протокол „LOCALIO“, што вам омогућава да утврдите да ли клијент и сервер NFS на истом хосту да би се омогућиле одговарајуће оптимизације.
- У систему датотека Бтрфс, предложене су оптимизације перформанси, код је рефакторисан, област закључавања обима током операција читања је смањена, настављен је рад на претварању меморијских страница да користе фолио страница, а аутоматско ослобађање меморије је имплементирано за структуру бтрфс_патх.
- У систему датотека Ект4, исправљене су грешке везане за доделу блокова, управљање обимом, брзо урезивање и вођење дневника.
- Виртуелизација и безбедност
- Додан је ИПЕ (Интегрити Полици Енфорцемент) ЛСМ модул, који је развио Мицрософт да прошири постојећи систем обавезне контроле приступа. Модул вам омогућава да дефинишете општу политику интегритета за цео систем, назначујући које су операције дозвољене и како треба проверити аутентичност компоненти. На пример, користећи ИПЕ, можете одредити које извршне датотеке се смеју покренути, узимајући у обзир њихову усклађеност са референтном верзијом користећи криптографске хешове које обезбеђује систем дм-верити.
- У фази компилације језгра, могуће је одвојено омогућити доступне методе заштите од различитих рањивости Спецтре класе у ЦПУ-у. Кцонфиг нуди нове параметре: МИТИГАТЕ_МДС (заштита од рањивости микроархитектурног узорковања података), МИТИГАТЕ_ТАА (заштита од рањивости ТСКС Асинцхроноус Аборт), МИТИГАТЕ_ММИО_СТАЛЕ_ДАТА (заштита од рањивости ММИО застарелих података Л1), (заштита од рањивости застарелих података ММИО в1). ИГАТЕ_РЕТБЛЕЕД (заштита од ретблеед рањивости), МИТИГАТЕ_СПЕЦТРЕ_В1, МИТИГАТЕ_СПЕЦТРЕ_В2 (заштита од рањивости Спецтре), МИТИГАТЕ_СРБДС (заштита од рањивости узорковања података бафера специјалног регистра), МИТИГАТЕ_ССБ (заштита од стране Спецулнера за заштиту од Спецулнер-а).
- Додата опција командне линије проц_мем.форце_оверриде и скуп подешавања за прављење у Кцонфиг-у (ПРОЦ_МЕМ_ФОРЦЕ_АЛВАИС, ПРОЦ_МЕМ_ФОРЦЕ_ПТРАЦЕ и ПРОЦ_МЕМ_ФОРЦЕ_НЕВЕР) да спречи промене меморије преко /проц/пид/мем.
- ЛСМ подсистем (Linux безбедносни модул) је пребачен на коришћење статичких позива, што је побољшало безбедност и перформансе.
- Могућност коришћења стандардних језгара за ARM64 архитектуру у гостујућим окружењима која раде на Android-системи са модификованим KVM хипервизором (заштићени KVM).
- Ландлоцк ЛСМ модул, који вам омогућава да ограничите интеракцију групе процеса са спољним окружењем, имплементира концепт „ИПЦ сцопинг“ да би селективно ограничио интеракцију са окружењима сандбок-а користећи Уник утичнице и сигнале. На пример, можете забранити везе помоћу Уник сокета из окружења сандбок-а са процесима који немају примењену изолацију, али дозвољавају везе са процесима у истом опсегу.
- У КВМ хипервизору, ЦПУИД-у је додата заставица за гостујуће системе која указује на подршку за АВКС10.1 екстензије.
- Мрежни подсистем
- Додан је ТЦП механизам за меморију уређаја, који омогућава коришћење мрежних утичница за директно слање садржаја меморије периферних уређаја преко мреже (режим нулте копије) и директно постављање садржаја мрежних пакета у област меморије уређаја на страни примаоца. Подаци који се преносе у пакетима се преносе са мрежне картице у меморију периферног уређаја или из меморије уређаја на мрежну картицу директно, заобилазећи ЦПУ, а заглавља пакета завршавају у редовним баферима кернела.
- Могућности многих Етхернет и бежичних драјвера су проширене. На пример, Интел ивлвифи драјвер је додао подршку за премештање РЛЦ/СМПС операција на страну фирмвера, РеалТек ртв89 драјвер је повећао перформансе и додао подршку за РТЛ8852БТ/8852БЕ-ВТ (ВиФи 6) чипове, управљачки програм за микрочип Етхернет је додао подршку за ИЕЕЕ 802.3 бв (100БАСЕ) спецификације -Т1) и ИЕЕЕ 802.3бп, Мицрософт вНИЦ и ИБМ ветх имплементације виртуелног Етхернета су побољшане. Додати нови драјвери за Реалтек РТЛ9054, РТЛ9068, РТЛ9072, РТЛ9075, РТЛ9068, РТЛ9071 и Мицроцхип ЛАН8650/1 10БАСЕ-Т1С МАЦ-ПХИ Етхернет чипове.
- У МПТЦП (МултиПатх ТЦП), проширењу ТЦП протокола за организовање испоруке ТЦП пакета истовремено дуж неколико рута кроз различите мрежне интерфејсе, величина тежине која се користи у рутирању је повећана са 8 на 16 бита. Спроведена детекција изгубљеног (блацкхоле) саобраћаја и обустава на неко време покушаја успостављања везе са системима што доводи до губитка саобраћаја.
- За ИПв6, имплементирана је подршка за ознаку „п“ у ПИО (префикс Информатион Оптион), која се користи у РА огласима (ИПв6 Роутер Адвертисементс) за одабир модела имплементације клијента преко ДХЦПв6-ПД (ДХЦПв6 Префик Делегатион, РФЦ9663) уместо додељивања појединачне адресе засноване на префиксима који користе СЛААЦ (аутоконфигурација адресе без стања). ИПв6 ИОАМ6 додаје подршку за нови режим тунсрц енкапсулације који омогућава боље перформансе.
- Побољшане перформансе за обраду ИПсец контролних пакета.
- Побољшане перформансе испирања великих скупова правила нфтаблес. нфнетлинк_куеуе је побољшао подршку за СЦТП протокол.
- Етхтоол АПИ је додао подршку за везивање више мрежних картица на један мрежни интерфејс.
- Оборудование
- У АМДГПУ драјверу се наставља рад на имплементацији подршке за АМД РДНА4 („ГФКС12“) ГПУ-ове. Додата је могућност ресетовања појединачних редова задатака без ресетовања целог ГПУ-а.
- Настављен је рад на Ксе дрм драјверу (Дирецт Рендеринг Манагер) за ГПУ засноване на Интел Ксе архитектури, који се користи у Интел Арц породичним видео картицама и интегрисаној графици, почевши од процесора Тигер Лаке. Нова верзија укључује подршку за ГПУ-ове засноване на микроархитектурама Баттлемаге и Лунар Лаке. Подршка за ЦЦС (Цолор Цонтрол Сурфаце) Ксе2 модификаторе је уведена за контролу параметара интегрисаних и дискретних ГПУ-а.
- и915 драјвер имплементира могућност да се излазе информације о брзини вентилатора преко ХВМОН или сисфс интерфејса (атрибут „фан1_инпут“). Параметар "и915.модесет" је застарео. Параметар "и915.номодесет" треба да се користи уместо "и0.модесет=915".
- Додата подршка за А615, А306 и А621 ГПУ за мсм ДРМ драјвер (Куалцомм Адрено ГПУ).
- Ноувеау возачу су прерађене и очишћене унутрашње структуре.
- Драјвер интел_пстате, који контролише параметре потрошње енергије (П-стате) на системима са Интел процесорима, додао је подршку за хибридне системе са асиметричним (различитим карактеристикама) ЦПУ-има, као и подршку за управљање напајањем процесора заснованих на Граните Рапидс и Сиерра Форест микроархитектуре. Додата подршка за Ксеон Граните Рапидс ЦПУ интел_идле драјверу. Интел_рапл драјвер обезбеђује препознавање процеса породице АМД 1Ах и Интел АрровЛаке-У процесора.
- Континуирано укључивање промена за подршку АРМ СоЦ Снапдрагон Кс Елите, који користи Куалцоммов сопствени 12-језгарни Орион ЦПУ и Куалцомм Адрено ГПУ. Чип је намењен за употребу у лаптоповима и ПЦ рачунарима и испред Аппле М3 и Интел Цоре Ултра 155Х чипова у многим тестовима перформанси.
- Додата подршка за АРМ плоче, СоЦ-ове и уређаје: Броадцом бцм2712 (Распберри Пи 5), Ренесас Р9А09Г057 (РЗ/В2Х), Куалцомм Снапдрагон 414 (МСМ8929), Леново ТхинкПад Т14с Ген 6, Леново А6000/А6010/А7, Сурфаце 35 , Фирефли Цоре-ПКС30-ЈД4, Лунзн Фастрхино Р68С, Аспеед Рисер, АГКС Орин, Роцкцхип Кнап-ТС433, Хуасхан Пи, Мета Цаталина, БеаглеИ-АИ, НаноПи Р2С Плус, ЕкиносАуто в920, СОПХГО2002, ЛГ5332м, СОПХГО4, СГ815м ), Цоол Пи ЦМ5 ГенБоок, Анберниц РГ35КСКССП, ГамеФорце Аце, ИБМ П11, Контрон и.МКС93 ОСМ-С, НаноПЦ-Т6
- Додата подршка за екранске панеле Анберниц РГ28КСКС, Он Тат Индустриал Цомпани КД50Г21-40НТ-А1, Иннолук Г070АЦЕ-ЛХ3, Мелфас лмфбк101117480, Денситрон ДМТ028ВГХМЦМИ-1Д, Мицроцхип АЦ40Т08УН116А02.3, .116, Б06.1КСАТ116, БОЕ ТВ04.1ВУМ -ЛЛ101, БОЕ НВ2ВУМ-Н140, БОЕ НВ41ВУМ-Н133, БОЕ НВ63ВХМ-А116Д, БОЕ НЕ4ВУМ-Н140Г, ЦМН Н6БЦА-ЕА116, ЦМН Н2БЦП-ЕА116, ЦСВ М2-601
- Аудио подсистем је додао подршку за чипове и кодеке РМЕ Дигифаце УСБ, АМД АЦП 7.1, Медиатек МТ6367, МТ8365, Реалтек РТЛ1320, Ц-Медиа ЦМ9825. Стари управљачки програми за звук за Интел АСоЦ су проглашени застарелим и препоручује се да се уместо њих користе АВС драјвери. Многа побољшања су направљена у управљачком програму СоундВире.
Извор: опеннет.ру
