company_banner

Linux Kernel 5.8: что нового в ядре с самым большим количеством изменений за всю историю



    Линус Торвальдс наконец-то представил релиз ядра Linux 5.8. О планируемых новшествах мы писали задолго до этого события, но теперь планы стали реальностью, так что изменения можно обсудить. Размер патча составил 65 МБ, затронуто 16180 файлов, плюс добавлено 1043240 строк кода.

    Наиболее заметными и ожидаемыми нововведениями стали:

    • детектор состояний гонки KCSAN;
    • универсальный механизм доставки уведомлений в пространство пользователя;
    • поддержка оборудования inline-шифрования;
    • расширенные механизмы защиты для ARM64;
    • возможность раздельного монтирования экземпляров procfs;
    • реализация для ARM64 механизмов защиты Shadow Call Stack и BTI.

    Еще ядро поддерживает российский процессор Baikal-T1.

    Теперь подробнее об изменениях.

    Они разделяются на нескольких категорий. Это виртуализация и безопасность, память с системными сервисами, дисковая подсистема, файловые системы, сетевая подсистема и «железо».

    40% изменений в новом ядре связано с драйверами, 16% — с обновлением кода для различных процессорных архитектур, 10% — с сетевым стеком, 3% — с файловыми системами.

    Виртуализация и безопасность


    • Добавлено создание отдельных экземпляров procfs, что дает возможность использовать сразу несколько точек монтирования с разными опциями. При этом отражается лишь одно пространство pid namespace.
    • Появилась возможность блокировки загрузки модулей ядра с секциями с кодом, где разрешено исполнение и запись. Это изменение является частью проекта, цель которого — избавить ядро от страниц памяти, которые допускают одновременно как исполнение, так и запись.
    • Платформа ARM64 получила поддержку механизма Shadow-Call Stack. Он предоставляет защиту от перезаписи адреса возврата из функции в случае переполнения буфера в стеке.
    • Теперь есть поддержка оборудования для inline-шифрования блочных устройств (Inline Encryption).
    • Добавлен параметр командной строки ядра initrdmem, что позволяет указать физический адрес размещения initrd в памяти при размещении начального загрузочного образа в ОЗУ.
    • Эта же платформа получила поддержку инструкций ARMv8.5-BTI (Branch Target Indicator). Необходима она для защиты выполнения наборов инструкций, на которые не должны выполняться переходы при ветвлении.
    • Появились новые capability: CAP_PERFMON — с доступом к подсистеме perf и выполнением мониторинга производительности; CAP_BPF — с разрешением выполнений некоторых операций с BPF.
    • Благодаря новому устройству virtio-mem есть возможность задействовать горячее подключение с отключением памяти к гостевым системам.
    • Реализована защита от уязвимости CROSSTalk/SRBDS.

    Память и системные сервисы


    • Появился универсальный механизм доставки уведомлений из ядра в пространство пользователя. Этот механизм основан на штатном драйвере pipe и дает возможность эффективно распределять уведомления от ядра по каналам, открытым в пространстве пользователя.
    • В ядро добавлен отладочный инструмент KCSAN (Kernel Concurrency Sanitizer), который предназначен для динамического выявления состояний гонки внутри ядра.
    • В Group появилась настройка memory.swap.high. Она предназначена для замедления задач, которые занимают слишком большой объем файла подкачки.
    • Расширены возможности функциональности pidfd, которая позволяет обрабатывать ситуации с повторным использованием PID.
    • Добавлен системный вызов faccessat2(). Он отличается от faccessat() дополнительным аргументом с флагами, которые соответствуют рекомендациям POSIX.
    • Добавлен механизм BPF iterator. Он нужен для вывода в пространство пользователя содержимого структур ядра.
    • Механизм padata получил поддержку многопоточных задач с балансировкой нагрузки.
    • Теперь есть новый API выделения буферов (AF_XDP), который позволяет упростить написание XDP-сетевых драйверов.
    • Как и планировалось ранее, появились рекомендации по использованию терминов 'master / slave' и 'blacklist / whitelist'.


    Источник

    Дисковая подсистема, I/O, файловые системы


    • F2FS получила поддержку сжатия с использованием алгоритма LZO-RLE.
    • В CIFS появился параметр nodele, который допускает штатные проверки прав на сервере с одновременным запретом удаления файлов или каталогов для клиента.
    • В Device Manager появился новый обработчик emulate block size. Он позволяет эмулировать логический блок меньшего размера. Пример — эмуляция 512-байтных секторов на дисках с размером сектора 4К.
    • Ext4 теперь лучше обрабатывает ошибку EXOSPC при использовании многопоточности.
    • Для Ext4 и XFS включена поддержка операций DAX в привязке к отдельным файлам и каталогам.
    • В EXFAT теперь есть поддержка верификации загрузочной области.
    • FAT получила упреждающую загрузку элементов ФС. Тест 2ТБ накопителя, подключенного по USB, занял 51 секунду вместо 383, как раньше.

    Сетевая подсистема


    • В ядре и утилите ethtool теперь появилась поддержка функций тестирования подключенного сетевого кабеля и самодиагностики сетевых устройств. Конечно, чтобы эта возможность работала, нужна и аппаратная поддержка, так что чисто программного ничего нового «не вырастет».
    • В код управления работой сетевых мостов добавлена поддержка протокола Media Redundancy Protocol. Он позволяет обеспечить отказоустойчивость за счет «закольцовывания» нескольких Ethernet-коммутаторов.
    • В IPv6-стеке теперь есть поддержка сжатия диапазонов в ответах выборочного подтверждения.
    • Для IPv6 добавлена поддержка TCP-LD.

    Оборудование


    • DRM-драйвер i915 для видеокарт Intel получил по умолчанию поддержку чипов Intel Tiger Lake (GEN12). В свою очередь, чипы теперь совместимы с системой SAGV (System Agent Geyserville). Она позволяет подстраивать частоту и напряжение в зависимости от требований к энергопотреблению/производительности.
    • Добавлена поддержка устройств Renesas RZ/G1H, Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50, Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI.
    • Появилась поддержка датчиков энергопотребления процессоров AMD Zen и Zen 2, плюс датчиков температуры AMD Ryzen 4000 Renoir.
    • В драйвер amdgpu добавлена поддержка пиксельного формата FP16 с реализацией возможности работы с оцифрованными буферами в видеопамяти.
    • Драйвер Nouveau получил поддержку формата модификаторов NVIDIA.
    • В драйвере MSM (Qualcomm) теперь есть поддержка GPU Adreno A405, A640 и A650.
    • Поддерживаются смартфоны Xiaomi Redmi Note 7, Samsung Galaxy S2 и ноутбуки Elm/Hana Chromebook.
    • Появилась поддержка российского процессора Baikal-T1 и системы на кристалле BE-T1000.

    После релиза ядра латиноамериканский фонд свободного ПО выложил вариант свободного ядра Linux-libre 5.8-gnu. В нем нет несвободных компонентов или участков кода, использование которых ограничено производителем.

    Какие изменения пригодятся вам в работе? Что является наиболее значимым и востребованным? Давайте обсудим в комментариях.
    Selectel
    ИТ-инфраструктура для бизнеса

    Комментарии 24

      +3
      У Линуса Торвальдса после перехода на процессор AMD резко повысилась производительность труда?
          +1
          тем не менее он все еще определяет, какие коммиты войдут в новый релиз, а значит, ему тоже надо компилировать ядро, и снижение времени компиляции ядра до 30 секунд на новом TR3970X — это имхо хорошее повышение производительности труда.
        +4
        Наконец-то доперло, что для адресов возврата из функций лучше делать отдельный стек, а не смешивать с локальными переменными. Больше 40 лет прошло с момента появления Motorola 6809 с двумя стеками, а остальные только сейчас поняли, что неплохо бы иметь и использовать по назначению.
          0

          Btrfs всё ?

            0

            Вряд ли. Вот взяли все и внезапно стали работать больше? Похоже на тупость? А так оно и есть — просто поменяли в сорсах black да slave.

              0
              0
              Знающие, подскажите, когда теперь ждать обновления дистрибутивов?
                0
                зачем ждать? качайте пакеты отсюда и ставьте через dpkg.
                0
                >> Samsung Galaxy S2

                хехе, внезапно влили оверлеи для 9и летнего телефона. зачем?
                UPD: вероятно вот зачем: allsoftwaresucks.blogspot.com/2020/05/on-samsung-and-exynos-hacking-again.html
                  0
                  А что вообще значит, что добавлена поддержка этих смартфонов? У андроида ж свои патчи на ядро, какой смысл запускать ванильное ядро линукса на смартфоне? Или это влияет на андроид тоже?
                    +1
                    Если почитаешь по ссылке, то все поймешь. Если кратко, то запуск ядра Linux без Android вообще. Ну чтоб можно было использовать плату из телефона как Raspberry Pi например.
                      0
                      использовать плату из телефона как Raspberry Pi например.
                      вот! Так понятнее (хотя все равно не очень понятно зачем, ну допустим). А то целый собранный телефон использовать с чистым линуксом не особо представляю зачем.
                      0
                      Вот пример от автора с реальной убунтой и иксами:
                      www.youtube.com/watch?v=VHl8PytVt50
                        +1

                        Как человек с Debian на телефоне скажу, что главный шоустопер — жуткие тормоза по внутреннему диску. Достаточно запустить почтовый клиент и как в старые добрые времена пойти покурить минту 7-10.
                        Может я не знаю как правильно затьюнить ФС, но пока это не очень кекс...

                          0
                          Вот поэтому UFS и появился (а эппл вообще nvme запихали в айфоны).
                            0

                            Круто, конечно — только зачем ему NVMe вообще не ясно...

                              0
                              Ну теперь, после анонса перехода с интел на arm в их компах — стало ясно. Да и в принципе вполне логично не изобретать было новое (ufs), а взять уже готовый nvme и использовать его.
                    –1
                    с самым большим количеством изменений за всю историю

                    Мне кажется, или я этот заголовок уже читал?
                    Как и планировалось ранее, появились рекомендации по использованию терминов 'master / slave' и 'blacklist / whitelist'.

                    Всё пропало.
                      +1
                      Если каждое следующее обновление будет больше предыдущего, то каждое из них будет самым большим на момент выхода
                      Логично же
                        0
                        Что-то вспомнилось «Банан велик, а кожура еще больше...».
                      0
                      Компилировал с ауры, 5.7 из раних версий, прилетела поддержка черепичных жестянок, по умолчанию — отключенно.
                      до 5.8 руки не дошли.
                        0
                        Вот что ковид животворящий делает совместно с локдауном. Я так понимаю при работе из дома у многих айтишников КПД вырос?
                          0
                          Смотря чего.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое