Linux 6.18 и новая «фишка» Kconfig: почему это важно даже если вы не собираетесь лезть в исходники ядра
Новости о ядре Linux обычно выглядят как магические заклинания: «CONFIG это, CONFIG то». И каждый раз думаешь: ну вот, ещё одна штука для тех, кто собирает ядро ночью под лампой и пьёт чёрный кофе литрами. Но тут, честно говоря, даже мне стало интересно. В версии 6.18 в систему конфигурации Kconfig добавили новый атрибут — «transitional». На первый взгляд, мелочь, но если присмотреться, то видно, что это реально упрощает жизнь тем, кто работает с настройками ядра.

Что за зверь такой Kconfig?
Если вы не сталкивались: Kconfig — это система, которая позволяет при сборке ядра включать или выключать разные возможности. По сути, это меню из сотен (а иногда тысяч) галочек. Хочешь поддержку какого-нибудь драйвера — включаешь. Не хочешь лишнего мусора — выключаешь. Но всё это очень похоже на ремонт в старой квартире: убрал одну плитку, а за ней — проводка, труба и ещё куча неожиданностей. Так и с ядром: опции связаны друг с другом, и одно невинное изменение может вызывать эффект домино.
Зачем нужен «transitional»?
История простая. Допустим, у вас есть старая конфигурация ядра, где стоит опция «CONFIG_CFI_CLANG». Она отвечала за контроль целостности потока исполнения (CFI) при сборке с Clang. Всё работает, вы довольны. Но разработчики решили: теперь у нас и GCC умеет CFI, так что пора опцию переименовать в «CLANG_CFI». Логично, да? Только вот ваша старая сборка внезапно начинает ругаться: старой опции больше нет, а новая у вас не включена. И здравствуй, головная боль.
Раньше приходилось выкручиваться. Кто-то правил конфиг руками, кто-то тратил время на поиски новой опции, кто-то просто матерился и начинал всё с нуля. Теперь же появился атрибут «transitional», который работает как мостик: старая опция вроде бы остаётся, но фактически пересылает значение в новую. Для пользователя это выглядит так, будто всё просто работает.
Работает это примерно так
- Старая опция остаётся «живой» в старых конфигах.
- В меню вы её больше не увидите.
- В новые конфиги она не записывается.
- Но ядро понимает: ага, у тебя раньше это было включено — значит, включим и новую версию.
То есть «transitional» — это как переадресация почты. Старый ящик заколотили, но письма всё равно доходят, только уже на новый адрес. Никто не теряется, и система продолжает работать без сюрпризов.
Вот небольшой пример использования Kconfig

Почему это важно?
Если честно, это тот случай, когда небольшое улучшение решает кучу проблем. Раньше разработчики стояли перед выбором: либо сломать совместимость, либо оставить «мусор» в конфиге, либо вообще спрятать опцию так, что ядро её игнорирует. Все варианты были неудобные. А теперь есть цивилизованное решение — без боли и бессонных ночей.
И да, для большинства обычных пользователей это может пройти незаметно. Вы просто обновите Linux, и всё будет работать. Но для тех, кто собирает своё ядро или поддерживает десятки конфигов на серверах, это как тихая радость: жизнь стала чуть проще.
Ядро — это не всегда про героизм
Вот здесь я сделаю небольшое признание. Сам я никогда ядро руками не собирал. Даже не пытался. Каждый раз, когда натыкался на эти километровые списки опций, думал: «Нет, спасибо, лучше я посмотрю со стороны». Слишком много историй в духе «обновил ядро — пропал Wi-Fi, полдня ищу, что включить». И я, честно говоря, не готов жертвовать своим временим ради экспериментов.
Но наблюдать за этими изменениями всё равно интересно. Это как смотреть на ремонт двигателя машины: сам я туда не полезу, но знать, что механикам добавили новую удобную штуку, приятно. А вдруг однажды я всё-таки решусь собрать ядро ради эксперимента? Вот тогда такие улучшения могут реально спасти нервы.
Что сказал разработчик
Один из ключевых людей в разработке, Kees Cook, прямо объяснил, почему это нужно. Старые методы не работали: удалишь опцию — плохо, спрячешь — ещё хуже. Поэтому и придумали «transitional». Он просто передаёт старое значение в новую опцию и исчезает. Как тень, которая даёт свету место.
И тут мне нравится, что в сообществе Linux умеют думать о таких мелочах. Ведь именно они создают ощущение, что система развивается не только ради «вау-эффекта», но и ради удобства обычных пользователей (или любителей понаблюдать со стороны, вроде меня).
Итог
Linux 6.18 не принёс здесь революции. Но добавил аккуратный инструмент, который помогает пережить переименования опций без лишнего стресса. И это, как ни странно, делает систему дружелюбнее. Пусть даже многие этого никогда не заметят.
А лично для меня такие новости — это ещё один повод однажды попробовать собрать ядро самому. Просто ради эксперимента. А пока приятно осознавать, что под капотом всё становится немного аккуратнее и предсказуемее.
А вы пробовали когда-нибудь собирать ядро? Или, как и я, ограничиваетесь чтением историй и наблюдением за тем, как другие с этим мучаются? Напишите, интересно посчитать, сколько нас таких «любопытных, но осторожных».