Linux 6.2 ядросының шығарылымы

Екі айлық дамудан кейін Линус Торвальдс Linux ядросының 6.2 шығарылымын ұсынды. Ең көрнекті өзгерістердің қатарында: Copyleft-Next лицензиясы бойынша кодты қабылдауға рұқсат етілді, Btrfs жүйесінде RAID5/6 енгізу жақсарды, Rust тілін қолдауды біріктіру жалғасуда, Retbleed шабуылдарынан қорғауға жұмсалатын шығындар азайды, кері жазу кезінде жадты тұтынуды реттеу мүмкіндігі қосылды, TCP теңдестіру механизмі PLB (Protective Load Balancing) қосылды, гибридті командалар ағынын қорғау механизмі (FineIBT) қосылды, BPF енді өз нысандары мен деректер құрылымдарын анықтау мүмкіндігіне ие. , rv (Runtime Verification) утилитасы қосылған, RCU құлыптарын іске асыру кезінде қуат тұтынуы азайтылды.

Жаңа нұсқа 16843 әзірлеушіден 2178 түзетуді қамтиды, патч өлшемі 62 МБ (өзгертулер 14108 файлға әсер етті, 730195 код жолы қосылды, 409485 жол жойылды). 42-де енгізілген барлық өзгерістердің шамамен 6.2%-ы құрылғы драйверлеріне қатысты, өзгерістердің шамамен 16%-ы аппараттық архитектураларға тән кодты жаңартуға, 12%-ы желілік стекке, 4%-ы файлдық жүйелерге және 3%-ға қатысты. ішкі ядролық ішкі жүйелермен байланысты.

6.2 ядросындағы негізгі инновациялар:

  • Жад және жүйелік қызметтер
    • Copyleft-Next 0.3.1 лицензиясы бойынша берілген ядро ​​кодын және өзгертулерді енгізуге рұқсат етіледі. Copyleft-Next лицензиясын GPLv3 авторларының бірі жасаған және SUSE және Red Hat заңгерлері растағандай, GPLv2 лицензиясымен толық үйлесімді. GPLv2-мен салыстырғанда, Copyleft-Next лицензиясы анағұрлым ықшам және түсінуге оңай (кіріспе бөлігі және ескірген компромисстер туралы ескерту жойылды), бұзушылықтарды жоюдың мерзімдері мен тәртібін анықтайды және ескірген бағдарламалық жасақтамаға арналған copyleft талаптарын автоматты түрде жояды. 15 жастан асқан.

      Copyleft-Next сонымен қатар GPLv2-ден айырмашылығы бұл лицензияны Apache 2.0 лицензиясымен үйлесімді ететін меншікті технологияны беру туралы шартты қамтиды. GPLv2-мен толық үйлесімділікті қамтамасыз ету үшін Copyleft-Next туынды жұмыстың түпнұсқа Copyleft-Next лицензиясына қосымша GPL лицензиясы бойынша берілуі мүмкін екенін анық айтады.

    • Құрылымға RV (Runtime Verification) ішкі жүйесінің өңдеушілерімен пайдаланушы кеңістігінен өзара әрекеттесу үшін интерфейсті қамтамасыз ететін «rv» утилитасы бар, ол ақаулардың болмауына кепілдік беретін жоғары сенімді жүйелерде дұрыс жұмысты тексеруге арналған. Жүйенің күтілетін әрекетін анықтайтын машинаның алдын ала анықталған анықтамалық детерминирленген үлгісіне қарсы нақты орындалу барысын тексеретін бақылау нүктелеріне өңдеушілерді қосу арқылы тексеру орындалу уақытында орындалады.
    • Своп бөлімін жадта қысылған пішінде сақтауға мүмкіндік беретін zRAM құрылғысы (сығымдау арқылы ауыстыру орындалатын жадта блок құрылғысы жасалады) жоғары деңгейге жету үшін балама алгоритмді пайдалана отырып, беттерді қайта орау мүмкіндігін жүзеге асырады. қысу. Негізгі идея бірнеше алгоритмдер (lzo, lzo-rle, lz4, lz4hc, zstd) арасында таңдауды қамтамасыз ету, қысу/декомпрессия жылдамдығы мен қысу деңгейі арасында өздерінің ымыраға келулерін немесе ерекше жағдайларда оңтайлы (мысалы, үлкен өлшемдерді қысу үшін) жад беттері).
    • Пайдаланушы кеңістігінен енгізу/шығару жадын басқару жүйесін - IOMMU (I/O жад-басқару блогын) басқаруға арналған "iommufd" API қосылды. Жаңа API файл дескрипторлары арқылы енгізу/шығару жады бет кестелерін басқаруға мүмкіндік береді.
    • BPF типтерді жасау, жеке нысандарды анықтау, нысандардың жеке иерархиясын құру және байланыстырылған тізімдер сияқты жеке деректер құрылымдарын икемді түрде жасау мүмкіндігін береді. Ұйқы режиміне (BPF_F_SLEEPABLE) өтетін BPF бағдарламалары үшін bpf_rcu_read_{,un}lock() құлыптарын қолдау қосылды. task_struct нысандарын сақтауға қолдау енгізілді. Топтар үшін жергілікті жадты қамтамасыз ететін BPF_MAP_TYPE_CGRP_STORAGE картасы түрі қосылды.
    • RCU (оқу-көшіру-жаңарту) блоктау механизмі үшін «жалқау» кері шақырулардың қосымша механизмі іске асырылады, онда бірнеше кері қоңыраулар пакеттік режимде таймердің көмегімен бірден өңделеді. Ұсынылған оңтайландыруды қолдану бос уақыттарда немесе жүйеде төмен жүктеме кезінде RCU сұрауларын кейінге қалдыру арқылы Android және ChromeOS құрылғыларында қуат тұтынуды 5-10%-ға азайтуға мүмкіндік береді.
    • Атомдық нұсқаулықты орындау кезінде екі CPU кэш жолын кесіп өтетін деректерге байланысты жадтағы теңестірілмеген деректерге қатынасу кезінде пайда болатын бөлінген құлыптарды анықтаған кезде жүйенің әрекетін басқару үшін sysctl split_lock_mitigate қосылды. Мұндай бітелулер өнімділіктің айтарлықтай төмендеуіне әкеледі. split_lock_mitigate мәнін 0-ге орнату тек ақаулық бар екендігі туралы ескерту береді, ал split_lock_mitigate параметрін 1-ге орнату сонымен қатар жүйенің қалған бөлігінің өнімділігін сақтау үшін құлыптауды баяулататын процесті тудырады.
    • PowerPC архитектурасы үшін qspinlock жаңа енгізуі ұсынылды, ол жоғары өнімділікті көрсетеді және ерекше жағдайларда туындайтын кейбір құлыптау мәселелерін шешеді.
    • MSI (Хабар-сигналды үзілістер) үзілістерді өңдеу коды қайта өңделді, жинақталған архитектуралық мәселелерді жойды және жеке өңдегіштерді әртүрлі құрылғыларға байланыстыру үшін қолдауды қосады.
    • Loongson 3 5000 процессорларында қолданылатын және MIPS және RISC-V сияқты жаңа RISC ISA енгізетін LoongArch нұсқаулар жинағы архитектурасына негізделген жүйелер үшін ftrace, стек қорғау, ұйқы және күту режимдерін қолдау жүзеге асырылады.
    • Ортақ анонимді жад аймақтарына атауларды тағайындау мүмкіндігі қамтамасыз етілді (бұрын атаулар тек белгілі бір процеске тағайындалған жеке анонимді жадқа тағайындалуы мүмкін).
    • Басқару тексеруі іске қосылған кезде шақырылатын шартты пәрмендерді байланыстыру үшін пайдаланылатын бақылау триггерін белсендіруге арналған жаңа ядро ​​​​пәрмен жолының "trace_trigger" параметрі қосылды (мысалы, trace_trigger=”sched_switch.stacktrace, егер prev_state == 2″).
    • binutils пакетінің нұсқасына қойылатын талаптар күшейтілді. Енді ядроны құру үшін кем дегенде binutils 2.25 қажет.
    • exec() функциясын шақырған кезде уақыт жүйе уақытынан ерекшеленетін уақыт аттар кеңістігінде процесті орналастыру мүмкіндігі қосылды.
    • Біз Rust-for-Linux тармағынан драйверлер мен ядро ​​модульдерін әзірлеуге арналған екінші тіл ретінде Rust тілін пайдалануға қатысты қосымша функцияларды тасымалдауды бастадық. Rust қолдауы әдепкі бойынша өшірілген және Rust қажетті ядро ​​құру тәуелділігі ретінде қосылуына әкелмейді. Соңғы шығарылымда ұсынылған негізгі функционалдылық Vec түрі және pr_debug!(), pr_cont!() және pr_alert!() макростары, сондай-ақ «#[vtable» процедуралық макросы сияқты төмен деңгейлі кодты қолдау үшін кеңейтілген. ]», бұл функциялардағы көрсеткіш кестелерімен жұмыс істеуді жеңілдетеді. Болашақ шығарылымдарда Rust-та толыққанды драйверлерді құруға мүмкіндік беретін ядроның ішкі жүйелеріне жоғары деңгейлі Rust байланыстыруларын қосу күтілуде.
    • Ядрода қолданылатын "char" түрі енді барлық архитектуралар үшін әдепкі бойынша қолтаңбасыз деп жарияланды.
    • Жад көлемі аз жүйелерге арналған SLOB (плита бөлгіші) тақта жадын бөлу механизмі ескірген деп жарияланды. SLOB орнына, қалыпты жағдайда SLUB немесе SLAB пайдалану ұсынылады. Жад көлемі аз жүйелер үшін SLUB-ті SLUB_TINY режимінде пайдалану ұсынылады.
  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • RAID 5/6 енгізулеріндегі «жазу тесігі» мәселесін шешуге бағытталған Btrfs жақсартулары жасалды (егер жазу кезінде апат орын алса және қай блокта қай RAID құрылғысы дұрыс жазылғанын түсіну мүмкін болмаса, RAID қалпына келтіру әрекеті, бұл блоктың бұзылуына әкелуі мүмкін, андерриттелген блоктарға сәйкес). Бұған қоса, SSD дискілері енді мүмкіндігінше әдепкі бойынша асинхронды жою операциясын автоматты түрде қосады, бұл жою операцияларын кезектерге тиімді топтастыру және кезекті фондық процессормен өңдеу арқасында өнімділікті жақсартуға мүмкіндік береді. Жіберу және іздеу операцияларының, сондай-ақ FIEMAP ioctl өнімділігі жақсарды.
    • Блоктық құрылғылар үшін кейінге қалдырылған жазуды (қайта жазу, өзгертілген деректерді фондық сақтау) басқару мүмкіндіктері кеңейтілді. Кейбір жағдайларда, мысалы, желілік блок құрылғыларын немесе USB дискілерін пайдалану кезінде, жалқау жазулар ЖЖҚ көп тұтынуына әкелуі мүмкін. Жалқау жазулардың әрекетін бақылау және бет кэшінің өлшемін белгілі бір шектерде сақтау үшін sysfs (/sys/class/bdi/) ішінде strict_limit, min_bytes, max_bytes, min_ratio_fine және max_ratio_fine жаңа параметрлері енгізілді.
    • F2FS файлдық жүйесі бір атомдық операцияның ішінде файлға деректерді жазуға мүмкіндік беретін атомдық ауыстыру ioctl операциясын жүзеге асырады. F2FS белсенді пайдаланылған деректерді немесе ұзақ уақыт бойы қол жеткізілмеген деректерді анықтауға көмектесу үшін блок ауқымының кэшін қосады.
    • Ext4 FS жүйесінде тек қателерді түзету ескеріледі.
    • Ntfs3 файлдық жүйесі бірнеше жаңа орнату опцияларын ұсынады: файл және каталог атауларындағы регистр сезімталдығын басқару үшін «nocase»; windows_name Windows үшін жарамсыз таңбаларды қамтитын файл атауларын жасауға тыйым салу үшін; нүктеден басталатын файлдарға жасырын файл белгісінің тағайындалуын басқару үшін hide_dot_files.
    • Squashfs файлдық жүйесі декомпрессия операцияларын параллельдеу үшін ағындар санын анықтауға мүмкіндік беретін «threads=» орнату опциясын жүзеге асырады. Squashfs сонымен қатар орнатылған шетелдік бөлімдегі белгілі бір пайдаланушының файлдарын ағымдағы жүйедегі басқа пайдаланушымен сәйкестендіру үшін пайдаланылатын орнатылған файлдық жүйелердің пайдаланушы идентификаторларын салыстыру мүмкіндігін ұсынды.
    • POSIX қатынасты басқару тізімдерін (POSIX ACL) енгізу қайта өңделді. Жаңа енгізу архитектуралық мәселелерді жояды, кодтық базаға техникалық қызмет көрсетуді жеңілдетеді және қауіпсіз деректер түрлерін енгізеді.
    • Файлдар мен каталогтарды мөлдір шифрлау үшін қолданылатын fscrypt ішкі жүйесі SM4 шифрлау алгоритміне қолдауды қосты (Қытай стандарты GB/T 32907-2016).
    • NFSv2 қолдауынсыз ядроны құру мүмкіндігі қамтамасыз етілді (болашақта олар NFSv2 қолдауын толығымен тоқтатуды жоспарлап отыр).
    • NVMe құрылғыларына кіру құқықтарын тексеру ұйымы өзгертілді. Жазу процесінде құрылғының арнайы файлына кіру мүмкіндігі болса, NVMe құрылғысына оқу және жазу мүмкіндігін береді (бұрын бұл процесте CAP_SYS_ADMIN рұқсаты болуы керек еді).
    • 2016 жылы ескірген CD/DVD пакетінің драйвері жойылды.
  • Виртуализация және қауіпсіздік
    • Retbleed осалдығынан қорғаудың жаңа әдісі Intel және AMD процессорларында қоңырау тереңдігін бақылау арқылы енгізілген, ол бұрынғы Retbleed қорғанысы сияқты жұмысты бәсеңдетпейді. Жаңа режимді қосу үшін ядро ​​пәрмен жолы параметрі «retbleed=stuff» ұсынылды.
    • Қолдану нәтижесінде қалыпты орындау тәртібін (басқару ағынын) бұғаттау үшін Intel IBT (жанама тармақты қадағалау) нұсқаулары мен бағдарламалық қорғауды kCFI (ядроны басқару ағынының тұтастығы) пайдалануды біріктіретін гибридті FineIBT нұсқаулар ағынын қорғау механизмі қосылды. функциялар бойынша жадта сақталған көрсеткіштерді өзгертетін эксплуатациялар. FineIBT жанама секіру арқылы орындауға функцияның ең басында орналасқан ENDBR нұсқауына өту жағдайында ғана мүмкіндік береді. Сонымен қатар, kCFI механизміне ұқсас, көрсеткіштердің өзгермейтіндігіне кепілдік беру үшін хэштер тексеріледі.
    • «Оп» күйлерінің генерациясын басқаратын шабуылдарды бұғаттау үшін шектеулер қосылды, содан кейін проблемалық тапсырмалар орындалады және жүйені тоқтатпай күй қалпына келтіріледі. "Оп" күйіне шақырулардың өте көп санымен NULL көрсеткішінің сілтемелерінен туындаған осалдықтарды пайдалануға мүмкіндік беретін анықтамалық есептегіш толып кету орын алады (қайта есептеу). Мұндай шабуылдардан қорғау үшін ядроға «ойп» триггерлерінің максималды санына шектеу қосылды, одан асып кеткеннен кейін ядро ​​«дүрбелең» күйіне көшуді бастайды, содан кейін қайта жүктеуге қол жеткізуге мүмкіндік бермейді. қайта есептеуді толтыру үшін қажетті итерациялар саны. Әдепкі бойынша, шектеу 10 мың «ойп» деп орнатылған, бірақ қажет болса, оны oops_limit параметрі арқылы өзгертуге болады.
    • ioctl TIOCSTI арқылы терминалға деректерді қою мүмкіндігін өшіру үшін LEGACY_TIOCSTI және sysctl legacy_tiocsti конфигурация параметрі қосылды, себебі бұл функцияны терминал кіріс буферіне ерікті таңбаларды ауыстыру және пайдаланушы енгізуін имитациялау үшін пайдалануға болады.
    • Ішкі құрылымның жаңа түрі, кодталған_бет ұсынылды, онда көрсеткіштің төменгі биттері көрсеткіштің кездейсоқ жойылуынан қорғау үшін пайдаланылатын қосымша ақпаратты сақтау үшін пайдаланылады (егер сілтеме іс жүзінде қажет болса, бұл қосымша биттерді алдымен тазалау керек) .
    • ARM64 платформасында жүктеу сатысында стекке буфер толып кеткен жағдайда функциядан қайтару мекенжайын қайта жазудан қорғау үшін қолданылатын Shadow Stack механизмінің бағдарламалық жасақтамасын іске асыруды қосуға немесе өшіруге болады ( қорғаудың мәні басқаруды функцияға ауыстырғаннан кейін қайтару мекенжайын бөлек «көлеңкелі» стекке сақтау және функциядан шықпас бұрын берілген мекенжайды алу). Shadow Stack-тің аппараттық және бағдарламалық қамтамасыз етуді бір ядро ​​жинағында іске асыруға қолдау көрсету бір ядроны әртүрлі ARM жүйелерінде олардың көрсеткіштің аутентификациясына арналған нұсқауларды қолдауына қарамастан пайдалануға мүмкіндік береді. Бағдарламалық қамтамасыз етуді енгізуді қосу жүктеу кезінде кодта қажетті нұсқауларды ауыстыру арқылы жүзеге асырылады.
    • Intel процессорларында SGX анклавтарында орындалатын кодқа бір қадамдық шабуылдарды анықтауға мүмкіндік беретін асинхронды шығу хабарландыру механизмін пайдалану үшін қосылды.
    • Гипервизорға Intel TDX (Сенімді домен кеңейтімдері) қонақ жүйелерінен сұрауларды қолдауға мүмкіндік беретін операциялар жиынтығы ұсынылады.
    • RANDOM_TRUST_BOOTLOADER және RANDOM_TRUST_CPU ядро ​​құрастыру параметрлері random.trust_bootloader және random.trust_cpu сәйкес пәрмен жолы опцияларының пайдасына жойылды.
    • Процестер тобының сыртқы ортамен әрекеттесуін шектеуге мүмкіндік беретін Landlock механизмі LANDLOCK_ACCESS_FS_TRUNCATE жалаушасын қолдауды қосты, бұл файлдарды қысқарту операцияларының орындалуын бақылауға мүмкіндік береді.
  • Желілік ішкі жүйе
    • IPv6 үшін деректер орталығының қосқыштарындағы шамадан тыс жүктелу нүктелерін азайтуға бағытталған желілік байланыстар арасындағы жүктемені теңестіру механизмі PLB (Қорғаушы жүктемені теңестіру) қолдауы қосылды. IPv6 ағынының белгісін өзгерту арқылы PLB коммутатор порттарындағы жүктемені теңестіру үшін пакет жолдарын кездейсоқ өзгертеді. Пакеттердің ретін өзгертуді азайту үшін, бұл әрекет мүмкіндігінше бос уақыт кезеңінен кейін орындалады. Google деректер орталықтарында PLB пайдалану коммутатор порттарындағы жүктеме теңгерімсіздігін орташа есеппен 60%-ға, пакеттердің жоғалуын 33%-ға және кешігуді 20%-ға азайтты.
    • Wi-Fi 7 (802.11be) қолдайтын MediaTek құрылғыларына арналған драйвер қосылды.
    • 800 гигабиттік сілтемелерге қолдау қосылды.
    • Жұмысты тоқтатпай, желілік интерфейстердің атын өзгерту мүмкіндігі қосылды.
    • Пакет келген IP мекенжайы туралы ескерту SYN тасқыны туралы журнал хабарламаларына қосылды.
    • UDP үшін әртүрлі желі аттар кеңістігі үшін бөлек хэш кестелерін пайдалану мүмкіндігі іске асырылды.
    • Желілік көпірлер үшін MAB (MAC Authentication Bypass) аутентификация әдісін қолдау жүзеге асырылды.
    • CAN протоколы (CAN_RAW) үшін fwmark негізіндегі трафик сүзгілерін қосу үшін SO_MARK ұяшығы режимін қолдау жүзеге асырылды.
    • ipset IP мекенжайындағы ерікті биттерге негізделген маска орнатуға мүмкіндік беретін жаңа нүкте маскасының параметрін жүзеге асырады (мысалы, «ipset set1 хэш: ip бит маскасын 255.128.255.0 құру»).
    • nf_tables үшін туннельденген пакеттер ішіндегі ішкі тақырыптарды өңдеуге қолдау қосылды.
  • Жабдық
    • Жеке ASIC түрінде де, SoC және GPU ішіндегі IP блоктары түрінде де жеткізілуі мүмкін есептеу үдеткіштері үшін негізді жүзеге асырумен «жылдамдау» ішкі жүйесі қосылды. Бұл акселераторлар негізінен машиналық оқыту мәселелерін шешуді жеделдетуге бағытталған.
    • Amdgpu драйвері GC, PSP, SMU және NBIO IP құрамдастарын қолдауды қамтиды. ARM64 жүйелері үшін DCN (Display Core Next) қолдауы жүзеге асырылады. Қорғалған экран шығысын іске асыру DCN10 пайдаланудан DCN21 түріне ауыстырылды және енді бірнеше экрандарды қосқанда пайдалануға болады.
    • i915 (Intel) драйверінде дискретті Intel Arc (DG2/Alchemist) бейне карталары үшін тұрақтандырылған қолдау бар.
    • Nouveau драйвері Ampere архитектурасына негізделген NVIDIA GA102 (RTX 30) графикалық процессорларына қолдау көрсетеді. Nva3 (GT215) карталары үшін артқы жарықты басқару мүмкіндігі қосылды.
    • Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) және MediaTek MT7996 чиптеріне, Broadcom BCM4377/4378/4387 Bluetooth интерфейстеріне, сондай-ақ Motorcomm 8521BE және NGEVIA TeeXNUMXnet Controls NGEVIA басқаруына негізделген сымсыз адаптерлерге қолдау қосылды.
    • HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 кірістірілген дыбыс чиптеріне ASoC (ALSA System on Chip) қолдауы қосылды. Focusrite Saffire Pro 40 аудио интерфейсіне қолдау қосылды Realtek RT1318 аудио кодек қосылды.
    • Sony смартфондары мен планшеттеріне қолдау қосылды (Xperia 10 IV, 5 IV, X және X compact, OnePlus One, 3, 3T және Nord N100, Xiaomi Poco F1 және Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • ARM SoC және Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460) (SM6375na) қолдауы қосылды. тақталар , SDM695 (Snapdragon 670), MSM670 (Snapdragon 8976), MSM652 (Snapdragon 8956), RK650 Odroid-Go/rg3326, Zyxel NSA351S, InnoComm i.MX310MM, Od.

Сонымен қатар, Латын Америкасының еркін бағдарламалық қамтамасыз ету қоры толығымен тегін ядро ​​​​6.2 нұсқасын қалыптастырды - Linux-libre 6.2-gnu, микробағдарлама элементтерінен және меншікті құрамдастарды немесе код бөлімдерін қамтитын драйверлерден тазартылған, қолдану аясы шектелген. өндіруші. Жаңа шығарылым nouveau драйверіндегі жаңа дақтарды тазартады. Blob жүктеу mt7622, ​​mt7996 wifi және bcm4377 bluetooth драйверлерінде өшірілген. Aarch64 архитектурасы үшін dts файлдарындағы блоб атаулары тазартылды. Әртүрлі драйверлер мен ішкі жүйелерде жаңартылған блобты тазалау коды. s5k4ecgx драйверін тазалауды тоқтатты, себебі ол ядродан жойылған.

Ақпарат көзі: opennet.ru

пікір қалдыру