Он пытается сохранить ваши существующие параметры.
чтобы увидеть, что происходит. Некоторые выводы:
Линии типа:
# CONFIG_XXX is not set
не просто комментарии, но фактически указывают, что параметр не установлен.
Например, если мы удалим строку:
# CONFIG_DEBUG_INFO is not set
и запустите make oldconfig
, он спросит нас:
Compile the kernel with debug info (DEBUG_INFO) [N/y/?] (NEW)
Когда он закончится, файл .config
будет обновлен.
Если вы измените какой-либо символ строки, например, до # CONFIG_DEBUG_INFO
, это не считается.
Линии типа:
# CONFIG_XXX is not set
всегда используются для отрицания свойства, хотя:
CONFIG_XXX=n
также понимается как отрицание.
Например, если вы удалите # CONFIG_DEBUG_INFO is not set
и ответите:
Compile the kernel with debug info (DEBUG_INFO) [N/y/?] (NEW)
с N
, тогда выходной файл содержит:
# CONFIG_DEBUG_INFO is not set
а не:
CONFIG_DEBUG_INFO=n
Также, если мы вручную изменим строку на:
CONFIG_DEBUG_INFO=n
и запустите make oldconfig
, тогда строка изменится на:
# CONFIG_DEBUG_INFO is not set
без oldconfig
нас не спросят.
Конфиги, чьи зависимости не встречаются, не отображаются на .config
. Все остальные делают.
Например, установить:
CONFIG_DEBUG_INFO=y
и запустить make oldconfig
. Теперь он запросит у нас: DEBUG_INFO_REDUCED
, DEBUG_INFO_SPLIT
и т. Д. Конфиги.
Эти свойства не отображались в defconfig
ранее.
Если мы посмотрим под lib/Kconfig.debug
, где они определены, мы увидим, что они зависят от DEBUG_INFO
:
config DEBUG_INFO_REDUCED
bool "Reduce debugging information"
depends on DEBUG_INFO
Так что, когда DEBUG_INFO
был выключен, они вообще не появлялись.
Конфиги, которые являются selected
включенными конфигами, автоматически устанавливаются без запроса пользователя.
Например, если CONFIG_X86=y
и мы удалим строку:
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
и запустите make oldconfig
, линия воссоздается, не спрашивая нас, в отличие от DEBUG_INFO
.
Это происходит потому, что arch/x86/Kconfig
содержит:
config X86
def_bool y
[...]
select ARCH_MIGHT_HAVE_PC_PARPORT
и выберите принудительно, чтобы эта опция была истинной. Смотрите также: https://unix.stackexchange.com/questions/117521/select-vs-depends-in-kernel-kconfig
Запрашиваются конфигурации, ограничения которых не выполняются.
Например, defconfig
установил:
CONFIG_64BIT=y
CONFIG_RCU_FANOUT=64
Если мы отредактируем:
CONFIG_64BIT=n
и запустите make oldconfig
, он спросит нас:
Tree-based hierarchical RCU fanout value (RCU_FANOUT) [32] (NEW)
Это потому, что RCU_FANOUT
определено в init/Kconfig
как:
config RCU_FANOUT
int "Tree-based hierarchical RCU fanout value"
range 2 64 if 64BIT
range 2 32 if !64BIT
Следовательно, без 64BIT
максимальное значение равно 32
, но у нас на .config
установлено 64
, что делает его несовместимым.