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

Екі айлық дамудан кейін Линус Торвальдс енгізілді ядро шығару Linux 5.2. Ең көрнекті өзгерістердің ішінде: Ext4 жұмыс режимі регистрді ескермейді, файлдық жүйені орнатуға арналған бөлек жүйелік қоңыраулар, Mali 4xx/6xx/7xx GPU драйверлері, BPF бағдарламаларындағы sysctl мәндеріндегі өзгерістерді өңдеу мүмкіндігі, құрылғы-маппер. dm-шаң модулі, MDS шабуылдарынан қорғау, DSP үшін Sound Open микробағдарламасын қолдау, BFQ өнімділігін оңтайландыру, PSI (Pressure Stall Information) ішкі жүйесін Android жүйесінде пайдалану мүмкіндігіне жеткізу.

Жаңа нұсқа 15100 әзірлеушілерден 1882 XNUMX түзетуді қамтиды,
патч өлшемі - 62 МБ (өзгерістер 30889 файлға әсер етті, 625094 код жолы қосылды, 531864 жол жойылды). Барлығының шамамен 45% 5.2
өзгерістер құрылғы драйверлеріне қатысты, өзгерістердің шамамен 21%
аппараттық архитектураға тән кодты жаңартуға деген көзқарас, 12%
желілік стекпен байланысты, 3% файлдық жүйелерге және 3% ішкі
ядроның ішкі жүйелері. Барлық өзгерістердің 12.4% Intel, 6.3% Red Hat, 5.4% Google, 4.0% AMD, 3.1% SUSE, 3% IBM, 2.7% Huawei, 2.7% Linaro, 2.2% ARM дайындаған. , 1.6 % - Oracle.

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

  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Ext4 үшін қосылды Қолдау жаңа «+F» (EXT4_CASEFOLD_FL) атрибуты арқылы жеке бос каталогтарға қатысты ғана іске қосылатын файл атауларындағы таңбалардың регистрін ажыратпай жұмыс істеу. Бұл атрибут каталогта орнатылған кезде, ішіндегі файлдармен және ішкі каталогтармен барлық операциялар таңбалардың регистрін есепке алмай орындалады, соның ішінде файлдарды іздеу және ашу кезінде регистр еленбейді (мысалы, Test.txt файлдары, Мұндай каталогтардағы test.txt және test.TXT бірдей деп есептеледі). Әдепкі бойынша, файлдық жүйе «chattr +F» атрибуты бар каталогтарды қоспағанда, регистрді ескереді;
    • Жолды салыстыру және қалыпқа келтіру операцияларын орындау кезінде қолданылатын файл атауларындағы UTF-8 таңбаларын өңдеу функциялары біркелкі болды;
    • XFS файлдық жүйенің денсаулығын бақылау үшін инфрақұрылымды және денсаулық күйін сұрау үшін жаңа ioctl қосады. Суперблок есептегіштерін онлайн режимінде тексеру үшін эксперименттік мүмкіндік енгізілді.
    • Жаңа модуль құрылғысы картасы қосылды.dm-шаң«, бұл медиадағы нашар блоктардың пайда болуын немесе дискіден оқу кезіндегі қателерді модельдеуге мүмкіндік береді. Модуль ықтимал ақаулар жағдайында қосымшаларды және әртүрлі сақтау жүйелерін жөндеуді және тестілеуді жеңілдетуге мүмкіндік береді;
    • Орындалған BFQ енгізу/шығару жоспарлағышы үшін маңызды өнімділікті оңтайландыру. Жоғары енгізу/шығару жүктемесі жағдайында оңтайландырулар жасалды рұқсат беріңіз Қолданбаларды іске қосу сияқты операциялардың уақытын 80%-ға дейін қысқартыңыз.
    • Файлдық жүйелерді орнату үшін жүйелік шақырулар сериясы қосылды: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Бұл жүйелік шақырулар бұрын жалпы mount() жүйелік шақыруы арқылы орындалған монтаждаудың әртүрлі кезеңдерін (суперблокты өңдеу, файлдық жүйе туралы ақпарат алу, монтаждау, бекіту нүктесіне бекіту) бөлек өңдеуге мүмкіндік береді. Бөлек қоңыраулар күрделірек орнату сценарийлерін орындау және суперблокты қайта конфигурациялау, опцияларды қосу, бекіту нүктесін өзгерту және басқа аттар кеңістігіне жылжыту сияқты бөлек әрекеттерді орындау мүмкіндігін береді. Сонымен қатар, бөлек өңдеу қате кодтарының шығу себептерін дәл анықтауға және көп деңгейлі файлдық жүйелер үшін бірнеше көздерді орнатуға мүмкіндік береді, мысалы, overlayfs;
    • IORING_OP_SYNC_FILE_RANGE жаңа операция жүйелік шақыруға баламалы әрекеттерді орындайтын асинхронды енгізу/шығару io_uring интерфейсіне қосылды. sync_file_range(), сондай-ақ io_uring көмегімен eventfd тіркеу және операциялардың аяқталғаны туралы хабарламаларды алу мүмкіндігін іске асырды;
    • CIFS файлдық жүйесі үшін FIEMAP ioctl қосылды, ол тиімді ауқымды салыстыруды, сонымен қатар SEEK_DATA және SEEK_HOLE режимдерін қолдауды қамтамасыз етеді;
    • FUSE ішкі жүйесінде ұсынылған Деректерді кэштеуді басқаруға арналған API;
    • Btrfs qgroups енгізуін оңтайландырды және бірнеше қатты сілтемелері бар файлдар үшін fsync орындау жылдамдығын жақсартты. Деректер тұтастығын тексеру коды жетілдірілді, ол енді деректерді дискіге тазарту алдында жедел жадтағы ақпараттың ықтимал зақымдануын ескереді;
    • CEPH NFS арқылы суреттерді экспорттауға қолдау қосты;
    • NFSv4 монтажын «жұмсақ» режимде жүзеге асыру жетілдірілді («жұмсақ» режимде серверге кіру кезінде қате орын алса, қоңырау дереу қате кодын қайтарады, ал «қатты» режимде басқару FS орнатылғанша берілмейді. қолжетімділік немесе күту уақыты қалпына келтірілді). Жаңа шығарылым күту уақытын дәлірек өңдеуді, апатты қалпына келтіруді жылдамырақ және күту уақыты орын алған кезде қайтарылатын қате кодын (ETIMEDOUT) өзгертуге мүмкіндік беретін жаңа «жұмсақ» орнату опциясын қамтамасыз етеді;
    • NFS клиенттерінің күйін бақылауға арналған nfsdcld API NFS серверіне қайта жүктеу кезінде клиенттің күйін дұрыс бақылауға мүмкіндік береді. Осылайша, nfsdcld демоны енді nfsdcltrack өңдеушісі ретінде әрекет ете алады;
    • AFS үшін қосылды файлдардағы байт ауқымының құлыптарының эмуляциясы (Байт ауқымын құлыптау);
  • Виртуализация және қауіпсіздік
    • Жазылатын шағылысқан жад аумақтарынан кодты орындауға мүмкіндік беретін ядродағы орындарды жою бойынша жұмыс жүргізілді, бұл шабуыл кезінде пайдаланылуы мүмкін ықтимал тесіктерді блоктауға мүмкіндік береді;
    • Орталық процессордағы нұсқауларды алыпсатарлық орындаумен байланысты осалдықтардан қорғау үшін белгілі бір әдістерді қосуды басқарудың жеңілдетілген әдісін қамтамасыз ететін жаңа ядро ​​​​пәрмен жолы параметрі "жұмсартулар" қосылды. «Жұмсартулар=өшіру» параметрін беру барлық бар әдістерді өшіреді және әдепкі «жұмсартулар=авто» режимі қорғауды қосады, бірақ Hyper Threading пайдалануына әсер етпейді. «Жұмсартулар=авто,носмт» режимі қорғау әдісімен қажет болса, Hyper Threading функциясын қосымша өшіреді.
    • Қосылды ГОСТ Р 34.10-2012 (RFC 7091, ISO/IEC 14888-3) бойынша электрондық цифрлық қолтаңбаны қолдау; әзірлеген Виталий Чикунов «Базальт» СПО-дан. Жергілікті TLS енгізуіне AES128-CCM қолдауы қосылды. crypto_simd модуліне AEAD алгоритмдеріне қолдау қосылды;
    • Kconfig ішінде қосылды ядроны қорғауды жақсарту опциялары бар жеке «ядроны қатайту» бөлімі. Қазіргі уақытта жаңа бөлімде тек GCC тексеруін жақсарту плагиндерін қосу параметрлері бар;
    • Ядро коды дерлік жеткізілген коммутатордағы үзілмейтін регистр операторларынан (әрбір регистр блогынан кейін қайтарусыз немесе үзіліссіз). Коммутаторды пайдаланудың 32 жағдайының 2311-ін түзету қалды, содан кейін ядроны құру кезінде «-Wimplicit-fallthrough» режимін пайдалануға болады;
    • PowerPC архитектурасы үшін пайдаланушы кеңістігіндегі деректерге қажетсіз ядроға кіру жолдарын шектеуге арналған аппараттық механизмдерді қолдау жүзеге асырылды;
    • Блоктау коды қосылды шабуылдар Intel процессорларындағы MDS (Microarchitectural Data Sampling) класы. Жүйенің осалдықтарға осал екенін SysFS айнымалысы “/sys/devices/system/cpu/vulnerabilities/mds” арқылы тексеруге болады. Қол жетімді екі қорғау режимі: толық, ол жаңартылған микрокодты қажет етеді және басқару пайдаланушы кеңістігіне немесе қонақ жүйесіне тасымалданған кезде CPU буферлерін тазалауға толық кепілдік бермейтін айналып өту. Қорғау режимдерін басқару үшін ядроға «full», «full,nosmt» (+ Hyper-Threads өшіру) және «өшіру» мәндерін қабылдай алатын «mds=» параметрі қосылды;
    • X86-64 жүйелерінде IRQ, отладка механизмдері және ерекше жағдайларды өңдеушілер үшін «стек қорғау беті» қорғанысы қосылды, оның мәні стектің шекарасында жад беттерін ауыстыру болып табылады, оған қол жеткізу генерациялауға әкеледі. ерекше жағдай (бет қатесі);
    • Артықшылықсыз процестердің userfaultfd() жүйелік шақыруын пайдалану мүмкіндігін басқаратын vm.unprivileged_userfaultfd sysctl параметрі қосылды;
  • Желілік ішкі жүйе
    • Қосылды IPv6 маршруттары үшін IPv4 шлюзін қолдау. Мысалы, енді «ip ro add 172.16.1.0/24 арқылы inet6 2001:db8::1 dev eth0» сияқты маршруттау ережелерін көрсете аласыз;
    • ICMPv6 үшін ioctl icmp_echo_ignore_anycast және icmp_echo_ignore_multicast қоңыраулары кез келген трансляция үшін ICMP ECHO елемеуі үшін орындалады және
      көп тарату мекенжайлары. Қосылды ICMPv6 пакеттерін өңдеудің қарқындылығын шектеу мүмкіндігі;

    • Әрбір түйін көрші түйіндер арқылы қосылған орталықтандырылмаған желілерді құруға мүмкіндік беретін BATMAN (Mobile Adhoc Networking Better Approach to Mobile Adhoc Networking) тор протоколы үшін, қосылды мультикасттан біркастқа таратуды қолдау, сондай-ақ sysfs арқылы басқару мүмкіндігі;
    • Эттолда қосылды 1000BaseT (қалыпты жағдайда кідіріс 750 мс дейін) үшін сілтемені өшіру оқиғасы туралы ақпаратты алуға кететін уақытты қысқартуға мүмкіндік беретін жаңа Fast Link Down параметрі;
    • Пайда болды мүмкіндік Foo-Over-UDP туннельдерін белгілі бір мекенжайға, желілік интерфейске немесе розеткаға байланыстыру (бұрын байланыстыру тек жалпы маска арқылы орындалатын);
    • Сымсыз стекте қамтамасыз етілген өңдеушілерді енгізу мүмкіндігі
      Пайдаланушы кеңістігіндегі OWE (Opportunistic Wireless Encryption);

    • Netfilter жүйесінде inet мекенжайлар тобына қолдау nat тізбектеріне қосылды (мысалы, енді ipv4 және ipv6 ережелерін бөлмей, ipv4 және ipv6 өңдеу үшін бір аударма ережесін пайдалануға болады);
    • Netlink-те қосылды режимі атрибуттардың күтілетін өлшемінен асып кетуге жол берілмейтін және хабарламалардың соңына қосымша деректерді қосуға тыйым салынған барлық хабарламалар мен атрибуттардың дұрыстығын қатаң тексеру үшін қатаң;
  • Жад және жүйелік қызметтер
    • CLONE_PIDFD жалауы clone() жүйелік шақыруына қосылды, көрсетілген кезде, жасалған еншілес процесспен анықталған "pidfd" файл дескрипторы ата-аналық процеске қайтарылады. Бұл файл дескрипторы, мысалы, жарыс жағдайына жүгіруден қорықпай сигналдарды жіберу үшін пайдаланылуы мүмкін (сигнал жібергеннен кейін бірден мақсатты PID процестің аяқталуына байланысты босатылуы және басқа процесспен жұмыс істеуі мүмкін);
    • Топтардың екінші нұсқасы үшін тоңазытқыш контроллерінің функционалдығы қосылды, оның көмегімен топтағы жұмысты тоқтатуға және басқа тапсырмаларды орындау үшін кейбір ресурстарды (CPU, енгізу/шығару және ықтимал тіпті жадты) уақытша босатуға болады. Басқару cgroup ағашындағы cgroup.freeze және cgroup.events басқару файлдары арқылы орындалады. cgroup.freeze ішіндегі 1 жазба ағымдағы топтағы және барлық еншілес топтардағы процестерді тоқтатады. Мұздату біраз уақытты алатындықтан, қосымша cgroup.events файлы беріледі, ол арқылы операцияның аяқталғанын білуге ​​болады;
    • Қауіпсіз sysfs жүйесіндегі әрбір түйінге бекітілген жады атрибуттарын экспорттау, бұл пайдаланушы кеңістігінен гетерогенді жады бар жүйелерде жады банктерін өңдеу сипатын анықтауға мүмкіндік береді;
    • PSI (Pressure Stall Information) ішкі жүйесі жетілдірілді, ол топтағы белгілі бір тапсырмалар немесе процестер жиындары үшін әртүрлі ресурстарды (CPU, жад, енгізу/шығару) алудың күту уақыты туралы ақпаратты талдауға мүмкіндік береді. PSI көмегімен пайдаланушы кеңістігін өңдеушілер Орташа жүктемемен салыстырғанда жүйе жүктемесінің деңгейін және баяулау үлгілерін дәлірек бағалай алады. Жаңа нұсқа сезімталдық шектерін орнатуға қолдау көрсетеді және белгіленген шектердің белгілі бір уақыт аралығында іске қосылғаны туралы хабарламаны алу үшін poll() шақыруын пайдалану мүмкіндігін береді. Бұл мүмкіндік Android жүйесіне жад тапшылығын ерте кезеңде бақылауға, ақаулардың көзін анықтауға және маңызды емес қолданбаларды қолданушыға байқалатын проблемаларды тудырмай тоқтатуға мүмкіндік береді. Стресс-тестілеу кезінде PSI негізіндегі жадты тұтынуды бақылау құралдары vmpressure статистикасымен салыстырғанда 10 есе аз жалған позитивтерді көрсетті;
    • BPF бағдарламаларын тексеру коды оңтайландырылды, бұл үлкен бағдарламалар үшін 20 есеге дейін жылдамырақ тексеруге мүмкіндік береді. Оңтайландыру BPF бағдарламаларының көлемін шектеуді 4096-дан миллион нұсқауға дейін көтеруге мүмкіндік берді;
    • BPF бағдарламалары үшін ұсынылған бағдарламаларда ғаламдық айнымалылар мен тұрақтыларды анықтауға мүмкіндік беретін ғаламдық деректерге қол жеткізу мүмкіндігі;
    • Қосылды API, ол BPF бағдарламаларынан sysctl параметрлерінің өзгерістерін басқаруға мүмкіндік береді;
    • MIPS32 архитектурасы үшін eBPF виртуалды машинасына арналған JIT компиляторы іске асырылды;
    • 32-биттік PowerPC архитектурасы үшін жадпен жұмыс істеу кезінде қателерді анықтауға көмектесетін KASan (ядро мекенжайын тазартқыш) жөндеу құралына қолдау қосылды;
    • x86-64 жүйелерінде 896 МБ-тан жоғары жад аймақтарында ядроның бұзылуы (crash-dump) кезінде мемлекеттік демптерді орналастыруға шектеу алынып тасталды;
    • s390 архитектурасы үшін ядроның мекенжай кеңістігін рандомизациялау (KASLR) қолдауы және kexec_file_load() арқылы ядроны жүктеген кезде цифрлық қолтаңбаларды тексеру мүмкіндігі жүзеге асырылады;
    • PA-RISC архитектурасы үшін ядроны жөндеуге (KGDB), өту белгілеріне және кпробтарға қолдау қосылды;
  • Жабдық
    • Драйвер қосылған Лима ARM архитектурасына негізделген көптеген ескі чиптерде қолданылатын Mali 400/450 GPU үшін. Жаңа Mali графикалық процессорлары үшін Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) және Bifrost (Mali G3x, G5x, G7x) микроархитектураларына негізделген чиптерді қолдайтын Panfrost драйвері қосылды;
    • Ашық микробағдарламаны қолданатын аудио құрылғыларға қолдау қосылды Дыбысты ашатын микробағдарлама (ЖҰМЫС). Ашық драйверлердің болуына қарамастан, дыбыс микросхемаларына арналған микробағдарлама коды әлі де жабық күйінде қалды және екілік түрде жеткізілді. Sound Open Firmware жобасы дыбысты өңдеуге қатысты DSP чиптері үшін ашық микробағдарлама жасау үшін Intel компаниясы әзірлеген (Google да әзірлеуге кейінірек қосылды). Қазіргі уақытта жоба Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake және IceLake платформаларының дыбыс чиптеріне арналған микробағдарламаларды ашуды дайындады;
    • Intel DRM драйвері (i915) чиптерге қолдауды қосады
      Эльхартлейк (11 жас). Comet Lake (Gen9) чиптеріне арналған PCI идентификаторлары қосылды. Icelake чиптерін қолдау тұрақтандырылды, ол үшін қосымша PCI құрылғы идентификаторлары да қосылды.
      Қосылған
      mmio арқылы жазу операцияларын орындау кезінде бейне жадтағы екі буфер арасындағы асинхронды ауысу режимі (асинхронды айналдыру), бұл кейбір 3D қолданбаларының өнімділігін айтарлықтай арттырды (мысалы, 3DMark Ice Storm сынақындағы өнімділік 300-400%-ға өсті). Қосымша технологиялық қолдау HDCP2.2 (Жоғары жолақты сандық мазмұнды қорғау) HDMI арқылы берілетін бейне сигналдарды шифрлауға арналған;

    • Vega20 GPU үшін amdgpu драйвері қосылды RAS (Сенімділік, қолжетімділік, қызмет көрсету мүмкіндігі) қолдауы және Powerplay технологиясын алмастырған SMU 11 ішкі жүйесіне эксперименттік қолдау. GPU Vega12 үшін қосылды BACO режимін қолдау (Bus Active, Chip Off). XGMI үшін бастапқы қолдау қосылды, GPU өзара байланысы үшін жоғары жылдамдықты шин (PCIe 4.0). Amdkfd драйверіне Polaris10 GPU негізіндегі карталар үшін жетіспейтін идентификаторлар қосылды;
    • Nouveau драйвері NVIDIA Turing 117 чипсетіне негізделген тақталарға қолдауды қосты (TU117, GeForce GTX 1650 жүйесінде қолданылады). IN
      kconfig қосылды libdrm ағымдағы шығарылымдарында енді пайдаланылмайтын ескірген функцияларды өшіру үшін орнату;

    • «Уақыт шкаласы» синхрондау нысандарын қолдау DRM API және amdgpu драйверіне қосылды, бұл классикалық блоктаусыз орындауға мүмкіндік береді.
    • VirtualBox виртуалды GPU үшін vboxvideo драйвері кезеңдік тармақтан негізгі құрылымға жылжытылды;
    • GFX SoC ASPEED чипіне арналған жылдамдық драйвері қосылды;
    • ARM SoC және Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi) қолдауы қосылды. ) тақталар RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Эккелман ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Кобо Аура (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Бұл ретте Латын Америкасының еркін бағдарламалық қамтамасыз ету қоры қалыптасты
опция толығымен бос ядро ​​5.2 - Linux-libre 5.2-gnu, көлемін өндіруші шектейтін бос емес құрамдастарды немесе код бөлімдерін қамтитын микробағдарлама және драйвер элементтерінен тазартылған. Жаңа шығарылым файлды жүктеп салуды қамтиды
Дыбыс ашық микробағдарлама. Драйверлерде блобтарды жүктеу өшірілген
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp және ucsi_ccg. ixp4xx, imx-sdma, amdgpu, nouveau және goya драйверлері мен ішкі жүйелеріндегі, сондай-ақ микрокод құжаттамасындағы blob тазалау коды жаңартылды. Жоюға байланысты r8822be драйверіндегі тазалауды тоқтатты.

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

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