如何在 yocto 中应用补丁

How to apply patch in yocto

我为 board . Now I need to apply this patch

构建了 yocto 镜像

首先,我如何确定补丁适用于哪个配方? 二、如何打补丁?

(我检查了 但它修补了 yocto 系统本身,我不想要那个)

我可以列出我找到的 this command 的所有食谱

bitbake-layers show-recipes

但我仍然不知道这些配方中的哪一个构建了文件 drivers/rpmsg/virtio_rpmsg_bus.c,我需要修补的文件。

我还找到了三个有这个c文件的目录:

find . -name virtio_rpmsg_bus.c
./build_wayland/tmp/work-shared/imx8mm-var-dart/kernel-source/drivers/rpmsg/virtio_rpmsg_bus.c
./build_wayland/tmp/work/aarch64-fslc-linux/linux-libc-headers/5.4-r0/linux-5.4/drivers/rpmsg/virtio_rpmsg_bus.c
./build_wayland/tmp/work/aarch64-mx8mm-fslc-linux/linux-imx-headers/5.4-r0/git/drivers/rpmsg/virtio_rpmsg_bus.c

这些食谱文件夹有 recipes-kernel/linux 个目录

sources/meta-freescale-3rdparty/recipes-kernel
sources/meta-freescale/recipes-kernel
sources/poky/meta-skeleton/recipes-kernel
sources/poky/meta/recipes-kernel
sources/poky/meta-yocto-bsp/recipes-kernel
sources/meta-virtualization/recipes-kernel
sources/meta-variscite-fslc/recipes-kernel
sources/meta-openembedded/meta-gnome/recipes-kernel
sources/meta-openembedded/meta-initramfs/recipes-kernel
sources/meta-openembedded/meta-networking/recipes-kernel
sources/meta-openembedded/meta-oe/recipes-kernel

我不知道这些食谱中的哪些可能正在构建我的 c 文件virtio_rpmsg_bus.c

所以我还没有自己完成构建,但这是我可以收集到的(在某些点上这有点远...希望一切正常,如果不是这样,我愿意讨论例)。

寻找要修补的配方: 在我看来,要找到 Yocto 中的配方功能通常很棘手。如果我没有弄错(很有可能),你应该有一个名为 meta-xilinx-bsp 的图层。在这一层中应该有 recipes-kernel/linux/linux_xlnx_[version].bb。这应该是补丁应该去的配方。

应用补丁:要应用补丁,最简单的方法是附加配方。

  • 创建文件夹结构:在您自己的图层中,您需要复制原始图层中食谱所在的结构。这里:meta-myLayer/recipes-kernel/linux/。在此文件夹中创建 linux-xlnx_%.bbappend.
  • 创建一个 .bbappend 文件: 使用此结构和名称 yocto 将知道这是对原始 linux-xlnx_[verion_number].bb 配方的附加。 % 放在这里而不是版本号。这是一个通配符,将附加任何版本的 linux-xlnx 配方。如果您只想附加特定版本,可以用版本号替换 %
  • 将补丁文件添加到您的目录: 为此,在您的食谱旁边创建一个名为 linux-xlnx 的文件夹。并在此文件夹中通过将 the content you have 复制到 my-xlnx-patch.patch
  • 之类的内容来创建您的补丁文件
  • 引用.bbappend中的补丁文件:在你的linux-xlnx_%.bbappend中指明文件路径如下:
    FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
    SRC_URI_append = " \
         file://my-xlnx-patch.patch \
         "
    

我不是 100% 确定你需要第一行,但这会告诉 yocto 你有这个食谱的补丁文件,如果我没记错的话,yocto 会负责应用它。