С большой долей вероятности он будет назван «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: гонка за облачным трендом
- Бессерверные вычисления в облаке — тренд современности или необходимость?
Наш IaaS-блог в Telegram:
Комментарии (28)
balsoft
06.01.2019 15:22Резиденты Hacker News отмечают, что у Linux всегда были сложности с драйверами и количеством поддерживаемого железа. Обновления 4.20 помогли частично исправить эту проблему, расширив спектр доступных для работы архитектур. Однако ряд пользователей беспокоит тот факт, что с переходом на новое ядро ОС стала работать медленнее.
Причиной «регрессии» стал дополнительный код для защиты от Spectre. Патч STIBP активируется по умолчанию и приводит к «тормозам» на системах, использующих SMT/Hyper-Threading. В отдельных случаях производительность может снижаться на 50%. Линус Торвальдс уже поднимал вопрос о запуске функции по желанию пользователя, а не автоматически. Но пока с этим ничего не сделали.
Уже откатили для 4.19 и 4.14, и для 4.20 откатят.Temtaime
07.01.2019 11:53То они radeon.bapm не включают по-умолчанию, потому что он может приводить к «повышению потребления», а как затормозить всё вполовину — это норма.
hdfan2
06.01.2019 17:50-5Если следовать подходу Торвальдса к нумерации релизов по количеству пальцев у человека, версии 21 быть не должно.
Уже и сюда феминизм дотянулся. Нормальный мужик и 21 запросто показал бы.mapron
07.01.2019 11:49Я минус поставил не за пошлую шутку. При чем тут феминизм к чертям, за уши притянули…
dartraiden
06.01.2019 21:59+1Если следовать подходу Торвальдса к нумерации релизов по количеству пальцев у человека, версии 21 быть не должно.
В один прекрасный момент разработчики понимают, что вся эта проблема «пора ли менять мажорную версию» лишь порождает споры и отнимает драконценное время, после чего переходят на принцип «мажорная версия = новый выпуск, минорная — фиксы». Особенно, когда выпуск идёт по расписанию, а не по состоянию готовности новых фич. Много там накоммтили или мало, были крупные изменения или не было — прошло установленне графиком число дней — пора выкатывать релиз. Если что-то не доделано — оно в релиз не входит. В выигрыше пользователи, которые получают готовые фичи без необходимости ждать, пока там допилят неготовую фичу, из-за которой задерживается выпуск.
В случае с ядром Linux уже никакого смысла держаться за старую схему нумерации нет, ведь 4.21 ничем не отличается от 5.0 — это просто следующий выпуск по расписанию и всё.sumanai
07.01.2019 00:57принцип «мажорная версия = новый выпуск, минорная — фиксы»
Ужасный принцип, полностью противоречащий семантическому версионированию, когда по версии не понятен объём изменений. Как и выпуск по графику, что в некоторых случаях ведёт только к большому числу багов в релизе.MikailBag
07.01.2019 09:44СемВер — это про интерфейс. Интерфейс ядра — это системные вызова. Значит их и нужно версионировать. Вырезали флаг — +1 к мажорной версии.
OlegSchwann
07.01.2019 13:51Слава Линусу Торвальдсу, интерфейсы ядра не будут иметь мажорных изменений никогда, и существующие бинарники будут запускаться неограниченно долго.
Зачем тогда оставаться на версии 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.
Т.о. старый код будет работать на новых ядрах совсем некорректно.
netch80
07.01.2019 13:10Если в выпуске по графику включать фичи любой ценой — да, будут дефекты. Если включать только то, что готово — то качество будет нормальным. И это лучше, чем из-за одной фичи тормозить выход сотен других.
Про нумерацию согласен. Но она и сейчас в Linux никак не семантическая. Хоть немного на семантическую она была похожа в цепочке 2.0-2.2-2.4-2.6, и то, только в самых базовых чертах. Ну не ложится его разработка на semver.
И тут 4.20 выгоднее какое-нибудь 330 только компактностью первой цифры.
Frankenstine
07.01.2019 13:46Из Linux 4.20 убрали блочный шифр Speck, так как ранее в его реализации обнаружили бэкдоры.
Точно обнаружили? По ссылке написано что
По мнению специалистов, американцы не смогли доказать отсутствие в своих алгоритмах бэкдоров, открывающих спецслужбам доступ к зашифрованной информации. Впрочем, достоверных сведений о наличии таких дефектов у экспертов тоже нет.
amarao
07.01.2019 18:09«так как ранее в его реализации обнаружили бэкдоры.»
Учёные изнасиловали журналиста.
Не «обнаружили», а «заподозрили» и АНБ отказалась обсуждать этот вопрос. Разница в том, что когда обнаружат, это будет Big News, а пока что это только подозрения.
gt8one
09.01.2019 08:09По этой причине с большой долей вероятности 2019 станет годом рождения Linux kernel 5.0.
Уже на 5.0 сменили: Linux 5.0-rc1
Focushift
Может я чего-то не понимаю и сейчас отхвачу минусов, но добавление поддержки проца 835 и геймпада хбокс только сейчас, это мощно.
betrachtung
Я тоже не очень понимаю, но знаю, что практически все устройства с SD835 поставляются с ОС на базе ядра Linux.
Focushift
Производители/Гугл не делятся поддержкой проца?
LexS007
Для Snapdragon Qualcomm ведет отдельный репозиторий ядра на Code Aurora. Соответственно все патчи для новых процессоров добавляют там. А в исходном ядре Linux на данный момент действительно нет поддержки.
balsoft
Это просто мерж уже существующих патчей в upstream в связи с их нужностью и/или стабильностью, вот и всё. Поддержка для снапдрагонов 835 была обеспечена производителем в своём форке с момента их выпуска.
Ca5per
Поддержка геймпада до сих пор реализуется на уровне ядра, вот это мощь так мощь.
0xd34df00d
Это всего лишь означает, что драйвер для геймпада включили в основное дерево исходников ядра. А это, в свою очередь, означает, что сообщество разработчиков ядра теперь будет за ним следить и, например, обновлять по мере изменения ядерных API.
selenite
> сообщество разработчиков ядра теперь будет за ним следить и, например, обновлять по мере изменения ядерных API.
Там интереснее; геймпад от Xbox S уже работал, как HID-совместимое устройство. Просто сообщество, заинтересованное в поддержке SteamOS, а точнее оплаченные Valve сотрудники — протащило поддержку вибрации. (Вот уж что не могли в юзерспейс оставить, ага)