Что изменилось в Kconfig Linux 6.18 и зачем нужен transitional

Linux 6.18 и новая «фишка» Kconfig: почему это важно даже если вы не собираетесь лезть в исходники ядра

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

Linux
Linux

Что за зверь такой Kconfig?

Если вы не сталкивались: Kconfig — это система, которая позволяет при сборке ядра включать или выключать разные возможности. По сути, это меню из сотен (а иногда тысяч) галочек. Хочешь поддержку какого-нибудь драйвера — включаешь. Не хочешь лишнего мусора — выключаешь. Но всё это очень похоже на ремонт в старой квартире: убрал одну плитку, а за ней — проводка, труба и ещё куча неожиданностей. Так и с ядром: опции связаны друг с другом, и одно невинное изменение может вызывать эффект домино.

Зачем нужен «transitional»?

История простая. Допустим, у вас есть старая конфигурация ядра, где стоит опция «CONFIG_CFI_CLANG». Она отвечала за контроль целостности потока исполнения (CFI) при сборке с Clang. Всё работает, вы довольны. Но разработчики решили: теперь у нас и GCC умеет CFI, так что пора опцию переименовать в «CLANG_CFI». Логично, да? Только вот ваша старая сборка внезапно начинает ругаться: старой опции больше нет, а новая у вас не включена. И здравствуй, головная боль.

Раньше приходилось выкручиваться. Кто-то правил конфиг руками, кто-то тратил время на поиски новой опции, кто-то просто матерился и начинал всё с нуля. Теперь же появился атрибут «transitional», который работает как мостик: старая опция вроде бы остаётся, но фактически пересылает значение в новую. Для пользователя это выглядит так, будто всё просто работает.

Работает это примерно так

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

То есть «transitional» — это как переадресация почты. Старый ящик заколотили, но письма всё равно доходят, только уже на новый адрес. Никто не теряется, и система продолжает работать без сюрпризов.

Вот небольшой пример использования Kconfig

пример использования Kconfig
пример использования Kconfig

Почему это важно?

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

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

Ядро — это не всегда про героизм

Вот здесь я сделаю небольшое признание. Сам я никогда ядро руками не собирал. Даже не пытался. Каждый раз, когда натыкался на эти километровые списки опций, думал: «Нет, спасибо, лучше я посмотрю со стороны». Слишком много историй в духе «обновил ядро — пропал Wi-Fi, полдня ищу, что включить». И я, честно говоря, не готов жертвовать своим временим ради экспериментов.

Но наблюдать за этими изменениями всё равно интересно. Это как смотреть на ремонт двигателя машины: сам я туда не полезу, но знать, что механикам добавили новую удобную штуку, приятно. А вдруг однажды я всё-таки решусь собрать ядро ради эксперимента? Вот тогда такие улучшения могут реально спасти нервы.

Что сказал разработчик

Один из ключевых людей в разработке, Kees Cook, прямо объяснил, почему это нужно. Старые методы не работали: удалишь опцию — плохо, спрячешь — ещё хуже. Поэтому и придумали «transitional». Он просто передаёт старое значение в новую опцию и исчезает. Как тень, которая даёт свету место.

И тут мне нравится, что в сообществе Linux умеют думать о таких мелочах. Ведь именно они создают ощущение, что система развивается не только ради «вау-эффекта», но и ради удобства обычных пользователей (или любителей понаблюдать со стороны, вроде меня).

Итог

Linux 6.18 не принёс здесь революции. Но добавил аккуратный инструмент, который помогает пережить переименования опций без лишнего стресса. И это, как ни странно, делает систему дружелюбнее. Пусть даже многие этого никогда не заметят.

А лично для меня такие новости — это ещё один повод однажды попробовать собрать ядро самому. Просто ради эксперимента. А пока приятно осознавать, что под капотом всё становится немного аккуратнее и предсказуемее.


А вы пробовали когда-нибудь собирать ядро? Или, как и я, ограничиваетесь чтением историй и наблюдением за тем, как другие с этим мучаются? Напишите, интересно посчитать, сколько нас таких «любопытных, но осторожных».

Nazario

Я — Nazario, тот самый человек, который больше десяти лет ковыряется в Linux и Windows системах не ради хобби, а потому что это — работа и жизнь. Всё, что вы читаете на Setiwik.ru, — это не пересказ справки из мануала, а результат десятков реальных кейсов, выстраданных конфигов и ночных перезагрузок.

Я не претендую на истину в последней инстанции. Но если мой опыт может кому-то упростить работу — значит, всё это не зря. Здесь нет «магии», только практика: от настроек сервера до неожиданных багов, которые не гуглятся с первого раза.

Setiwik.ru — это место, где IT становится чуть менее хаотичным. Заходите почаще — будем разбираться вместе.

Добавить комментарий