Найти в Дзене

Вышло самое крупное в истории обновление Linux. В него впервые добавлена поддержка российского процессора

Ядро Linux обновилось до версии 5.8. Работа над ней длилась два месяца, и за это время разработчики внесли в ядро свыше 17,6 тыс. изменений, включая 1,04 млн новых строчек кода. Это самое крупное обновление за все 29 лет существования Linux, и в него впервые в истории добавили поддержку российского процессора – Baikal T1. «Российский след» в ядре Linux Глава команды разработчиков Linux Линус Торвальдс (Linus Torvalds) объявил о выпуске ядра Linux, получившего, по его словам, самое большое число нововведений за всю историю проекта. В новой версии девелоперы постарались внести изменения в как можно большее число составляющих ядра. На нововведения в ядро Linux, связанные с поддержкой «железа», пришлось больше трети всех изменений, почти 40%. В частности, в него впервые в истории была добавлена поддержка российского процессора. «Первенцем», как сообщал CNews, стал 28-нанометровый чип Baikal-T1 компании Baikal Electronics. Общее число изменений в коде ядра, имеющих отношение нему, превыси
Оглавление

Ядро Linux обновилось до версии 5.8. Работа над ней длилась два месяца, и за это время разработчики внесли в ядро свыше 17,6 тыс. изменений, включая 1,04 млн новых строчек кода. Это самое крупное обновление за все 29 лет существования Linux, и в него впервые в истории добавили поддержку российского процессора – Baikal T1.

«Российский след» в ядре Linux

Глава команды разработчиков Linux Линус Торвальдс (Linus Torvalds) объявил о выпуске ядра Linux, получившего, по его словам, самое большое число нововведений за всю историю проекта. В новой версии девелоперы постарались внести изменения в как можно большее число составляющих ядра.

На нововведения в ядро Linux, связанные с поддержкой «железа», пришлось больше трети всех изменений, почти 40%. В частности, в него впервые в истории была добавлена поддержка российского процессора.

«Первенцем», как сообщал CNews, стал 28-нанометровый чип Baikal-T1 компании Baikal Electronics. Общее число изменений в коде ядра, имеющих отношение нему, превысило 40, и все они вошли сперва в предварительную сборку 5.8-rc2 (Release Candidate), вышедшую 22 июня 2020 г., чтобы затем появиться и в финальном релизе.

Baikal-T1 был разработан с использованием блока процессорного ядра MIPS32 P5600 Warrior, лицензированного у компании Imagination Technologies, и выпущен в конце мая 2015 г. Его первые образцы стали доступны для разработчиков с 1 июня 2015 г.

lin601.jpg
lin601.jpg

MIPS-процессор Baikal Electronics «прорубил окно» российским чипам в мир Linux

В составе Baikal-T1 есть два суперскалярных ядра P5600 MIPS 32 r5 на частоте 1,2 ГГц, 1 МБ кэш-памяти второго уровня, контроллеры PCIe Gen.3 х4 и оперативной памяти DDR3-1600 ECC, а также следующие интегрированные интерфейсы: один порт Ethernet 10Gb, 2 Ethernet 1Gb, два порта SATA 3.0 и один USB 2.0.

Процессор потребляет менее 5 Вт энергии и поставляется в корпусе HFCBGA-576 размерами 25х25 мм. Число контактных выводов – 576 с шагом 1 мм.

Гигантский апдейт

На работу над Linux 5.8 ушло около двух месяцев – премьера сборки 5.7 состоялась 31 мая 2020 г., а к работе над 5.8 команда разработчиков приступила в первых числах июня 2020 г. За этот период к внедрению принято свыше 17,6 тыс. исправлений, подготовленных командой из более чем 2080 разработчиков со всего мира.

lin600.jpg
lin600.jpg

Ядро Linux 5.8 стало рекордсменом по числу изменений

Изменения были внесены приблизительно в 20% файлов, хранящихся в репозитории с кодом ядра, а это около 16,2 тыс. файлов. Из кода было удалено более 489,8 тыс. строк кода, но суммарное их число все равно увеличилось за счет добавления более 1,04 млн новых строчек.

Итоговый размер патча 5.8 к ядру достиг 65 МБ (мегабайтов) против 39 МБ у версии 5.7, разработка которой тоже заняла около двух месяцев. Она содержала немногим более 15 тыс. модификаций кода. Планы на Linux 5.9 разработчики пока не раскрывают.

Прочие «аппаратные» нововведения

К ключевым изменениям относятся общий код ядра и архитектуры MIPS CPU P5600, конфиг сборки ядра специфичного для CPU MIPSr5, а также конфиг сборки ядра специфичного для CPU P5600. Помимо этого, в ядро была добавлена поддержка детектирования и расшифровки CM2 L2 ECC ошибок и MAAR-регистров в режиме XPA, доработан драйвер R4K clocksource для работы при включенном CPU-freq, интегрирована регистрация таймера в качестве sched_clock и др.

Вместе с Baikal T1 в Linux 5.8 появилась поддержка китайского MIPS- процессора Loongson-2K и заодно Android-смартфонов Xiaomi Redmi Note 7, вышедшего в январе 2019 г. и Samsung Galaxy S2 образца 2011 г. Также разработчики обучили ядро Linux корректной работе с сенсорами энергопотребления процессоров AMD на архитектурах Zen и Zen2 и датчиков температуры новейших чипов AMD Ryzen поколения 4000 Renoir, дебютировавших в 2020 г.

Про «железо» Intel тоже не забыли – в DRM-драйвер i915 для интегрированных видеоускорителей Intel была добавлена поддержка процессоров семейства Tiger Lake. В список нововведений также вошли драйверы для ARM-чипов Rockchip RK3326 и MediaTek MT6765, тогда как драйвер Qualcomm теперь работает с видеоядрами Adreno 405, 640 и 650.

Вместе с изменениями, относящимися к «железу», разработчики внесли в Linux 5.8 изменения, связанные с сетевым стеком. Их приблизительно 11% от общего числа, а еще 4% - это изменения во внутренних подсистемах ядра, и 3% связаны с поддержкой файловых систем.

История Linux

К работе над Linux Линус Торвальдс приступил в 1991 г. в возрасте 22 лет, взяв за основу будущего ядра UNIX-совместимую ОС MINIX. Превратить его позднее в полноценную ОС ему помог набор утилит и программ, разработанных в рамках проекта GNU Ричарда Столлмана (Richard Stollman).

В последующие годы к разработке Linux примкнули различные энтузиасты, с которыми Торвальдс взаимодействовал посредством usenet и интернета. Итогом их совместной работы стал выпуску ядра Linux 1.0 в 1994 г.

К 2020 г. сообщество разработчиков Linux разрослось до мировых масштабов. Посильную помощь им оказывают крупные ИТ-корпорации, в том числе AMD, Google, IBM, Intel, Oracle и Samsung. Сам Торвальдс, по его собственному признанию, больше не занимается программированием – вместо этого он, как сообщал CNews, большую часть времени отвечает на электронные письма разработчиков из Linux-сообщества.

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'.
-3

Источник

Дисковая подсистема, 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. В нем нет несвободных компонентов или участков кода, использование которых ограничено производителем.

Источник