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

Екі айлық дамудан кейін Линус Торвальдс енгізілді ядро шығару Linux 5.9. Ең көрнекті өзгерістердің қатарында: меншікті модульдерден GPL модульдеріне таңбаларды импорттауды шектеу, FSGSBASE процессорының нұсқаулығын қолдану арқылы контекстті ауыстыру операцияларын жеделдету, Zstd көмегімен ядро ​​кескінін сығуды қолдау, ядродағы ағындардың басымдылығын қайта өңдеу, PRP қолдауы. (Параллель резервтеу протоколы), соңғы мерзім жоспарлаушысында өткізу қабілетін ескеретін жоспарлау, жад беттерін алдын ала орамдау, мүмкіндік жалауы CAP_CHECKPOINT_RESTOR, close_range() жүйелік шақыру, dm-crypt өнімділігін жақсарту, 32-биттік Xen PV қонақтары үшін кодты жою, жаңа тақта жады басқару механизмі, Btrfs ішіндегі «құтқару» опциясы, ext4 және F2FS ішіндегі кірістірілген шифрлауды қолдау.

Жаңа нұсқа 16074 әзірлеушілерінен 2011 түзетуді қамтиды,
патч өлшемі - 62 МБ (өзгерістер 14548 файлға әсер етті, 782155 код жолы қосылды, 314792 жол жойылды). Барлығының шамамен 45% 5.9-да ұсынылған
өзгерістер құрылғы драйверлеріне қатысты, өзгерістердің шамамен 15%
аппараттық архитектураға тән кодты жаңартуға деген көзқарас, 13%
желілік стекпен байланысты, 3% файлдық жүйелерге және 3% ішкі
ядроның ішкі жүйелері.

