Вышел Linux 4.20 — что изменилось в новой версии ядра +27


Мы уже рассказывали о нововведениях, которые были сделаны в Linux kernel 4.18. Сегодня поговорим о том, что внедрили в 4.20, и проведем краткий обзор последующего релиза.

С большой долей вероятности он будет назван «5.0».


/ фото Gregory «Slobirdr» Smith CC BY-SA

Последняя версия ядра вышла в минувшем декабре. Обновление доступно для скачивания на официальном сайте. Этот релиз стал рекордсменом по числу добавленных строк кода — их количество выросло на 354 тыс. Больше добавляли только в версии Linux 4.13 (сентябрь 2017). Среди главных обновлений: новые драйвера, усиление безопасности и изменения в работе с массивами.

Новые драйверы и новое железо


В Linux 4.20 добавили поддержку гибридных процессоров AMD Picasso и Raven 2, системы на кристалле Snapdragon 835 компании Qualcomm, а также китайского CPU Hygon Dhyana на базе архитектуры AMD Zen. Это расширит количество устройств, на которых получится запустить ОС Linux.

Также началась работа над кодом для архитектуры AMD Zen 2, однако в последующих версиях его ждут серьезные правки. Изменения коснулись и чипов Intel Icelake — разработчики добавили поддержку контроллера DSI и функциональность для управления режимами питания процессора.

Был добавлен код, отвечающий за работу с AMD Vega 20, хотя его продолжат совершенствовать как минимум до выхода графического процессора (его релиз намечен на первый квартал 2019 года).

Изменения также коснулись драйвера VKMS (Virtual Kernel Mode-Setting), который добавили еще в прошлой версии ядра. Он симулирует простейшее виртуальное устройство вывода и используется для организации работы X-сервера или любой другой графической подсистемы на машинах без монитора. При этом он предоставляет возможность использовать имеющиеся GPU. В Linux kernel 4.20 VKMS получил поддержку GEM и курсора.

Также новое ядро получило возможность работать с трекпадами Apple Magic Trackpad 2 и контроллерами Xbox.

Изменения в работе с массивами


Из ядра убрали массивы переменной длины (VLA), размер которых определяется на этапе выполнения, а не компиляции кода. Они замедляли работу и могли влиять на безопасность операционной системы. Линуса Торвальдса уже давно просили избавиться от VLA, да и сам он активно критиковал решение использовать массивы переменной длины. В kernel 4.20 большую часть из них наконец исключили.

Также была реализована структура данных XArray, которую пытались внедрить еще в 4.17. Это абстрактный тип данных, который ведет себя как большой массив указателей. В отличие от динамических массивов, при использовании XArray не нужно что-то менять в блоке управления памятью для расширения структуры. Но пока на XArray переводят только страничный кэш ядра и memremap.

Обновления безопасности


Из Linux 4.20 убрали блочный шифр Speck, так как имелись подозрения о наличии бэкдоров в его реализации. Еще внедрили функцию STACKLEAK (не попала в 4.19), которая защищает пользователей Linux от нескольких типов уязвимостей.

В частности, она сокращает объемы полезной для злоумышленников информации, поступающей из стека ядра в пользовательское пространство. Также STACKLEAK блокирует ряд атак на неинициализированные переменные и предлагает инструменты для слежения за «переполнением» стека ядра.

Еще в Linux 4.20 добавили патч STIBP (Single Thread Indirect Branch Predictors), защищающий от атак типа Spectre. Они нацелены на аппаратную уязвимость современных процессоров, связанную с реализацией спекулятивных вычислений.

Что думает сообщество о Linux kernel 4.20


Резиденты Hacker News отмечают, что у Linux всегда были сложности с драйверами и количеством поддерживаемого железа. Обновления 4.20 помогли частично исправить эту проблему, расширив спектр доступных для работы архитектур. Однако ряд пользователей беспокоит тот факт, что с переходом на новое ядро ОС стала работать медленнее.

Причиной «регрессии» стал дополнительный код для защиты от Spectre. Патч STIBP активируется по умолчанию и приводит к «тормозам» на системах, использующих SMT/Hyper-Threading. В отдельных случаях производительность может снижаться на 50%. Линус Торвальдс уже поднимал вопрос о запуске функции по желанию пользователя, а не автоматически. Но пока с этим ничего не сделали.

Как отметил в комментариях balsoft, снижение производительности Linux из-за STIBP стало причиной, по которой этот код изъяли из ядра версий 4.19.4 и 4.14.83. Поэтому есть основания полагать, что в будущем разработчики выпустят kernel 4.20 без патча, противодействующему атакам Spectre.


/ фото hackNY.org CC BY-SA

Чему «научат» 5.0


Если следовать подходу Торвальдса к нумерации релизов по количеству пальцев у человека, версии 21 быть не должно. По этой причине с большой долей вероятности 2019 станет годом рождения Linux kernel 5.0.

Среди улучшений грядущей версии будет поддержка нового аппаратного обеспечения и дополнительных устройств. Вероятно, пользователям предоставят возможность подключить геймерскую клавиатуру Cougar 700K и работать с Chameleon96 — FPGA компании Intel.

Продолжится работа над проблемой Y2038 и другими вопросами безопасности, а также новыми драйверами для графических, гибридных и центральных процессоров. Еще в ядро должен будет прийти долгожданный VPN-туннель WireGuard.

Еще в следующем релизе появится подсистема I3C, которую не успели добавить в 4.20. Она воплощает преимущества протоколов I2C и SPI и подходит для работы с IoT.



Первый блог о корпоративном IaaS:


Наш IaaS-блог в Telegram:




К сожалению, не доступен сервер mySQL