Издање језгра Линука 6.2

Након два месеца развоја, Линус Торвалдс је представио издање Линук кернела 6.2. Међу најзначајнијим променама: дозвољено је прихватање кода под лиценцом Цопилефт-Нект, побољшана је имплементација РАИД5/6 у Бтрфс-у, наставља се интеграција подршке за Руст језик, смањени су трошкови заштите од Ретблеед напада, додата је могућност регулације потрошње меморије током повратног уписивања, додат је механизам за ТЦП балансирање ПЛБ (Протецтиве Лоад Баланцинг), додат је хибридни механизам заштите тока команди (ФинеИБТ), БПФ сада има могућност да дефинише сопствене објекте и структуре података , укључен је услужни програм рв (Рунтиме Верифицатион), смањена је потрошња енергије у имплементацији РЦУ закључавања.

Нова верзија укључује 16843 исправке од 2178 програмера, величина закрпе је 62 МБ (промене су утицале на 14108 датотека, додато је 730195 линија кода, 409485 линија је избрисано). Око 42% свих промена уведених у 6.2 односи се на драјвере уређаја, приближно 16% промена се односи на ажурирање кода специфичног за хардверске архитектуре, 12% се односи на мрежни стек, 4% на систем датотека и 3% односе се на унутрашње подсистеме кернела.

