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



我想对 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_installdo_patch的方法?
  • 如何指定要修补的文件的路径?(例如,要修补的文件 sshd 在/etc/ssh 中(

我用 do_install(( 尝试了不同的"配置",但它们不起作用。(当我做"bitbake核心映像基础"时,没有问题,但是在rootfs中没有应用补丁(

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

如果要修补现有的配方文件,则需要创建一个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

相关内容

  • 没有找到相关文章

最新更新