Linux 5.19 ядросунун чыгарылышы

Эки айлык иштеп чыгуудан кийин, Линус Торвалдс Linux ядросунун 5.19. Эң көрүнүктүү өзгөрүүлөрдүн арасында: LoongArch процессорунун архитектурасын колдоо, "BIG TCP" патчтарын интеграциялоо, fscache'де талап боюнча режим, a.out форматын колдоо үчүн кодду алып салуу, микропрограмманы кысуу үчүн ZSTD колдонуу мүмкүнчүлүгү, эстутумду колдонуучу мейкиндигинен чыгарууну башкаруу, псевдококустук сандар генераторунун ишенимдүүлүгүн жана иштешин жогорулатуу, Intel IFS (In-Field Scan), AMD SEV-SNP (Коопсуз уяланган пейджинг), Intel TDX (Ишенимдүү Домен Кеңейтүүлөрү) жана ARM колдоо SME (Scalable Matrix Extension) кеңейтүүлөрү.

Жарыяда, Линус 6.0.x бутагы версия номериндеги биринчи санды өзгөртүү үчүн жетиштүү релиздерди топтогондуктан, кийинки ядро ​​​​релизинин номери 5 болорун айтты. Номерлөөнүн өзгөрүшү эстетикалык себептерден улам ишке ашырылат жана катардагы көп сандагы маселелердин топтолушуна байланыштуу ыңгайсыздыкты басаңдатуучу формалдуу кадам болуп саналат.

Линус ошондой эле релизди түзүү үчүн ARM64 архитектурасына негизделген Apple ноутбукун (Apple Silicon) Asahi Linux дистрибуциясынын негизиндеги Linux чөйрөсү менен колдонгонун айтты. Бул Линустун негизги жумушчу станциясы эмес, бирок ал платформаны анын ядролук иштөөсүнө ылайыктуулугун текшерүү жана колунда жеңил ноутбук менен саякаттап жүргөндө ядронун релиздерин чыгара алгыдай болушу үчүн колдонгон. Буга чейин, көп жылдар мурун, Линус иштеп чыгуу үчүн Apple жабдууларын колдонуу тажрыйбасына ээ болгон - ал бир жолу ppc970 CPU жана Macbook Air ноутбукунун негизиндеги компьютерди колдонгон.

Жаңы версияда 16401 иштеп чыгуучунун 2190 16206 оңдоосу камтылган (акыркы чыгарылышта 2127 90 иштеп чыгуучунун 13847 1149456 оңдоосу болгон), патчтын көлөмү 349177 Мб (өзгөрүүлөр 39 5.19 файлга таасирин тийгизген, 21 11 4 код саптары кошулган, 3 XNUMX сап өчүрүлгөн). XNUMX киргизилген бардык өзгөртүүлөрдүн XNUMX%га жакыны түзмөк драйверлерине тиешелүү, өзгөрүүлөрдүн болжол менен XNUMX%ы аппараттык архитектураларга мүнөздүү кодду жаңыртууга, XNUMX%ы тармактык стекке, XNUMX%ы файл тутумдарына жана XNUMX%га тиешелүү. ички ядронун подсистемалары менен байланышкан.

