Мы уже рассказывали о нововведениях, которые были сделаны в 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:

Комментарии (28)


  1. Focushift
    06.01.2019 14:32
    +2

    Может я чего-то не понимаю и сейчас отхвачу минусов, но добавление поддержки проца 835 и геймпада хбокс только сейчас, это мощно.


    1. betrachtung
      06.01.2019 14:36
      +1

      Я тоже не очень понимаю, но знаю, что практически все устройства с SD835 поставляются с ОС на базе ядра Linux.


      1. Focushift
        06.01.2019 14:44

        Производители/Гугл не делятся поддержкой проца?


      1. LexS007
        06.01.2019 14:51
        +3

        Для Snapdragon Qualcomm ведет отдельный репозиторий ядра на Code Aurora. Соответственно все патчи для новых процессоров добавляют там. А в исходном ядре Linux на данный момент действительно нет поддержки.


    1. balsoft
      06.01.2019 15:17
      +1

      Это просто мерж уже существующих патчей в upstream в связи с их нужностью и/или стабильностью, вот и всё. Поддержка для снапдрагонов 835 была обеспечена производителем в своём форке с момента их выпуска.


    1. Ca5per
      06.01.2019 16:43
      +3

      Поддержка геймпада до сих пор реализуется на уровне ядра, вот это мощь так мощь.


      1. 0xd34df00d
        06.01.2019 19:59
        +3

        Это всего лишь означает, что драйвер для геймпада включили в основное дерево исходников ядра. А это, в свою очередь, означает, что сообщество разработчиков ядра теперь будет за ним следить и, например, обновлять по мере изменения ядерных API.


        1. selenite
          07.01.2019 15:49

          > сообщество разработчиков ядра теперь будет за ним следить и, например, обновлять по мере изменения ядерных API.

          Там интереснее; геймпад от Xbox S уже работал, как HID-совместимое устройство. Просто сообщество, заинтересованное в поддержке SteamOS, а точнее оплаченные Valve сотрудники — протащило поддержку вибрации. (Вот уж что не могли в юзерспейс оставить, ага)


  1. balsoft
    06.01.2019 15:22

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

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

    Уже откатили для 4.19 и 4.14, и для 4.20 откатят.


    1. GamaleyVV
      06.01.2019 19:07

      backward-compatible необходим — барахла много.


    1. Temtaime
      07.01.2019 11:53

      То они radeon.bapm не включают по-умолчанию, потому что он может приводить к «повышению потребления», а как затормозить всё вполовину — это норма.


  1. hdfan2
    06.01.2019 17:50
    -5

    Если следовать подходу Торвальдса к нумерации релизов по количеству пальцев у человека, версии 21 быть не должно.

    Уже и сюда феминизм дотянулся. Нормальный мужик и 21 запросто показал бы.


    1. dmitry_dvm
      06.01.2019 19:33

      Тоже с ногтем?


      1. igordata
        06.01.2019 22:40
        +1

        35см


    1. mapron
      07.01.2019 11:49

      Я минус поставил не за пошлую шутку. При чем тут феминизм к чертям, за уши притянули…


  1. dartraiden
    06.01.2019 21:59
    +1

    Если следовать подходу Торвальдса к нумерации релизов по количеству пальцев у человека, версии 21 быть не должно.

    В один прекрасный момент разработчики понимают, что вся эта проблема «пора ли менять мажорную версию» лишь порождает споры и отнимает драконценное время, после чего переходят на принцип «мажорная версия = новый выпуск, минорная — фиксы». Особенно, когда выпуск идёт по расписанию, а не по состоянию готовности новых фич. Много там накоммтили или мало, были крупные изменения или не было — прошло установленне графиком число дней — пора выкатывать релиз. Если что-то не доделано — оно в релиз не входит. В выигрыше пользователи, которые получают готовые фичи без необходимости ждать, пока там допилят неготовую фичу, из-за которой задерживается выпуск.

    В случае с ядром Linux уже никакого смысла держаться за старую схему нумерации нет, ведь 4.21 ничем не отличается от 5.0 — это просто следующий выпуск по расписанию и всё.


    1. sumanai
      07.01.2019 00:57

      принцип «мажорная версия = новый выпуск, минорная — фиксы»

      Ужасный принцип, полностью противоречащий семантическому версионированию, когда по версии не понятен объём изменений. Как и выпуск по графику, что в некоторых случаях ведёт только к большому числу багов в релизе.


      1. MikailBag
        07.01.2019 09:44

        СемВер — это про интерфейс. Интерфейс ядра — это системные вызова. Значит их и нужно версионировать. Вырезали флаг — +1 к мажорной версии.


        1. OlegSchwann
          07.01.2019 13:51

          Слава Линусу Торвальдсу, интерфейсы ядра не будут иметь мажорных изменений никогда, и существующие бинарники будут запускаться неограниченно долго.

          Зачем тогда оставаться на версии 1 навсегда?


          1. MikailBag
            07.01.2019 14:21

            Из того, что я лично натыкался: (это из clone)
            CLONE_STOPPED (since Linux 2.6.0-test2)
            If CLONE_STOPPED is set, then the child is initially stopped (as though it was sent a SIGSTOP signal), and must be resumed by sending it a SIGCONT signal.


            This flag was deprecated from Linux 2.6.25 onward, and was removed altogether in Linux 2.6.38. 

            Сейчас это значение переиспользовано для вроде CLONE_NEWCGROUP.


            Т.о. старый код будет работать на новых ядрах совсем некорректно.


      1. netch80
        07.01.2019 13:10

        Если в выпуске по графику включать фичи любой ценой — да, будут дефекты. Если включать только то, что готово — то качество будет нормальным. И это лучше, чем из-за одной фичи тормозить выход сотен других.
        Про нумерацию согласен. Но она и сейчас в Linux никак не семантическая. Хоть немного на семантическую она была похожа в цепочке 2.0-2.2-2.4-2.6, и то, только в самых базовых чертах. Ну не ложится его разработка на semver.
        И тут 4.20 выгоднее какое-нибудь 330 только компактностью первой цифры.


  1. Gamliel_Fishkin
    07.01.2019 00:06

    1. chupasaurus
      08.01.2019 06:56

      Данный набор патчей был отклонён в тот же день Грегом, емнип.


  1. darthmaul
    07.01.2019 00:16

    Про укуреных разработчиков уже шутили?


    1. balsoft
      07.01.2019 00:56
      -1

      Блин, только зашел написать про обнимашки, толерантность и марихуану, а тут уже без меня на все темы пошутили :(


  1. Frankenstine
    07.01.2019 13:46

    Из Linux 4.20 убрали блочный шифр Speck, так как ранее в его реализации обнаружили бэкдоры.

    Точно обнаружили? По ссылке написано что
    По мнению специалистов, американцы не смогли доказать отсутствие в своих алгоритмах бэкдоров, открывающих спецслужбам доступ к зашифрованной информации. Впрочем, достоверных сведений о наличии таких дефектов у экспертов тоже нет.


  1. amarao
    07.01.2019 18:09

    «так как ранее в его реализации обнаружили бэкдоры.»

    Учёные изнасиловали журналиста.

    Не «обнаружили», а «заподозрили» и АНБ отказалась обсуждать этот вопрос. Разница в том, что когда обнаружат, это будет Big News, а пока что это только подозрения.


  1. gt8one
    09.01.2019 08:09

    По этой причине с большой долей вероятности 2019 станет годом рождения Linux kernel 5.0.
    Уже на 5.0 сменили: Linux 5.0-rc1