如何将补丁应用于yocto配方中根文件系统中的文件

时间:2018-05-15 15:43:11

标签: patch yocto bitbake recipe

我想将修补程序应用于rootfs中/ etc中的文件。所以我创建了一个Yocto食谱

├── test_1.0.bb
└── files
    └── sshd.patch

我已经开始创建.bb文件,如下所示:

DESCRIPTION = "Patch files"
SECTION = "Patch"
LICENSE = "MIT"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI = " \
    file://sshd.patch \
"
  • 此时我不明白,我有什么需要使用 do_install do_patch 方法?
  • 如何指定要修补的文件的路径? (例如要修补的文件sshd在/ etc / ssh中)

我尝试使用do_install()进行不同的“配置”,但它们不起作用。 (当我做“bitbake core-image-base”时没有问题,但是在rootfs中没有应用补丁)

*英语不是我的母语;请原谅我的任何错误。

1 个答案:

答案 0 :(得分:1)

如果要修补现有的配方文件,则需要创建openssh_%.bbappend文件而不是test_1.0.bb,并在SRC_URI中放置要替换的每个文件(即file://sshd_config而不是sshd.patch

然后,由于这些文件已经存在,您无需从原始配方修改do_install。否则你需要添加

do_install_append(){
    install -Dm 0644 ${S}/myfile ${D}${sysconfdir}/example/myfile 
}

# and modify FILES_${PN} if file is added in unusual place

顺便说一下,配方不能在没有冲突的情况下覆盖另一个配方文件,因此另一个解决方案是在创建rootfs时使用ROOTFS_POSTPROCESS_COMMAND对其进行修补。 (这就是为什么你不能使用test_0.1.bb)。

否则,会自动应用补丁文件,因此您无需修改​​do_patch或do_install。

如果您添加了食谱,请不要忘记将其添加到IMAGE_INSTALL_append = " test" local.conf的图片中。