如何在 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 会负责应用它。
我为 board . Now I need to apply this patch
构建了 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 会负责应用它。