басты инновациялар:

  • Жад және жүйелік қызметтер
    • Тартылған GPL лицензиясы бойынша модульдер үшін ғана экспортталған ядро ​​құрамдастары бар меншікті драйверлерді байланыстыру үшін GPL қабаттарын пайдаланудан қорғау. TAINT_PROPRIETARY_MODULE жалауы енді осы жалаушасы бар модульдерден таңбаларды импорттайтын барлық модульдерде мұраланған. Егер GPL модулі GPL емес модульден таңбаларды импорттауға әрекет жасаса, онда бұл GPL модулі TAINT_PROPRIETARY_MODULE белгісін иеленеді және модульде бұрыннан таңбалар импортталған болса да, GPL лицензиясы бар модульдерге ғана қолжетімді ядро ​​құрамдастарына қол жеткізе алмайды. «gplonly» санаты. Меншікті драйверлердің жұмысын бұзуы мүмкін кері құлыптау (EXPORT_SYMBOL_GPL импортталған модульдерде тек EXPORT_SYMBOL_GPL экспорттау) орындалмаған (тек меншікті модуль жалаушасы мұраланған, бірақ GPL байланыстары емес).
    • Қосылды үшін kcompactd қозғалтқышты қолдау жад беттерін алдын ала орау ядроға қолжетімді үлкен жад беттерінің санын көбейту үшін фондық режимде. Алдын ала бағалаулар бойынша, фондық орау, ең аз үстеме шығындар есебінен, қажет болған кезде іске қосылған (сұраныс бойынша) бұрын қолданылған орау механизмімен салыстырғанда үлкен жад беттерін (үлкен бетті) бөлу кезіндегі кідірістерді 70-80 есе азайтады. ). kcompactd қамтамасыз ететін сыртқы фрагментацияның шекараларын орнату үшін sysctl vm.compaction_proactiveness қосылды.
    • Қосылды алгоритм арқылы ядро ​​кескінін қысуға қолдау көрсету Стандарт (zstd).
    • x86 жүйелері үшін процессор нұсқауларын қолдау жүзеге асырылды FSGSBASE, ол пайдаланушы кеңістігінен FS/GS регистрлерінің мазмұнын оқуға және өзгертуге мүмкіндік береді. Ядрода FSGSBASE GSBASE үшін қажет емес MSR жазу операцияларын жою арқылы контекстті ауыстыру операцияларын жеделдету үшін пайдаланылады, ал пайдаланушы кеңістігінде FS/GS өзгерту үшін қажет емес жүйелік шақыруларды болдырмайды.
    • Қосылды «allow_writes» параметрі пайдаланушы кеңістігінен процессордың MSR регистрлеріне өзгерістер енгізуге тыйым салуға және осы регистрлердің мазмұнына оқу операцияларын орындау үшін қол жеткізуді шектеуге мүмкіндік береді, өйткені MSR өзгерту проблемаларға әкелуі мүмкін. Әдепкі бойынша жазу әлі өшірілмеген және MSR өзгертулері журналда көрсетіледі, бірақ болашақта әдепкі қатынасты тек оқуға арналған режимге ауыстыру жоспарлануда.
    • Асинхронды енгізу/шығару интерфейсіне io_uring Ядро ағындарын қажет етпейтін асинхронды буферленген оқу әрекеттеріне толық қолдау қосылды. Жазу қолдауы болашақ шығарылымда күтілуде.
    • Енгізу/шығару жоспарлаушысының соңғы мерзімінде жүзеге асырылды мүмкіндігіне қарай жоспарлау, мүмкіндік беру ARM негізіндегі жүйелер сияқты асимметриялық жүйелерде дұрыс шешім қабылдау DynamIQ және бір чипте қуатты және тиімділігі аз энергияны үнемдейтін процессордың өзектерін біріктіретін big.LITTLE. Атап айтқанда, жаңа режим баяу процессордың ядросында тапсырманы уақытында орындау үшін тиісті ресурстар болмаған кезде жоспарлау сәйкессіздіктерін болдырмауға мүмкіндік береді.
    • Ядродағы энергияны тұтыну моделі (Энергия моделі құрылымы) қазір сипаттайды процессордың қуатын тұтыну әрекетін ғана емес, сонымен қатар перифериялық құрылғыларды да қамтиды.
    • Close_range() жүйелік шақыруы процеске ашық файл дескрипторларының бүкіл ауқымын бірден жабуға мүмкіндік беру үшін жүзеге асырылды.
    • Мәтін консолі мен fbcon драйверін іске асырудан код жойылды, ол VGA мәтіндік режимінің бейне жады көлемінен көбірек мәтінді кері айналдыру (CONFIG_VGACON_SOFT_SCROLLBACK) мүмкіндігін қамтамасыз етеді.
    • Қайта жасалған ядродағы ағындарға басымдықтарды тағайындау алгоритмі. Жаңа опция нақты уақыттағы тапсырмаларға басымдықтарды тағайындау кезінде барлық ядролық ішкі жүйелерде жақсырақ сәйкестікті қамтамасыз етеді.
    • Қосылған sysctl sched_uclamp_util_min_rt_default нақты уақыттағы тапсырмалар үшін CPU күшейту параметрлерін басқару үшін (мысалы, батарея қуатына немесе ұялы жүйелерге ауысқаннан кейін қуатты үнемдеу үшін нақты уақыттағы тапсырмалардың әрекетін өзгертуге болады).
    • Бет кэшінде Transparent Huge Pages технологиясын қолдауды енгізу үшін дайындықтар жасалды.
    • Fanotify механизмі каталог элементтері мен каталог емес нысандар үшін жасау, жою немесе жылжыту оқиғалары орын алған кезде ата-ана атын және бірегей FID ақпаратын хабарлау үшін FAN_REPORT_NAME және FAN_REPORT_DIR_FID жаңа жалаушаларын енгізеді.
    • Топтар үшін жүзеге асырылды жаңа тақта жады контроллері, ол әр топ үшін бөлек тақта кэштерін бөлудің орнына, тақтаны есепке алуды жад беті деңгейінен ядро ​​нысаны деңгейіне жылжытуымен ерекшеленеді, бұл тақта беттерін әртүрлі топтарда бөлісуге мүмкіндік береді. Ұсынылған тәсіл плитаны пайдалану тиімділігін арттыруға, тақта үшін қолданылатын жадының көлемін 30-45%-ға азайтуға, ядроның жалпы жады тұтынуын айтарлықтай азайтуға және жадының фрагментациясын азайтуға мүмкіндік береді.
    • Дыбыс ішкі жүйесінде ALSA и USB стек, сәйкес жақында қабылданған Linux ядросында инклюзивті терминологияны пайдалану бойынша ұсыныстар; саяси қате терминдер тазартылды. Код «құл», «шебер», «қара тізім» және «ақ тізім» сөздерінен тазартылды.
  • Виртуализация және қауіпсіздік
    • Clang компиляторы арқылы ядроны құру кезінде пайда болды (CONFIG_INIT_STACK_ALL_ZERO) автоматты инициализацияны стекте сақталған барлық айнымалылардың нөліне теңшеу мүмкіндігі (құру кезінде “-ftrivial-auto-var-init=nol” көрсетіңіз).
    • Seccomp ішкі жүйесінде пайдаланушы кеңістігінде процесті басқару режимін пайдаланған кезде, қосылды мүмкіндік файл дескрипторларын құруға әкелетін жүйелік шақыруларды толығымен эмуляциялау үшін бақыланатын процеске файл дескрипторларын ауыстыру. Функционалдық оқшауланған контейнерлік жүйелерде және Chrome үшін құмсалғышты іске асыруда сұранысқа ие.
    • xtensa және csky архитектуралары үшін seccomp ішкі жүйесін пайдаланып жүйелік қоңырауларды шектеуге қолдау қосылды. Xtensa үшін аудит механизмін қолдау қосымша жүзеге асырылады.
    • Қосылды жаңа мүмкіндік жалаушасы CAP_CHECKPOINT_RESTORE, ол қосымша артықшылықтарды бермей-ақ, процестердің күйін тоқтатуға және қалпына келтіруге қатысты мүмкіндіктерге қол жеткізуге мүмкіндік береді.
    • GCC 11 сізге қажет барлық мүмкіндіктерді қамтамасыз етеді
      отладка құралы KCSAN (Kernel Concurrency Sanitizer), ядродағы жарыс жағдайларын динамикалық анықтауға арналған. Осылайша, KCSAN енді GCC-де салынған ядролармен бірге қолданыла алады.

    • AMD Zen және жаңа CPU үлгілері үшін қосылды PCI шинасына қосылған екі құрылғының жады арасында деректерді тікелей тасымалдау үшін DMA пайдалануға мүмкіндік беретін P2PDMA технологиясын қолдау.
    • Жұмыс кезегін пайдаланбай деректерді криптографиялық өңдеуді орындау арқылы кідірістерді азайтуға мүмкіндік беретін dm-crypt режимі қосылды. Бұл режим дұрыс жұмыс істеу үшін де қажет аудандастырылған блоктық құрылғылар (блоктардың барлық тобын жаңартып, дәйекті түрде жазылуы керек аймақтары бар құрылғылар). Өткізу қабілеттілігін арттыру және dm-crypt-те кешіктіруді азайту бойынша жұмыс жүргізілді.
    • Xen гипервизорында іске қосылған паравиртуализация режимінде жұмыс істейтін 32 биттік қонақтарды қолдау үшін код жойылды. Мұндай жүйелерді пайдаланушылар қонақ орталарында 64 биттік ядроларды пайдалануға ауысуы немесе орталарды іске қосу үшін паравиртуализацияның (PV) орнына толық (HVM) немесе біріктірілген (PVH) виртуалдандыру режимдерін пайдалануы керек.
  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Btrfs файлдық жүйесінде жүзеге асырылды барлық басқа қалпына келтіру опцияларына қол жеткізуді біріктіретін «құтқару» орнату опциясы. "alloc_start" және "subvolrootid" опцияларын қолдау жойылды және "inode_cache" опциясы ескірген. Өнімділікті оңтайландырулар жасалды, әсіресе fsync() операцияларының орындалуын айтарлықтай жылдамдатады. Қосылды CRC32c-тен басқа бақылау сомасының баламалы түрлерін пайдалану мүмкіндігі.
    • Қосылды ext4 және F2FS файлдық жүйелерінде кірістірілген шифрлауды (Inline Encryption) пайдалану мүмкіндігі, оны қосу үшін «inlinecrypt» орнату опциясы қамтамасыз етіледі. Кірістірілген шифрлау режимі кіріс/шығыс мөлдір шифрлайтын және шифрын ашатын диск контроллеріне орнатылған шифрлау механизмдерін пайдалануға мүмкіндік береді.
    • XFS жүйесінде қамтамасыз етілген жадты тазалау әрекетін орындау кезінде процестерді блоктамайтын толық асинхронды режимде инодты қалпына келтіру (тазалау). Жұмсақ шектеу және инод шектеуі ескертулерінің дұрыс қадағаланбауына әкеліп соқтырған ұзақ уақыттық квота мәселесі шешілді. ext4 және xfs үшін DAX қолдауының бірыңғай іске асырылуы.
    • Ext4 ішінде жүзеге асырылды блокты бөлу нүктелік кескіндерін алдын ала жүктеу. Басталмаған топтарды сканерлеуді шектеумен біріктірілген оңтайландыру өте үлкен бөлімдерді орнатуға қажетті уақытты қысқартты.
    • F2FS ішінде қосылды ioctl F2FS_IOC_SEC_TRIM_FILE, ол файлдағы көрсетілген деректерді физикалық қалпына келтіру үшін, мысалы, дискіде қалдық деректерді қалдырмай кіру кілттерін жою үшін TRIM/жою пәрмендерін пайдалануға мүмкіндік береді.
      F2FS-де де қосылды жаңа қоқыс жинау режимі GC_URGENT_LOW, ол қоқыс жинағышты іске қоспас бұрын бос күйде болу үшін кейбір тексерулерді жою арқылы қарқынды жұмыс істейді.

    • Bcache ішінде аумақтарға арналған bucket_size 16-дан 32 битке дейін ұлғайтылды, ол аймаққа бөлінген құрылғы кэштерін қосуға дайындалды.
    • SCSI ішкі жүйесіне UFS контроллерлері беретін кірістірілген аппараттық шифрлау негізінде кірістірілген шифрлауды пайдалану мүмкіндігі қосылды (Әмбебап Flash сақтау).
    • Жаңа ядро ​​пәрмен жолы параметрі «debugfs» қосылды, ол аттас псевдо-FS қолжетімділігін басқаруға мүмкіндік береді.
    • NFSv4.2 клиенті кеңейтілген файл атрибуттарына (xattr) қолдау көрсетеді.
    • dm-шаңда қосылды дискідегі барлық анықталған нашар блоктардың тізімін бірден көрсетуге арналған интерфейс («dmsetup message dust1 0 listbadblocks»).
    • md/raid5 үшін, STRIPE блок өлшемін конфигурациялау үшін /sys/block/md1/md/stripe_size параметрі қосылды.
    • NVMe сақтау құрылғылары үшін қосылды дискіні аймақтарға бөлу пәрмендерін қолдау (ZNS, NVM Express Zoned Namespace), ол дискідегі деректерді орналастыруды толық басқару үшін сақтау орнын блоктар топтарын құрайтын аймақтарға бөлуге мүмкіндік береді.
  • Желілік ішкі жүйе
    • Netfilter ішінде қосылды маршруттауды тексеру алдында пакеттерді қабылдамау мүмкіндігі (REJECT өрнегі енді тек INPUT, FORWARD және OUTPUT тізбектерінде ғана емес, сонымен қатар icmp және tcp үшін PREROUTING сатысында да қолданылуы мүмкін).
    • nftables ішінде қосылды конфигурация өзгерістеріне байланысты оқиғаларды тексеру мүмкіндігі.
    • Netlink API ішіндегі nftables ішінде қосылды аты ядромен динамикалық түрде тағайындалған анонимді тізбектерді қолдау. Анонимді тізбекпен байланысты ережені жойған кезде, тізбектің өзі автоматты түрде жойылады.
    • BPF пайдаланушы кеңістігіне деректерді көшірместен ассоциативті массивтердің (карталардың) элементтерін айналдыру, сүзу және өзгерту үшін итераторларға қолдауды қосады. Итераторларды TCP және UDP ұяшықтары үшін пайдалануға болады, бұл BPF бағдарламаларына ашық розеткалардың тізімдерін қайталауға және олардан қажетті ақпаратты шығаруға мүмкіндік береді.
    • BPF бағдарламасының BPF_PROG_TYPE_SK_LOOKUP жаңа түрі қосылды, ол ядро ​​кіріс қосылымы үшін қолайлы тыңдау ұясын іздеген кезде іске қосылады. Осындай BPF бағдарламасын пайдаланып, bind() жүйелік шақыруымен шектелмей, қосылым қай розеткамен байланыстырылатыны туралы шешім қабылдайтын өңдеушілерді жасай аласыз. Мысалы, сіз бір ұяшықты мекенжайлар немесе порттар ауқымымен байланыстыра аласыз. Сонымен қатар, SO_KEEPALIVE жалаушасына қолдау bpf_setsockopt() қызметіне қосылды және ұяшық босатылған кезде шақырылатын BPF_CGROUP_INET_SOCK_RELEASE өңдеушілерін орнату мүмкіндігі іске асырылды.
    • Хаттамалық қолдау жүзеге асырылды PRP (Parallel Redundancy Protocol), ол кез келген желі құрамдас бөліктері істен шыққан жағдайда қолданбалар үшін мөлдір резервтік арнаға Ethernet негізінде ауысуға мүмкіндік береді.
    • Mac80211 стек қосылды кіру нүктесі режимінде төрт сатылы WPA/WPA2-PSK арна келіссөздерін қолдау.
    • Әдепкі бойынша FQ-PIE (Flow Queue PIE) желілік кезекті басқару алгоритмін пайдалану үшін qdisc (кезекте тұру тәртібі) жоспарлаушысын ауыстыру мүмкіндігі қосылды, ол желілік желі жабдығына (bufferbloat) аралық буферлеудің теріс әсерін азайтуға бағытталған. кабельдік модемдер.
    • MPTCP (MultiPath TCP) жаңа мүмкіндіктер, әртүрлі IP мекенжайларымен байланысты әртүрлі желілік интерфейстер арқылы бірнеше маршруттар бойынша пакеттерді бір уақытта жеткізумен TCP қосылымының жұмысын ұйымдастыруға арналған TCP протоколының кеңейтімдері қосылды. Syncookie, DATA_FIN, буферді автоматты баптау, розетка диагностикасы және setsockopt ішіндегі REUSEADDR, REUSEPORT және V6ONLY жалаушаларына қолдау қосылды.
    • Бір жүйеде бірнеше маршруттау домендерінің жұмысын ұйымдастыруға мүмкіндік беретін VRF виртуалды маршруттау кестелері үшін «қатаң» режим енгізілді. Бұл режимде виртуалды кестені басқа виртуалды кестелерде пайдаланылмайтын бағыттау кестесімен ғана байланыстыруға болады.
    • Сымсыз драйвер - ath11k қосылды 6 ГГц жиілігін қолдау және спектрлік сканерлеу.
  • Жабдық
    • Пекин университетінің микропроцессорлық орталығында әзірленген және 2011 жылы Linux ядросына енгізілген UniCore архитектурасын қолдау үшін жойылған код. Бұл архитектура 2014 жылдан бері сақталмай келеді және GCC-де қолдау көрсетілмейді.
    • RISC-V архитектурасына қолдау көрсетілді kcov (ядро кодын қамтуды талдауға арналған debugfs интерфейсі), kmemleak (жадтың ағып кетуін анықтау жүйесі), стекті қорғау, өту белгілері және тіксіз операциялар (таймер сигналдарынан тәуелсіз көп тапсырма).
    • PowerPC архитектурасы үшін құлыптау кезегін қолдау іске асырылды, бұл құлыптау қақтығыстары кезінде өнімділікті айтарлықтай жақсартты.
    • ARM және ARM64 архитектуралары үшін процессор жиілігін реттеу механизмі әдепкі бойынша қосылады кесте (cpufreq басқарушысы), ол жиілікті өзгерту туралы шешім қабылдау үшін тапсырмаларды жоспарлаушыдан алынған ақпаратты тікелей пайдаланады және жиілікті жылдам өзгерту үшін cpufreq драйверлеріне дереу қол жеткізе алады, процессордың жұмыс параметрлерін ағымдағы жүктемеге лезде реттейді.
    • Intel графикалық карталарына арналған i915 DRM драйвері микроархитектураға негізделген чиптерді қолдауды қамтиды. Ракета көлі және дискретті карталар үшін бастапқы қолдауды қосты Intel Xe DG1.
    • Amdgpu драйвері AMD GPU үшін бастапқы қолдауды қосты Navi 21 (Теңіз флоты) және Navi 22 (Сиенна Чихлид). Оңтүстік Аралдар GPU (Radeon HD 7000) үшін UVD/VCE бейне кодтау және декодтау жеделдету қозғалтқыштарына қолдау қосылды.
      Дисплейді 90, 180 немесе 270 градусқа бұру қасиеті қосылды.

      Бір қызығы, AMD GPU драйвері Бұл ядродағы ең үлкен драйвер - оның шамамен 2.71 миллион код жолы бар, бұл ядроның жалпы көлемінің шамамен 10% (27.81 миллион жол). Бұл ретте 1.79 миллион жол GPU регистрлеріне арналған деректері бар автоматты түрде жасалған тақырып файлдарымен есепке алынады, ал C коды 366 мың жолды құрайды (салыстыру үшін Intel i915 драйвері 209 мың жолды, ал Nouveau – 149 мың жолды қамтиды).

    • Nouveau жүргізуші қосылды көмегімен кадр бойынша тұтастығын тексеруге қолдау көрсету CRC NVIDIA GPU дисплей қозғалтқыштарындағы (Циклдық резервтік тексерулер). Іске асыру NVIDIA ұсынған құжаттамаға негізделген.
    • СКД панельдері үшін қосылған драйверлер: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 және XBD Xingba599da.
    • ALSA аудио ішкі жүйесі қолдайды Intel Silent Stream (ойнатуды бастау кезіндегі кідірісті жою үшін сыртқы HDMI құрылғыларына арналған үздіксіз қуат режимі) және жаңа құрылғы микрофонды белсендіру және дыбысты өшіру түймелерінің жарығын басқару үшін, сонымен қатар контроллерді қоса, жаңа жабдыққа қолдау қосылды. Лонгсон 7A1000.
    • ARM тақталарына, құрылғыларына және платформаларына қосымша қолдау: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (Sony Xperia 10, 10 Plus, XA2, XA Plus құрылғыларында қолданылады) Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, NXP i.MX2 негізіндегі бес жаңа тақта, MikroTik RouterBoard 2, Xiaomi Libra, Microsoft Lumia 6, Sony Xperia Z3011, MStar, Microchip Sparx950, Inteline Al Keem Bay, Amazon v5, Renesas RZ/G5H.

Бұл ретте Латын Америкасының еркін бағдарламалық қамтамасыз ету қоры қалыптасты
опция толығымен бос ядро ​​5.9 - Linux-libre 5.9-gnu, көлемін өндіруші шектейтін бос емес құрамдастарды немесе код бөлімдерін қамтитын микробағдарлама және драйвер элементтерінен тазартылған. Жаңа шығарылым WiFi rtw8821c және SoC MediaTek mt8183 үшін драйверлерде блокты жүктеуді өшіреді. Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) және x86 сенсорлық экран драйверлері мен ішкі жүйелеріндегі жаңартылған blob тазалау коды.

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

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