Мой способ изменения параметров ядра .config в Yocto
Я изменяю конфигурацию ядра linux в Yocto следующим образом:
bitbake -c menuconfig virtual/kernel
#Change, save, exit
bitbake -c diffconfig virtual/kernel
#In the output of this command you can see the [diff-file] location
less [diff-file] (Check if this is what you'd expect)
cp [diff-file] [any-of-my-own-layers]/recipes-kernel/linux/files/[speaking-name].cfg
bitbake -fc patch virtual/kernel
bitbake -fc compile virtual/kernel
bitbake [my-image-name]
Тогда новый параметр находится в ядре, и никогда не будет вани sh. Иногда я редактирую .cfg файлы прямо тогда. Но я храню разные файлы (например, mydriver.cfg, kerneldebug.cfg, disable-wifi.cfg ...), поэтому я могу легко удалить их позже. Иногда я объединяю файлы вручную, потому что процедура, описанная выше, всегда создает новый файл только с последней сделанной вами разницей.
Файл bbappend для внедрения фрагментов конфигурации ядра
Чтобы сделать эту работу, я добавил .bbappend файл в [any-of-my-own-Layers] / recipes-kernel / linux /
#Filename: linux-mainline_%.bbappend
#e.g. /yocto/meta-layes/meta-mynux/recipes-kernel/linux/linux-mainline_%.bbappend
#
# Modify Linux kernel configuration
#
SUMMARY = "Changes to the Linux kernel configuration."
SECTION = "MySection"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://mydriver.cfg"
SRC_URI += "file://kerneldebug.cfg"
SRC_URI += "file://disable-wifi.cfg"
Рабочий процесс
Для тестирования вы можете использовать bitbake - c menuconfig virtual / kernel , bitbake - c скомпилируйте виртуальный / ядро, bitbake [my-image-name], затем загрузитесь, как вам нравится. Но после следующего битбейка - c патча все настройки пропадут. Поэтому рабочий процесс сначала тестируется с помощью menuconfig / compile / boot, а затем использует diffconfig и сохраняет конфигурационный файл в файл, чтобы сделать его постоянным.
Пример того, как файл .cfg выглядит как
Фрагмент конфигурации не является diff-форматом. Это просто настройки, очень удобно.
less /yocto/meta-layers/meta-mynux/recipes-kernel/linux/files/kgdb.cfg
# CONFIG_SERIAL_KGDB_NMI is not set
CONFIG_CONSOLE_POLL=y
# CONFIG_DEBUG_INFO is not set
CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y
# CONFIG_KGDB_TESTS is not set
# CONFIG_KGDB_KDB is not set
Как назвать файл bbappend
Имя файла bbappend должно соответствовать вашему рецепту ядра. Я нашел это следующим образом, на всякий случай, если вам нужно другое имя.
cd /yocto/meta-layers
find -name "linux-*.bbappend"
Результат был:… / meta-layer / poky /../ meta-phytec / recipes-kernel / lan743x / linux -mainline_4.14.134-phy2.bb.do_patch. Оттуда я мог угадать правильное имя и заменил версию ядра 4.14.134 на% для удобства.