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

36

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

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

Жан-Франсуа Шевретт
источник
@jscott Это только «нажмите ввод» для первого вопроса, а не для всех. Вы можете использовать команду «да», чтобы строка печаталась бесконечно.
Лоран Паренто

Ответы:

37

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

yes "" | make oldconfig

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

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

Лоран Паренто
источник
Ах, я не знал, что команда «да» может выводить любую строку. Спасибо!
Жан-Франсуа Шевретт
3
Это феноменально.
Иван Икс
1
Ответ - гораздо лучшая идея serverfault.com/a/538150/18822
Эван Кэрролл,
56
make olddefconfig

это то, что вы хотите. Из справки ( make helpв исходном ядре dir)

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

поток
источник
Я давно искал что-то подобное ... большое спасибо!
Джафар Кофахи
Какая версия Linux появилась? Просто любопытно. В настоящее время я работаю со старой версией (3.0), и у нее ее пока нет.
Клак
1
Это должен быть правильный ответ.
suprjami
0

Да. Он хранится в «.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" немного менее многословен, что может быть полезно. Это все еще интерактивно.

сигнализатор
источник
Это не то, что я имел ввиду. Я добавил больше деталей к своему вопросу, чтобы объяснить, чего я хочу достичь.
Жан-Франсуа Шевретт
0

make silentoldconfig


источник
2
make silentoldconfig по-прежнему интерактивен, он не так многословен
Laurent Parenteau