问题描述
我在 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 工作目录搞砸了,所以跟我来:
-
清理构建
bitbake linux-yocto -c cleansstate
-
从 SRC_URI 中删除补丁
-
应用任何默认补丁
bitbake linux-yocto -c 补丁
-
前往
poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0
- 进行修改
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
- 现在,打开终端并将目录更改为
poky/build/tmp/work/qemuarm64-poky-linux/linux-yocto/4.12.28+gitAUTOINC+2ae65226f6_e562267bae-r0
- 运行:git status(您应该看到类似:修改的 arch/arm64/boot/dts/arm/juno-base.dtsi)
- 运行:git add arch/arm64/boot/dts/arm/juno-base.dtsi
- 运行:git commit -m "Patch for juni base dtsi"
- 运行: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 开始。