Я хочу , чтобы автоматизировать сборку Linux , но в конечном итоге добраться до точки , где мне нужно бежать , что кажется очень ручной шаг: make menuconfig
. Это похоже на синхронизацию конфигов между ОС и конфигами ядра?
cp git-tracked-config .config
make defconfig
make menuconfig # <- how to automate/script this?
make V=s
Как я могу удалить вызов make menuconfig
сценария сборки?
Кроме того, это реакция на ошибку сборки, которая возникает, когда я запускаю без вызова make menuconfig:
make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop.
Кажется, что в make-файле отсутствует правило, возможно, потому что сам make-файл НЕ существует, или make-файл не был сгенерирован / преобразован, чтобы содержать это правило, но это отдельный вопрос.
Там может быть умнее, чтобы подойти к этому вообще. Есть ли другие конфигурации, которые я не отслеживаю, но должен (например, oldconfig)?
bash
linux-kernel
make
tarabyte
источник
источник
make olddefconfig
?Ответы:
Система сборки ядра Linux предоставляет множество целей сборки, лучший способ узнать об этом, вероятно, это
make help
:Как говорит Джимми в комментариях, интересные части находятся в
oldconfig
связанных целях.Лично я бы порекомендовал вам пойти
silentoldconfig
(если ничего не изменилось в.config
файле илиolddefconfig
если вы обновили свой.config
файл с новым ядром.источник
randconfig
удивил меня. Предположительно используется для тестирования сборок путем генерации маловероятных комбинаций?make randconfig
? (на сайте «Спроси Ubuntu»).merge_config.sh
фрагменты конфигурацииПроцесс замещения не работает к сожалению:
из-за: https://unix.stackexchange.com/a/164109/32558
merge_config.sh
это простой интерфейс дляmake alldefconfig
цели.При кросс-компиляции
ARCH
должен быть экспортирован при запускеmerge_config.sh
, например:Объединенный выходной файл может быть указан явно с помощью
KCONFIG_CONFIG
переменной среды; в противном случае он просто перезаписывает.config
:Buildroot автоматизирует это с помощью
BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
: /programming/1414968/how-do-i-configure-the-linux-kernel-within-buildrootСвязанный: /programming/7505164/how-do-you-non-interactively-turn-on-features-in-a-linux-kernel-config-file
источник
У меня была такая же проблема, так как я хотел обновить свое ядро CentOS и должен был сделать это на нескольких машинах. Предположим, что мое новое дерево ядра CentOS находится в /linux-5.1 (я вошел в учетную запись root)
cd /linux-5.1
make menuconfig
и внести изменения и сохранить их в.config
/linux-5.1/.config
файл на сервер разработки.config
файл со своего сервера разработки/linux-5.1/.config
на новую машину.Надеюсь, что это помогает кому-то в том же положении.
источник