Назад | Перейти на главную страницу

Автоматический ответ на значения по умолчанию при выполнении команды make oldconfig в дереве ядра

При сборке нового ядра на основе предыдущей конфигурации есть ли способ автоматизировать make oldconfig процесс, чтобы он устанавливал для новых параметров значения по умолчанию?

Редактировать: Я имею в виду, что при использовании .config (из /boot/config-* или /proc/config.gz) на более новом ядре make oldconfig процесс спросит, хотите ли вы включить параметры, которые не были доступны в вашем старом ядре. Вы можете ответить Д / Н / М или нажать Enter, чтобы принять значение по умолчанию. Я хотел бы принять значения по умолчанию автоматически без взаимодействия с пользователем.

make olddefconfig

это то, что вы хотите. С помощью (make help в исходном каталоге ядра)

olddefconfig - то же самое, что silentoldconfig, но устанавливает для новых символов значение по умолчанию

Используйте команду:

yes "" | make oldconfig

Команда 'yes' многократно выводит строку со всей указанной строкой или 'y' по умолчанию.

Таким образом, вы можете использовать его, чтобы просто «нажать Enter», что приведет к использованию значения по умолчанию для команды make oldconfig.

Да. Он хранится в ".config" на верхнем уровне исходного каталога.

Кроме того, при использовании ядра дистрибутива некоторые дистрибутивы, такие как RedHat, хранят его в / boot / config - $ (uname -r). (версия ядра) [1]

Наконец, если он скомпилирован в используемом вами ядре, он доступен в /proc/config.gz. Забываю, в какой версии появилась эта опция.

[1] Эти варианты:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

редактировать

Просмотрите /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (или соответствующий путь). Вы можете использовать некоторые из их рекомендаций для написания сценария решения. Я бы использовал комбинацию сценариев и textutils для выполнения того, что вы описываете.

Редактировать 2

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

"make silentoldconfig" немного менее подробный, что может быть полезно. Он по-прежнему интерактивен.

make silentoldconfig

Хотя это старый вопрос, я так и не нашел хорошего ответа на вопрос OP.

Я нашел другой способ обойти интерактивные вопросы; вместо исправления .config я исправляю файл defconfig, т.е.

make ARCH=arm mrproper
patch -N -p1 < ../../patches/autofs.patch || true
make ARCH=arm xilinx_zynq_defconfig
make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage
make ARCH=arm modules
make ARCH=arm INSTALL_MOD_PATH=target modules_install

Патч в моем случае:

--- a/arch/arm/configs/xilinx_zynq_defconfig    2019-12-12 08:31:42.985777534 +0100
+++ b/arch/arm/configs/xilinx_zynq_defconfig    2019-12-12 08:31:46.695777606 +0100
@@ -221,6 +221,7 @@
 CONFIG_XILINX_PR_DECOUPLER=y
 CONFIG_EXT2_FS=y
 CONFIG_EXT3_FS=y
+CONFIG_AUTOFS4_FS=y
 # CONFIG_DNOTIFY is not set
 CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y

Таким образом, не возникает никаких вопросов.