如何在yocto中应用dtsi或dts的补丁文件

问题描述

我在 ubuntu 18.04 上使用 yocto(ver.rocko) 并尝试应用补丁文件,但我不能......


我的目标机器是 qemuarm64,linux 内核是 linux-yocto。

执行 $ bitbake core-image-base 后,内核源文件被解压,目标 dtsi 文件位于 poky/build/tmp/work/aarch64-poky-linux/linux-libc-headers/4.12-r0/linux-4.12/arch/arm64/boot/dts/arm/juno-base.dtsi


我要修补的自定义元数据文件如下:

  • poky/Meta-custom/recipes-kernel/linux/linux-yocto_4.12.bbappend
  • poky/Meta-custom/recipes-kernel/linux/files/juno-base.dtsi.patch
# poky/Meta-custom/recipes-kernel/linux/linux-yocto_4.12.bbappend

FILESEXTRAPATHS_prepend := "${THISDIR}/files"
SRC_URI += "file://juno-base.dtsi.patch"

但是在bitbake之后,在poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0/juno-base.dtsi.patch处创建了补丁文件并且补丁应用程序不起作用


我不知道怎么了,该怎么办... 请让我知道我该怎么办?

解决方法

要为 Yocto 配方源创建一个简单的补丁,您可以以简单的方式使用 git 命令:

您的 Linux 工作目录是:

poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0

如你所见,它已经是一个“git”目录,这意味着它已经用 git 初始化了。

这里有清晰的步骤让您了解该方法:

在将你的补丁(juno-base.dtsi.patch)添加到 SRC_URI 后,我认为你的 linux-yocto 工作目录搞砸了,所以跟我来:

  1. 清理构建

    bitbake linux-yocto -c cleansstate

  2. 从 SRC_URI 中删除补丁

  3. 应用任何默认补丁

    bitbake linux-yocto -c 补丁

  4. 前往

poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0

  1. 进行修改

poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0/arch/arm64/boot/dts/arm/juno-base.dtsi

而不是在

poky/build/tmp/work/aarch64-poky-linux/linux-libc-headers/4.12-r0/linux-4.12/arch/arm64/boot/dts/arm/juno-base.dtsi

  1. 现在,打开终端并将目录更改为

poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0

  1. 运行:git status(您应该看到类似:修改的 arch/arm64/boot/dts/arm/juno-base.dtsi)
  2. 运行:git add arch/arm64/boot/dts/arm/juno-base.dtsi
  3. 运行:git commit -m "Patch for juni base dtsi"
  4. 运行:git format-patch -1

现在创建了一个名为“Patch-for-juni-base-dtsi.patch”的新补丁, 现在你可以将它添加到 linux-yocto_%.bbappend:

SRC_URI_append = "file://Patch-for-juni-base-dtsi.patch"

如果 dtsi 不存在并且您想将其添加为补丁,请执行相同的操作,当您运行“git status”时,您将看到一个新添加的文件,使用“git add”添加并继续执行命令.

完成所有这些之后,您可以使用以下命令继续构建过程:

bitbake linux-yocto -C patch

或者,如果您将补丁添加到 SRC_URI,则 linux-yocto 构建将从 do_fetch 开始。