Измените конфигурацию ядра, но defconfig уже есть - PullRequest
0 голосов
/ 15 апреля 2020

В моем репозитории yocto уже есть файл конфигурации ядра:

defconfig

Сейчас я хочу внести дополнительные изменения в конфигурацию ядра, могу ли я использовать

bitbake -c menuconfig virtual/kernel

или я нужно напрямую отредактировать на 'defconfig'

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Мой способ изменения параметров ядра .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 на% для удобства.

0 голосов
/ 16 апреля 2020

Сначала вы должны прочитать документацию:

https://www.yoctoproject.org/docs/3.1/kernel-dev/kernel-dev.html#configuring -the-kernel

После этого 2 решения:

  1. Создать только один defconfig и добавить его в bbappend

     FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
     SRC_URI += "file://defconfig"
    
  2. Создать несколько фрагментов

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://8250.cfg"

В обоих случаях, пожалуйста, прочитайте do c! :)

...