【问题标题】:How to apply patch in yocto如何在 yocto 中应用补丁
【发布时间】:2021-11-26 17:19:49
【问题描述】:

我为我的 board 构建了 yocto 映像。现在我需要申请this patch

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

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

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

bitbake-layers show-recipes

但我仍然不知道这些配方中的哪个构建文件驱动程序/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 bitbake yocto-recipe


    【解决方案1】:

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

    找到要修补的配方:在我看来,要找到 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 会负责应用它。

    【讨论】:

    • 谢谢,这很有帮助。我没有任何 meta-xilinx-bsp,但我运行了“find sources/-name recipes-kernel”并得到了一堆目录,其中大多数都有 linux 子目录。我用更多信息更新了原始帖子。
    • 哦,好的!正在编译一个不是 xilinx 的内核并希望从 xilinx 应用此补丁?起初我不明白,但这是有道理的
    • 我查找了构建 virtio_rpmsg_bus.c 的 Makefile,我猜,目标被称为 vmlinux 的东西,通过将文件夹上升到顶层并查看 Makefile。之后,我运行此命令来查找构建 vmlinux 目标的配方:“oe-pkgdata-util find-path vmlinux”,这使我找到了配方 kernel-vmlinux:/boot/vmlinux-5.4。 85+ge6d7d211f484
    • 然后执行“grep -nr kernel-vmlinux *”导致我进入 poky/meta/recipes-kernel/linux/linux-dummy.bb - 所以我认为这是构建 c 文件的配方我要打补丁
    • 嗯,可能是这个……我猜它是 poky/meta/recipe-kernel/linux/linux-[somthing].bb 中的配方。如果我没记错的话,应该不会有很多这样的食谱。也许尝试将它们全部附加以查看它是否有效,如果有效,您可以尝试缩小到正确的配方。 Imo 使用名为“dummy”的配方构建您的图像会有点连线
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 2010-12-07
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多