Главне иновације у кернелу 6.2:

  • Меморијске и системске услуге
    • Дозвољено је укључити у код кернела и измене које се налазе под лиценцом Цопилефт-Нект 0.3.1. Лиценцу Цопилефт-Нект креирао је један од аутора ГПЛв3 и потпуно је компатибилна са ГПЛв2 лиценцом, што су потврдили правници из СУСЕ-а и Ред Хат-а. У поређењу са ГПЛв2, Цопилефт-Нект лиценца је много компактнија и лакша за разумевање (уклоњен је уводни део и помињање застарелих компромиса), дефинише временски оквир и процедуру за отклањање кршења и аутоматски уклања захтеве цопилефт-а за застарели софтвер који има више од 15 година.

      Цопилефт-Нект такође садржи клаузулу о власничким технологијама, која, за разлику од ГПЛв2, чини ову лиценцу компатибилном са Апацхе 2.0 лиценцом. Да би се обезбедила потпуна компатибилност са ГПЛв2, Цопилефт-Нект изричито наводи да се изведено дело може обезбедити под ГПЛ лиценцом поред оригиналне Цопилефт-Нект лиценце.

    • Структура укључује услужни програм „рв“, који обезбеђује интерфејс за интеракцију из корисничког простора са руковаоцима РВ (Рунтиме Верифицатион) подсистема, дизајниран да провери исправан рад на високо поузданим системима који гарантују одсуство кварова. Верификација се врши у току извршавања причвршћивањем руковалаца на тачке праћења које проверавају стварни напредак извршења у односу на унапред одређени референтни детерминистички модел машине који дефинише очекивано понашање система.
    • ЗРАМ уређај, који омогућава да се свап партиција складишти у меморију у компримованом облику (у меморији се креира блок уређај на који се замена врши компресијом), имплементира могућност препакивања страница коришћењем алтернативног алгоритма за постизање вишег нивоа. компресије. Основна идеја је да се обезбеди избор између неколико алгоритама (лзо, лзо-рле, лз4, лз4хц, зстд), нудећи сопствене компромисе између брзине компресије/декомпресије и нивоа компресије, или оптималних у посебним ситуацијама (на пример, за компресију великих меморијске странице).
    • Додат "иоммуфд" АПИ за управљање системом за управљање И/О меморијом - ИОММУ (И/О Мемори-Манагемент Унит) из корисничког простора. Нови АПИ омогућава управљање табелама страница И/О меморије помоћу дескриптора датотека.
    • БПФ пружа могућност креирања типова, дефинисања сопствених објеката, изградње сопствене хијерархије објеката и флексибилног креирања сопствених структура података, као што су повезане листе. За БПФ програме који иду у режим мировања (БПФ_Ф_СЛЕЕПАБЛЕ), додата је подршка за бпф_рцу_реад_{,ун}лоцк() закључавања. Имплементирана подршка за чување таск_струцт објеката. Додат је тип мапе БПФ_МАП_ТИПЕ_ЦГРП_СТОРАГЕ, који обезбеђује локалну меморију за цгрупе.
    • За механизам за блокирање РЦУ (Реад-цопи-упдате) имплементиран је опциони механизам „лењих” повратних позива, у којима се неколико повратних позива обрађује одједном користећи тајмер у пакетном режиму. Примена предложене оптимизације нам омогућава да смањимо потрошњу енергије на Андроид и ЦхромеОС уређајима за 5-10% одлагањем РЦУ захтева у време мировања или малог оптерећења система.
    • Додат је сисцтл сплит_лоцк_митигате за контролу начина на који систем реагује када детектује подељена закључавања која се јављају приликом приступа неусклађеним подацима у меморији због тога што подаци прелазе две ЦПУ кеш линије приликом извршавања атомске инструкције. Такве блокаде доводе до значајног пада перформанси. Постављање сплит_лоцк_митигате на 0 само даје упозорење да постоји проблем, док постављање сплит_лоцк_митигате на 1 такође узрокује успоравање процеса који је изазвао закључавање како би се очувале перформансе за остатак система.
    • Предложена је нова имплементација кспинлоцк за ПоверПЦ архитектуру, која показује веће перформансе и решава неке проблеме закључавања који се јављају у изузетним случајевима.
    • МСИ (Мессаге-Сигналед Интерруптс) код за руковање прекидима је прерађен, елиминишући нагомилане архитектонске проблеме и додајући подршку за везивање појединачних руковалаца за различите уређаје.
    • За системе засноване на архитектури скупа инструкција ЛоонгАрцх која се користи у процесорима Лоонгсон 3 5000 и имплементира нови РИСЦ ИСА, сличан МИПС и РИСЦ-В, имплементирана је подршка за фтраце, заштиту стека, режим мировања и режим мировања.
    • Обезбеђена је могућност додељивања имена областима дељене анонимне меморије (раније су имена могла бити додељена само приватној анонимној меморији додељеној одређеном процесу).
    • Додан је нови параметар командне линије кернела „траце_триггер“, дизајниран да активира окидач праћења који се користи за повезивање условних команди позваних када се покрене контролна провера (на пример, траце_триггер=”сцхед_свитцх.стацктраце иф прев_стате == 2″).
    • Захтеви за верзију пакета бинутилс су повећани. Изградња кернела сада захтева најмање бинутилс 2.25.
    • Приликом позивања екец(), додата је могућност постављања процеса у временски простор имена, у коме се време разликује од системског времена.
    • Почели смо да преносимо додатне функционалности из гране Руст-фор-Линук у вези са употребом Руст језика као другог језика за развој драјвера и модула кернела. Подршка за Руст је подразумевано онемогућена и не доводи до тога да Руст буде укључен као обавезна зависност израде кернела. Основна функционалност понуђена у последњем издању је проширена да подржи код ниског нивоа, као што су тип Вец и макрои пр_дебуг!(), пр_цонт!() и пр_алерт!(), као и процедурални макро „#[втабле ]”, што поједностављује рад са табелама показивача на функцијама. Додавање Руст везивања високог нивоа преко подсистема кернела, што ће омогућити креирање пуноправних драјвера у Русту, очекује се у будућим издањима.
    • Тип "цхар" који се користи у кернелу је сада подразумевано проглашен непотписаним за све архитектуре.
    • Механизам за доделу меморије плоча - СЛОБ (слаб аллоцатор), који је дизајниран за системе са малом количином меморије, проглашен је застарелим. Уместо СЛОБ-а, у нормалним условима препоручује се употреба СЛУБ-а или СЛАБ-а. За системе са малом количином меморије, препоручљиво је користити СЛУБ у СЛУБ_ТИНИ режиму.
  • Дисковни подсистем, И/О и системи датотека
    • Направљена су побољшања у Бтрфс-у у циљу решавања проблема „рупе за уписивање“ у имплементацијама РАИД 5/6 (покушај враћања РАИД-а ако дође до пада током писања и немогуће је разумети који блок на ком је РАИД уређају исправно написан, што може довести до уништења блока, што одговара преузетим блоковима). Поред тога, ССД-ови сада аутоматски омогућавају асинхрони рад одбацивања подразумевано када је то могуће, омогућавајући побољшане перформансе због ефикасног груписања операција одбацивања у редове и обраде реда од стране процесора у позадини. Побољшане перформансе операција слања и лсеек, као и ФИЕМАП иоцтл.
    • Проширене су могућности управљања одложеним писањем (повратни запис, позадинско чување промењених података) за блок уређаје. У неким ситуацијама, као што је коришћење мрежних блок уређаја или УСБ дискова, лењо уписивање може довести до велике потрошње РАМ-а. Да би се контролисало понашање лењих писања и задржала величина кеша странице у одређеним границама, нови параметри стрицт_лимит, мин_битес, мак_битес, мин_ратио_фине и мак_ратио_фине су уведени у сисфс (/сис/цласс/бди/).
    • Ф2ФС систем датотека имплементира операцију атомске замене иоцтл, која вам омогућава да упишете податке у датотеку унутар једне атомске операције. Ф2ФС такође додаје кеш опсега блока да би помогао у идентификацији активно коришћених података или података којима се није приступало дуже време.
    • У ект4 ФС су забележене само исправке грешака.
    • Систем датотека нтфс3 нуди неколико нових опција монтирања: „ноцасе“ за контролу осетљивости на велика и мала слова у именима датотека и директоријума; виндовс_наме за забрану креирања имена датотека које садрже знакове који нису важећи за Виндовс; хиде_дот_филес за контролу додељивања скривене ознаке датотеке за датотеке које почињу тачком.
    • Систем датотека Скуасхфс имплементира опцију монтирања „тхреадс=“, која вам омогућава да дефинишете број нити за паралелизацију операција декомпресије. Скуасхфс је такође представио могућност мапирања корисничких ИД-ова монтираних система датотека, који се користе за упаривање датотека одређеног корисника на монтираној страној партицији са другим корисником на тренутном систему.
    • Имплементација ПОСИКС листи контроле приступа (ПОСИКС АЦЛ) је прерађена. Нова имплементација елиминише архитектонске проблеме, поједностављује одржавање базе кода и уводи сигурније типове података.
    • Подсистем фсцрипт, који се користи за транспарентно шифровање датотека и директоријума, додао је подршку за СМ4 алгоритам шифровања (кинески стандард ГБ/Т 32907-2016).
    • Обезбеђена је могућност изградње кернела без подршке за НФСв2 (у будућности планирају да потпуно престану да подржавају НФСв2).
    • Промењена је организација провере права приступа НВМе уређајима. Пружа могућност читања и писања на НВМе уређај ако процес писања има приступ наменској датотеци уређаја (раније је процес морао да има дозволу ЦАП_СИС_АДМИН).
    • Уклоњен је управљачки програм за ЦД/ДВД пакет, који је застарео 2016.
  • Виртуелизација и безбедност
    • Нова метода заштите од ретблеед рањивости је имплементирана у Интел и АМД процесоре, користећи праћење дубине позива, што не успорава рад толико као раније присутна заштита од Ретблеед-а. Да би се омогућио нови режим, предложен је параметар командне линије кернела „ретблеед=стуфф“.
    • Додан је хибридни механизам заштите тока ФинеИБТ инструкција, комбинујући употребу хардверских Интел ИБТ (Индиректно праћење грана) инструкција и софтверску заштиту кЦФИ (Интегритет тока контроле језгра) да би се блокирало кршење нормалног налога за извршавање (контролни ток) као резултат употребе експлоатација које модификују показиваче ускладиштене у меморији на функције. ФинеИБТ дозвољава извршење индиректним скоком само у случају скока на ЕНДБР инструкцију, која се налази на самом почетку функције. Додатно, по аналогији са механизмом кЦФИ, хеш се затим проверава да би се гарантовала непроменљивост показивача.
    • Додата ограничења за блокирање напада који манипулишу генерисањем „упс“ стања, након чега се проблематични задаци завршавају и стање се враћа без заустављања система. Са веома великим бројем позива у стање „упс“, долази до прекорачења референтног бројача (рефцоунт), који омогућава експлоатацију рањивости изазваних дереференцијама НУЛЛ показивача. Да би се заштитили од оваквих напада, кернелу је додато ограничење за максималан број „уп“ окидача, након прекорачења којег ће кернел покренути прелазак у стање „панике“ након чега следи поновно покретање, што неће омогућити постизање број итерација потребних да се препуни рефцоунт. Подразумевано, ограничење је постављено на 10 хиљада „оопс“, али по жељи се може променити преко параметра оопс_лимит.
    • Додати конфигурациони параметар ЛЕГАЦИ_ТИОЦСТИ и сисцтл легаци_тиоцсти да би се онемогућила могућност стављања података у терминал помоћу иоцтл ТИОЦСТИ, пошто се ова функционалност може користити за замену произвољних знакова у бафер за унос терминала и симулацију корисничког уноса.
    • Предлаже се нови тип интерне структуре, енцодед_паге, у којој се нижи битови показивача користе за складиштење додатних информација које се користе за заштиту од случајног дереференцирања показивача (ако је дереференцирање заиста неопходно, ови додатни битови морају прво бити обрисани) .
    • На АРМ64 платформи, у фази покретања, могуће је омогућити или онемогућити софтверску имплементацију механизма Схадов Стацк, који се користи за заштиту од преписивања повратне адресе из функције у случају прекорачења бафера на стеку ( Суштина заштите је да се повратна адреса сачува у посебном стеку „сенка“ након што се контрола пренесе на функцију и дохвати дату адресу пре изласка из функције). Подршка за хардверске и софтверске имплементације Схадов Стацк-а у једном склопу језгра омогућава вам да користите једно језгро на различитим АРМ системима, без обзира на њихову подршку за упутства за аутентификацију показивача. Укључивање софтверске имплементације врши се заменом потребних инструкција у коду током учитавања.
    • Додата подршка за коришћење механизма асинхроног обавештења о излазу на Интел процесорима, који омогућава откривање напада у једном кораку на код који се извршава у СГКС енклавама.
    • Предложен је скуп операција које омогућавају хипервизору да подржи захтеве Интел ТДКС (Трустед Домаин Ектенсионс) гостујућих система.
    • Подешавања израде кернела РАНДОМ_ТРУСТ_БООТЛОАДЕР и РАНДОМ_ТРУСТ_ЦПУ су уклоњена, у корист одговарајућих опција командне линије рандом.труст_боотлоадер и рандом.труст_цпу.
    • Механизам Ландлоцк, који вам омогућава да ограничите интеракцију групе процеса са спољним окружењем, додао је подршку за ЛАНДЛОЦК_АЦЦЕСС_ФС_ТРУНЦАТЕ заставицу, која омогућава контролу извршавања операција скраћивања датотека.
  • Мрежни подсистем
    • За ИПв6, додата је подршка за ПЛБ (Протецтиве Лоад Баланцинг), механизам за балансирање оптерећења између мрежних веза који има за циљ смањење тачака преоптерећења на прекидачима центра података. Променом ознаке тока ИПв6, ПЛБ насумично мења путање пакета како би уравнотежио оптерећење на портовима комутатора. Да би се смањило преуређивање пакета, ова операција се изводи након периода мировања кад год је то могуће. Употреба ПЛБ-а у Гоогле центрима података смањила је неравнотежу оптерећења на портовима комутатора у просеку за 60%, смањила губитак пакета за 33% и смањила кашњење за 20%.
    • Додат је драјвер за МедиаТек уређаје који подржавају Ви-Фи 7 (802.11бе).
    • Додата подршка за 800-гигабитне везе.
    • Додата могућност преименовања мрежних интерфејса у ходу, без прекида рада.
    • Помињање ИП адресе на коју је стигао пакет је додато у дневник поруке о СИН поплави.
    • За УДП је имплементирана могућност коришћења одвојених хеш табела за различите мрежне просторе имена.
    • За мрежне мостове имплементирана је подршка за МАБ (МАЦ Аутхентицатион Бипасс) метод аутентификације.
    • За ЦАН протокол (ЦАН_РАВ), имплементирана је подршка за СО_МАРК режим соцкета за прикључивање филтера саобраћаја заснованих на фвмарк-у.
    • ипсет имплементира нови параметар битмаске који вам омогућава да поставите маску на основу произвољних битова у ИП адреси (на пример, "ипсет цреате сет1 хасх:ип битмаск 255.128.255.0").
    • Додата подршка за обраду интерних заглавља унутар тунелираних пакета у нф_таблес.
  • Оборудование
    • Подсистем „аццел“ је додат имплементацијом оквира за рачунарске акцелераторе, који се могу испоручити или у облику појединачних АСИЦ-ова или у облику ИП блокова унутар СоЦ-а и ГПУ-а. Ови акцелератори су углавном усмерени на убрзање решавања проблема машинског учења.
    • Амдгпу драјвер укључује подршку за ГЦ, ПСП, СМУ и НБИО ИП компоненте. За АРМ64 системе имплементирана је подршка за ДЦН (Дисплаи Цоре Нект). Имплементација заштићеног излаза на екрану је померена са коришћења ДЦН10 на ДЦН21 и сада се може користити при повезивању више екрана.
    • и915 (Интел) драјвер има стабилизовану подршку за дискретне Интел Арц (ДГ2/Алцхемист) видео картице.
    • Ноувеау драјвер подржава НВИДИА ГА102 (РТКС 30) ГПУ засноване на Ампере архитектури. За нва3 (ГТ215) картице је додата могућност контроле позадинског осветљења.
    • Додата подршка за бежичне адаптере засноване на Реалтек 8852БЕ, Реалтек 8821ЦУ, 8822БУ, 8822ЦУ, 8723ДУ (УСБ) и МедиаТек МТ7996 чиповима, Броадцом БЦМ4377/4378/4387 Блуетоотх интерфејсима, као и 8521 Моторцомм етернет контролне интерфејсе НВИ XNUMX Теграи.
    • Додата подршка за АСоЦ (АЛСА систем на чипу) за уграђене звучне чипове ХП Стреам 8, Адвантецх МИЦА-071, Делл СКУ 0Ц11, Интел АЛЦ5682И-ВД, Ксиаоми Редми Боок Про 14 2022, и.МКС93, Армада 38к, РК3588. Додата подршка за аудио интерфејс Фоцусрите Саффире Про 40 Додан аудио кодек Реалтек РТ1318.
    • Додата подршка за Сони паметне телефоне и таблете (Кспериа 10 ИВ, 5 ИВ, Кс и Кс цомпацт, ОнеПлус Оне, 3, 3Т и Норд Н100, Ксиаоми Поцо Ф1 и Ми6, Хуавеи Ватцх, Гоогле Пикел 3а, Самсунг Галаки Таб 4 10.1.
    • Додата подршка за АРМ СоЦ и Аппле Т6000 (М1 Про), Т6001 (М1 Мак), Т6002 (М1 Ултра), Куалцомм МСМ8996 Про (Снапдрагон 821), СМ6115 (Снапдрагон 662), СМ4250 (Снапдрагон 460) СМ6375 (Снапдрагон 695) плоче , СДМ670 (Снапдрагон 670), МСМ8976 (Снапдрагон 652), МСМ8956 (Снапдрагон 650), РК3326 Одроид-Го/рг351, Зикел НСА310С, ИнноЦомм и.МКС8ММ, Одроид Го Ултра.

Истовремено, Латиноамеричка фондација за слободни софтвер формирала је верзију потпуно бесплатног кернела 6.2 - Линук-либре 6.2-гну, очишћену од елемената фирмвера и драјвера који садрже власничке компоненте или делове кода, чији је обим ограничен произвођач. Ново издање чисти нове мрље у ноувеау драјверу. Учитавање блоб-ова је онемогућено у драјверима за мт7622, ​​мт7996 вифи и бцм4377 блуетоотх. Очишћена имена блоб-ова у дтс датотекама за архитектуру Аарцх64. Ажуриран код за чишћење мрља у различитим драјверима и подсистемима. Заустављено је чишћење с5к4ецгк драјвера, пошто је уклоњен из кернела.

Извор: опеннет.ру

Додај коментар