Как установить исправление ядра локально в 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"
это все