В ближайшее время произойдет одно серьезное изменение: Долгосрочная поддержка (LTS) ядер Linux сокращается с 6 до 2 лет.
В настоящее время существует шесть ядер LTS Linux – 6.1, 5.15, 5.10, 5.4, 4.19 и 4.14. В соответствии с текущим процессом, 4.14 будет отменен в январе 2024 года, и будет добавлено еще одно ядро. Однако в дальнейшем, когда ядро 4.14 и два последующих будут сняты с производства, замена им производиться не будет.
«Нет смысла поддерживать их так долго, потому что люди ими не пользуются». Я согласен. Хотя я уверен, что кто-то все еще использует 4.14 в производственной Linux-системе, их не так уж много.
- объясняет Джонатан Корбетт, разработчик ядра Linux
Другая причина, и, по мнению Корбетта, гораздо более серьезная проблема, чем просто поддержка LTS, заключается в том, что специалистов по сопровождению кода Linux становиться все меньше. Дело не в том, что разработчики – это проблема. Над каждым из последних выпусков Linux работало в среднем более 2 000 программистов – включая около 200 новых разработчиков. А вот с сопровождающими, которые проверяют код на соответствие и работоспособность – дело обстоит иначе.
Сопровождающие сталкиваются с многочисленными препятствиями на пути выполнения своей работы. Препятствие первое: Многим сопровождающим не платят за сопровождение. Они занимаются сопровождением кода в дополнение к своей основной работе. Вдобавок ко всему, они сталкиваются с растущими требованиями к своему времени – из-за нехватки персонала и из-за использования fuzzers для поиска ошибок. Хотя фаззеры и полезны, они также обнаруживают слишком много мелких ошибок, каждую из которых сопровождающие должны изучить и затем исправить.
Результат? Цитируя Йозефа Бацика, разработчика и сопровождающего файловой системы ядра Linux: «Мейнтейнеры сгорают потому что мейнтейнеры не масштабируются». Дэррик Вонг, еще один старший сопровождающий ядра Linux, добавил: «Этого нельзя допустить. Нам нужна помощь.»
Linux в качестве эксперимента переходит на язык Rust. Хотя это во многом хорошая новость – Rust устраняет целые классы ошибок, которым подвержен основной язык Linux C, – это также создает проблемы для сопровождающих. В конце концов, если сопровождающий 30 лет проработал на C, попросить его стать экспертом по Rust – большая проблема.
Кроме того, Rust все еще развивается. Чтобы заставить язык работать должным образом на глубоком уровне в Linux, требуется множество исправлений Rust. Это также означает, что вам потребуется много кода, чтобы обеспечить хорошую совместную работу Rust и Linux.
Есть и такие разработчики ядра Linux, которым Rust не нравится. Один из них сказал: «Возможно, существуют хорошо спроектированные и написанные части Linux, в которых за многие годы не возникало проблем с безопасностью памяти. Оскорбительно представлять это как улучшение по сравнению с тем, что было достигнуто теми, кто проделал всю эту тяжелую работу».
Тем не менее, Корбетт считает, что момент принятия решения – станет ли Rust основной частью ядра – наступит очень скоро. Он отметил, что этот день наступит, «когда мы объединим первую функцию, от которой зависят пользователи».
Этот день уже близок: По словам Корбетта, на подходе три новых важных дополнения к коду ядра Linux на основе Rust. Это реализация PuzzleFS, сервер файловой системы plan9 для чтения/записи, а также – что вызовет наибольший резонанс – драйвер графического процессора Apple M1. Теперь доступны драйверы Linux OpenGL ES 3.1 для графических процессоров Apple семейства M1 и M2, которые появились в конце августа 2023 года. Корбетт будет очень удивлен, если Rust не войдет в Linux на постоянной основе.
Еще одной темой новостей в последнее время стало то, что изменение компанией Red Hat лицензии на Red Hat Enterprise Linux (RHEL) привело к тому, что Oracle, SUSE и CIQ начали форк RHEL с Open Enterprise Linux Association (OpenELA). Если оставить в стороне коммерческие и лицензионные сложности, которые привели к этой борьбе, то есть еще и проблемы с ядром Linux.
Эти проблемы вращаются вокруг вопроса: Какое ядро следует использовать для своего дистрибутива Linux? Есть два реальных варианта:
- использовать последнее стабильное ядро
- использовать старое ядро, дополненное исправлениями
Red Hat и другие корпоративные дистрибьюторы Linux, как правило, поступают именно так.
Последнее также приводит к появлению ядер, ориентированных на конкретного производителя. И хотя это обеспечивает стабильность, но отдаляет такие дистрибутивы от поддержки сообщества и делает их зависимыми от конкретных производителей. Именно это последнее обстоятельство, которое в первую очередь привело к тому, что AlmaLinux и Rocky Linux начали создавать свои собственные версии CentOS (бесплатного клона RHEL от Red Hat) после того, как Red Hat закрыла CentOS в пользу CentOS Stream, стало причиной разлада между Red Hat и OpenELA. OpenELA хочет получить клон RHEL, который использует более старое исправленное ядро RHEL. Следите за дальнейшим развитием событий, так как этот конфликт продолжает разгораться.
С другой стороны, отметил Корбетт, Android «очень упорно продвигает этот общий образ ядра и основывает его на стабильных обновлениях. Это связано с тем, что, по их мнению, это помогает повысить безопасность Android. Они обнаружили, что подавляющее большинство проблем безопасности раскрывается в ядре и даже исправляется в ядрах Android до того, как они были раскрыты, потому что они уже были включены до того, как кто-то узнал, что это действительно ошибки, связанные с безопасностью».
«Один из интересных аспектов разработки ядра заключается в том, что практически все может быть ошибкой безопасности. И вы не знаете, что это так, пока кто-то не найдет способ использовать ее. Поэтому появляется огромное количество исправлений, которые не помечаются как исправления безопасности. Не потому, что сообщество разработчиков ядра пытается скрыть исправления безопасности. Я имею в виду, что иногда в них присутствует некоторая хитрость, которая мне лично не нравится. Но в большинстве случаев просто никто не знает, что эта ошибка – ошибка безопасности. Только позже кто-то догадывается об этом. Поэтому единственный способ защититься от такого рода ошибок – это установить все исправления».
- пояснил Корбетт
Вот почему Корбетт и все, кто действительно разбирается в Linux, рекомендуют, если вы собираете дистрибутив Linux, всегда включать в него все исправления. Для старых ядер, таких как 4.14, это может составлять до 26 799 фиксаций. Но если вы попытаетесь самостоятельно выбрать, какие патчи использовать, вы, несомненно, откроете двери для дыр в системе безопасности.
Комментарии (0)