5.19 ядросундагы негизги инновациялар:

  • Диск подсистемасы, киргизүү/чыгаруу жана файл системалары
    • Окуу үчүн гана бөлүктөрдө колдонууга арналган EROFS (Okmak үчүн гана жакшыртылган файл системасы) файл системасы маалыматтарды кэштештирүүнү камсыз кылган fscache подсистемасын колдонууга айландырылган. Өзгөртүү EROFS негизиндеги сүрөттөлүштөн көп сандагы контейнерлер ишке киргизилген системалардын иштешин кыйла жакшыртты.
    • Талап боюнча окуу режими fscache подсистемасына кошулду, ал EROFSти оптималдаштыруу үчүн колдонулат. Жаңы режим жергиликтүү тутумда жайгашкан FS сүрөттөрүнөн окуу кэшин уюштурууга мүмкүндүк берет. Тармактык файл тутумдары аркылуу берилүүчү маалыматтарды локалдык файлдык тутумда кэштоого багытталган баштапкы жеткиликтүү иштөө режиминен айырмаланып, "талап боюнча" режими маалыматтарды алуу жана кэшке жазуу функцияларын өзүнчө бөлүштүрөт. колдонуучу мейкиндигинде иштеп жаткан фондо процесс.
    • XFS i-түйүнүндө миллиарддаган кеңейтилген атрибуттарды сактоо мүмкүнчүлүгүн берет. Бир файл үчүн экстенттердин максималдуу саны 4 миллиарддан 247ге чейин көбөйтүлдү. Бир эле учурда бир нече кеңейтилген файл атрибуттарын атомдук жаңыртуу үчүн режим ишке ашырылды.
    • Btrfs файл системасы кулпулар менен иштөөнү оптималдаштырды, бул түздөн-түз nowait режиминде жазууда өндүрүмдүүлүктү болжол менен 7% жогорулатууга мүмкүндүк берди. NOCOW режиминде операциялардын аткаруу (көчүрмө-жазуусу жок) болжол менен 3% га жогорулаган. "Жөнөтүү" буйругун иштетүүдө барактын кэшиндеги жүк азайды. Кошумча барактардын минималдуу өлчөмү 64Кдан 4Кга чейин кыскартылды (өзөк барактарынан кичине кичирээк барактар ​​колдонулушу мүмкүн). Радикс дарагын колдонуудан XArrays алгоритмине өтүү жасалды.
    • Сурамдарга жооп берүүнү токтоткон кардар тарабынан коюлган кулпулоо абалынын сакталышын узартуу үчүн NFS серверине режим кошулду. Жаңы режим башка кардар атаандаш кулпуну суранмайынча, кулпуну тазалоону бир күнгө кечиктирүүгө мүмкүндүк берет. Кадимки режимде бөгөттөө кардар жооп бербей калгандан кийин 90 секунддан кийин тазаланат.
    • Fanotify FS ичиндеги окуяга көз салуу подсистемасы FAN_MARK_EVICTABLE желекчесин ишке ашырат, анын жардамы менен сиз кэште максаттуу i-түйүндөрдү кадоону өчүрө аласыз, мисалы, алардын бөлүктөрүн кэшке кадап койбостон, суб-тармактарды этибарга албоо.
    • FAT32 файлдык тутумунун драйвери файл жөнүндө кеңейтилген маалыматты кайтарып берүүчү stat() эффективдүү жана функционалдык версиясын ишке ашыруу менен statx тутумунун чакыруусу аркылуу файлды түзүү убактысы жөнүндө маалыматты алуу үчүн колдоону кошту.
    • ExFAT драйверине ырааттуу секторлор боюнча клирингдин ордуна, "dirsync" режими активдүү болгондо секторлордун тобун бир убакта тазалоого мүмкүндүк берүү үчүн олуттуу оптималдаштыруу жасалды. Оптималдаштыруудан кийин блоктордун суроо-талаптарынын санын азайтуу менен, SD картада көп сандагы каталогдорду түзүү көрсөткүчү кластердин көлөмүнө жараша 73-85% га өстү.
    • Ядро ntfs3 драйверине биринчи түзөтүүчү жаңыртууну камтыйт. Өткөн жылдын октябрында ntfs3 5.15 ядросуна киргизилгенден бери, драйвер жаңыртылган эмес жана иштеп чыгуучулар менен байланыш үзүлгөн, бирок иштеп чыгуучулар азыр өзгөртүүлөрдү жарыялоону улантышты. Сунушталган патчтар эс тутумдун агып кетишине жана бузулушуна алып келген каталарды жок кылды, xfstests аткаруудагы көйгөйлөрдү чечти, пайдаланылбаган кодду тазалады жана каталарды оңдоду.
    • OverlayFS үчүн орнотулган файл тутумдарынын колдонуучу идентификаторлорун картага салуу мүмкүнчүлүгү ишке ашырылган, ал орнотулган чет өлкөлүк бөлүмдөгү белгилүү бир колдонуучунун файлдарын учурдагы системадагы башка колдонуучу менен дал келтирүү үчүн колдонулат.
  • Эстутум жана система кызматтары
    • MIPS жана RISC-V сыяктуу жаңы RISC ISA ишке ашырган Loongson 3 5000 процессорлорунда колдонулган LoongArch инструкциялар топтому архитектурасына баштапкы колдоо кошулду. LoongArch архитектурасы үч түрдүү болот: ажыратылган 32-бит (LA32R), кадимки 32-бит (LA32S) жана 64-бит (LA64).
    • 5.1 релизинде эскирген a.out аткарылуучу файл форматын колдоо үчүн код алынып салынды. a.out форматы Linux тутумдарында көптөн бери эскирген жана a.out файлдарын генерациялоо демейки Linux конфигурацияларында заманбап куралдар тарабынан колдоого алынбайт. a.out файлдары үчүн жүктөгүч толугу менен колдонуучу мейкиндигинде ишке ашырылышы мүмкүн.
    • x86 үчүн өзгөчө жүктөө параметрлерин колдоо токтотулду: nosp, nosmap, nosmep, noexec жана noclflush).
    • Көптөн бери колдоосуз калган эскирген CPU h8300 архитектурасын (Renesas H8/300) колдоо токтотулган.
    • Атомдук инструкцияны аткарууда маалыматтар эки CPU кэш сызыгын кесип өткөндүктөн, эстутумдагы теңдештирилбеген маалыматтарга жетүү учурунда пайда болгон бөлүнүү кулпуларын («бөлүнгөн кулпулар») аныктоого жооп берүүгө байланыштуу кеңейтилген мүмкүнчүлүктөр. Мындай бөгөт коюулар аткаруунун олуттуу төмөндөшүнө алып келет. Эгерде мурда, демейки боюнча, ядро ​​блокировкага алып келген процесс жөнүндө маалымат менен эскертүү берип турган болсо, эми системанын калган бөлүгүнүн иштешин сактап калуу үчүн көйгөйлүү процесс дагы басаңдатылат.
    • Intel процессорлорунда ишке ашырылган IFS (In-Field Scan) механизми үчүн кошумча колдоо, катаны оңдоо коддорунун (ECC) же паритет биттеринин негизинде стандарттык куралдар тарабынан аныкталбаган көйгөйлөрдү аныктай ала турган төмөнкү деңгээлдеги CPU диагностикалык тесттерин жүргүзүүгө мүмкүндүк берет. . Аткарылган тесттер микрокод жаңыртууларына окшош иштелип чыккан, жүктөлүп алынуучу микропрограмма түрүндө. Сыноонун натыйжалары sysfs аркылуу жеткиликтүү.
    • Ядрого bootconfig файлын киргизүү мүмкүнчүлүгү кошулду, бул буйрук сабынын варианттарынан тышкары, орнотуулар файлы аркылуу ядронун параметрлерин аныктоого мүмкүндүк берет. Кыстаруу 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"' чогултуу опциясы аркылуу ишке ашырылат. Буга чейин bootconfig initrd сүрөтүнө тиркөө аркылуу аныкталган. Ядрого интеграциялоо жүктөө конфигурациясын initrd жок конфигурацияларда колдонууга мүмкүндүк берет.
    • Zstandard алгоритминин жардамы менен кысылган микропрограмманы жүктөө мүмкүнчүлүгү ишке ашырылган. /sys/class/firmware/* башкаруу файлдарынын топтому sysfsге кошулду, бул сизге колдонуучу мейкиндигинен микропрограмманы жүктөөнү баштоого мүмкүндүк берет.
    • io_uring асинхрондук киргизүү/чыгаруу интерфейси жаңы желекти сунуштайт, IORING_RECVSEND_POLL_FIRST, ал орнотулганда, адегенде сурамжылоо аркылуу иштетиле турган тармак операциясын жөнөтөт, ал операцияны бир аз кечигүү менен иштетүү алгылыктуу болгон учурларда ресурстарды үнөмдөй алат. io_uring ошондой эле socket() тутумдук чалуу үчүн колдоону кошту, файлдын дескрипторлорун башкарууну жөнөкөйлөтүү үчүн жаңы желектерди сунуштады, accept() чалуусунда бир эле учурда бир нече туташууну кабыл алуу үчүн "көп атышуу" режимин кошту жана NVMe багыттоо операцияларын кошту. түзмөккө түздөн-түз буйрук берет.
    • Xtensa архитектурасы ядронун ичиндеги жарыш шарттарын динамикалык түрдө аныктоо үчүн иштелип чыккан KCSAN (Yadro Concurrency Sanitizer) мүчүлүштүктөрдү оңдоо куралына колдоо көрсөтөт. Ошондой эле уйку режимин жана сопроцессорлорду колдоо кошулду.
    • m68k архитектурасы (Motorola 68000) үчүн Android Goldfish эмуляторуна негизделген виртуалдык машина (платформа симулятору) ишке ашырылган.
    • AArch64 архитектурасы үчүн Armv9-A SME (Scalable Matrix Extension) кеңейтүүлөрүн колдоо ишке ашырылган.
    • eBPF подсистемасы терилген көрсөткүчтөрдү карта структураларында сактоого мүмкүндүк берет, ошондой эле динамикалык көрсөткүчтөрдү колдоону кошот.
    • memory.reclaim файлын колдонуу менен колдонуучу мейкиндигин башкарууну колдогон жаңы проактивдүү эстутумду калыбына келтирүү механизми сунушталууда. Көрсөтүлгөн файлга санды жазуу cgroup менен байланышкан топтомдон байттардын тиешелүү санын чыгарууга аракет кылат.
    • Zswap механизмин колдонуу менен своп бөлүмүндөгү маалыматтарды кысуу учурунда эстутумду колдонуунун тактыгы жакшыртылды.
    • RISC-V архитектурасы үчүн 32 биттик системаларда 64 биттик аткарылуучу файлдарды иштетүү үчүн колдоо көрсөтүлөт, эстутум барактарына чектөөчү атрибуттарды байлоо үчүн режим кошулду (мисалы, кэштөө өчүрүү үчүн) жана kexec_file_load() функциясы ишке ашырылат. .
    • 32 биттик Armv4T жана Armv5 системаларын колдоону ишке ашыруу ар кандай ARM системаларына ылайыктуу универсалдуу көп платформалуу ядро ​​түзүмдөрүндө колдонууга ылайыкташтырылган.
  • Виртуалдаштыруу жана коопсуздук
    • EFI подсистемасы жашыруун маалыматты конок системасына ачыкка чыгарбастан конфиденциалдуу түрдө өткөрүп берүү мүмкүнчүлүгүн ишке ашырат. Маалыматтар securityfs ичиндеги коопсуздук/коко каталогу аркылуу берилет.
    • Түп колдонуучусунун ядрого кирүү мүмкүнчүлүгүн чектеген жана UEFI Secure Boot айланып өтүү жолдорун бөгөттөөчү бөгөттөн коргоо режими ядронун мүчүлүштүктөрүн оңдоочу менен манипуляциялоо аркылуу коргоону айланып өтүүгө мүмкүндүк берген боштукту жок кылды.
    • Псевдококустук сандар генераторунун ишенимдүүлүгүн жана иштешин жакшыртууга багытталган тактар ​​камтылган.
    • Clang 15ти колдонуу менен курууда ядро ​​структураларын рандомизациялоо механизмин колдоо ишке ашырылат.
    • Процесстердин тобунун тышкы чөйрө менен өз ара аракеттенүүсүн чектөөгө мүмкүндүк берүүчү Landlock механизми файлдын атын өзгөртүү операцияларынын аткарылышын көзөмөлдөөгө мүмкүндүк берүүчү эрежелерди колдоону камсыз кылат.
    • Санариптик кол тамгаларды жана хэштерди колдонуу менен операциялык системанын компоненттеринин бүтүндүгүн текшерүү үчүн иштелип чыккан IMA (Integrity Measurement Architecture) подсистемасы файлды текшерүү үчүн fs-verity модулун колдонууга которулду.
    • eBPF подсистемасына артыкчылыксыз кирүү мүмкүнчүлүгүн өчүрүүдөгү аракеттердин логикасы өзгөртүлдү - мурда bpf() тутумунун чалуусу менен байланышкан бардык буйруктар өчүрүлгөн жана 5.19 версиясынан баштап объекттерди түзүүгө алып келбеген буйруктарга жетүү калган. . Бул жүрүм-турум BPF программасын жүктөө үчүн артыкчылыктуу процессти талап кылат, бирок андан кийин артыкчылыксыз процесстер программа менен иштеше алат.
    • AMD SEV-SNP (Secure Nested Paging) кеңейтүүсү үчүн кошумча колдоого алынган, ал уяланган эс баракчасынын таблицалары менен коопсуз иштөөнү камсыз кылат жана AMD SEV (Коопсуз Шифрленген Виртуализация) кыйгап өтүүгө мүмкүндүк берген AMD EPYC процессорлорундагы “undeSErVed” жана “Severity” чабуулдарынан коргойт. ) коргоо механизми.
    • Виртуалдык машиналардын шифрленген эс тутумуна кирүү үчүн үчүнчү тараптын аракеттерин бөгөт коюуга мүмкүндүк берген Intel TDX (Ишенимдүү Домен Кеңейтүүлөрү) механизми үчүн кошумча колдоо.
    • Блоктук түзмөктөрдү эмуляциялоо үчүн колдонулган virtio-blk драйвери добуш берүүнүн жардамы менен киргизүү/чыгаруу үчүн колдоону кошту, бул тесттерге ылайык, күтүү убактысын 10% га кыскартты.
  • Тармактык подсистема
    • Пакет бир катар BIG TCP патчтарын камтыйт, алар жогорку ылдамдыктагы ички маалымат борборунун тармактарынын ишин оптималдаштыруу үчүн TCP пакетинин максималдуу пакеттик өлчөмүн 4 ГБ чейин көбөйтүүгө мүмкүндүк берет. 16 биттик аталыш талаасынын өлчөмү менен пакеттин көлөмүн ушундай эле көбөйтүүгө IP башындагы өлчөмү 0 коюлган, ал эми иш жүзүндөгү өлчөмү өзүнчө 32 биттикте берилүүчү "jumbo" пакеттерин ишке ашыруу аркылуу жетишилет. өзүнчө тиркелген темада талаа. Ишти текшерүүдө пакеттин өлчөмүн 185 КБ кылып коюу өткөрүү жөндөмдүүлүгүн 50% га жогорулатты жана маалыматтарды берүүнүн кечигүү убактысын бир топ кыскартты.
    • Пакеттерди түшүрүү себептерин (себеп коддору) көзөмөлдөө үчүн тармактык стекке инструменттерди интеграциялоо боюнча иштер улантылды. Себеп коду пакет менен байланышкан эстутум бошогондо жөнөтүлөт жана баш каталар, rp_filter спуфинг аныктоо, жараксыз текшерүү суммасы, эстутумда жок, IPSec XFRM эрежелери иштетилген, жараксыз катар номери TCP ж.
    • Кээ бир MPTCP функцияларын колдонууга мүмкүн болбогон жагдайларда кадимки TCP колдонуу үчүн MPTCP (MultiPath TCP) туташуусун өчүрүү үчүн колдоо кошулду. MPTCP ар кандай IP даректери менен байланышкан ар кандай тармак интерфейстери аркылуу бир эле учурда бир нече маршруттар боюнча пакеттерди жеткирүү менен TCP байланышынын иштешин уюштуруу үчүн TCP протоколунун кеңейтүүсү. Колдонуучу мейкиндигинен MPTCP агымдарын көзөмөлдөө үчүн API кошулду.
  • жабдуулар
    • Amdgpu драйверине байланыштуу 420 миңден ашык код саптары кошулду, анын ичинен 400 миңдей сап AMD GPU драйвериндеги ASIC реестринин маалыматтары үчүн автоматтык түрдө түзүлгөн баш файлдар жана дагы 22.5 миң сап AMD SoC21 үчүн колдоонун алгачкы ишке ашырылышын камсыз кылат. AMD GPU үчүн драйвердин жалпы көлөмү 4 миллион сап коддон ашты. SoC21ден тышкары, AMD драйвери SMU 13.x (Системаны башкаруу бирдиги), USB-C жана GPUVM үчүн жаңыртылган колдоону камтыйт жана RDNA3 (RX 7000) жана CDNA (AMD Instinct) кийинки муундарын колдоого даяр. платформалар.
    • i915 драйвери (Intel) кубаттуулукту башкарууга байланыштуу кеңейтилген мүмкүнчүлүктөргө ээ. Ноутбуктарда колдонулган Intel DG2 (Arc Alchemist) GPU'ларына идентификаторлор кошулду, Intel Raptor Lake-P (RPL-P) платформасына баштапкы колдоо көрсөтүлдү, Arctic Sound-M графикалык карталары жөнүндө маалымат кошулду, эсептөө кыймылдаткычтары үчүн ABI ишке ашырылды, Tile2 форматы үчүн DG4 карталарын колдоо; Хасвелл микроархитектурасына негизделген системалар үчүн DisplayPort HDR колдоосу ишке ашырылат.
    • Nouveau драйвери drm_gem_plane_helper_prepare_fb иштеткичти колдонууга өттү; статикалык эстутумду бөлүштүрүү кээ бир структураларга жана өзгөрмөлөргө колдонулду. Nouveau-да NVIDIA тарабынан ачык булак ядролук модулдарын колдонууга келсек, иш ушул убакка чейин каталарды аныктоого жана жоюуга байланыштуу. Келечекте, жарыяланган микропрограмманы драйвердин иштешин жакшыртуу үчүн колдонуу пландаштырылууда.
    • M1 чипинин негизинде Apple компьютерлеринде колдонулган NVMe контроллери үчүн драйвер кошулду.

Ошол эле учурда Латын Америкасынын Эркин Программалык Фонду 5.19 толугу менен бекер ядронун версиясын - Linux-libre 5.19-gnu түздү, прошивканын элементтеринен жана эркин эмес компоненттерди же коддун бөлүмдөрүн камтыган драйверлерден тазаланды, анын көлөмү өндүрүүчүсү тарабынан чектелген. Жаңы релиз pureLiFi X/XL/XC жана TI AMx3 Wkup-M3 IPC үчүн драйверлерди тазалайт. Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu драйверлеринде жана подсистемаларында жаңыртылган blob тазалоо коду. Qualcomm AArch64 devicetree файлдарын иштетүү ишке ашырылды. Жаңы Sound Open Firmware компонентинин аталышы схемасына колдоо кошулду. Банкоматтын Ambassador драйверин тазалоону токтотту, ал ядродон чыгарылды. HDCP жана Mellanox Coreдо блоб тазалоону башкаруу өзүнчө kconfig тегтерине жылдырылды.

Source: opennet.ru

Комментарий кошуу