Как установить исправление ядра локально в yocto?

Я хочу, как установить патч для ядра в Yocto. Пожалуйста, ведите меня

Я включил пару операторов printk в файл calibrate.c, который находится в /home/host/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/linux-libc-headers/3.8-r0/linux-3.8/init/calibrate.c

Затем я создал файл патча, используя diff -Nuar ~ / calibrate.c /home/host/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/linux-libc-headers/3.8-r0/linux-3.8/init/calibrate.c> calibrate.patch

затем поместил файл calibrat.patch в каталог poky/meta/receies-kernel / linux-libc-headers / linux-libc-headers /

Затем я отредактировал файл linux-libc-headers_3.8.bb, расположенный в /poky/meta/receies-kernel / linux-libc-headers /, со следующим файлом SCR_URI =://calibrate.patch

Затем после выполнения bitbake -k core-image-minimal я получаю следующую ошибку.

ERROR: Command Error: exit status: 1  Output: Applying patch calibrate.patch can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? The text leading up to this was:
-------------------------- |--- calibrate.c 2015-12-09 15:00:11.547924616 +0530 |+++ a/calibrate.c  2015-12-09 14:59:31.387923200 +0530
-------------------------- No file to patch.  Skipping patch. 1 out of 1 hunk ignored

Patch calibrate.patch does not apply (enforce with -f)

ERROR: Function failed: patch_do_patch

ERROR: Logfile of failure stored in: /home/host/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/linux-libc-headers/3.8-r0/temp/log.do_patch.14062

ERROR: Task 434 (/home/host/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_3.8.bb, do_patch) failed with exit code '1'

1 ответ

Во-первых, лучший способ обновить рецепт в yocto - создать свой собственный, который будет добавлен к оригинальному. это цель bbappend файлы. обратитесь к руководству Yocto, чтобы увидеть, как добавить рецепт. Ваш слой должен выглядеть примерно так.

"каталог вашего слоя"/recipes-kernel/
    => linux-libc-headers/
        => файлы /
            -> file1.patch
            -> Another_file.patch
            -> third_file.patch
        -> linux-libc-headers_3.8.bbappend 

Во-вторых, yocto предоставляет "devshell", который представляет собой новую оболочку с уже экспортированной переменной eno всех yocto. Вот как вы должны работать с Yocto:

bitbake <recipe> -c devshell

в вашем случае это было бы

bitbake linux-libc-headers -c devshell

После этого у вас откроется новая оболочка, и вы автоматически перейдете в рабочий каталог этого рецепта. в вашем случае /home/host/poky/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/linux-libc-headers/3.8-r0/ или что-то в этом роде.

если вы не получили пакет из git-репо, то

git init

и сделать фиктивный коммит, который внесет все неотслеживаемые или неустановленные изменения

мерзавец добавить *
git commit -m "dummy"

Теперь вы можете изменить все, что вы хотите. не забывай совершать теперь давайте предположим, что вы сделали 3 коммита. Вы можете создать соответствующие патчи с помощью следующей команды:

git format-patch -3 -o / путь / к каталогу / anny /

эти патчи должны (должны) быть помещены в files каталог, расположенный в каталоге вашего рецепта (тот, который вы создали, а не оригинал)

git format-patch -3 -o /path/to/linux-libc-headers/files/

ваш linux-libc-headers_3.8.bbappend должен содержать что-то вроде этого

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://0001-Frist-commit.patch"
SRC_URI += "file://0002-Second-commit.patch"
SRC_URI += "file://0003-last-commit.patch"

это все

Другие вопросы по тегам