【问题标题】:How to apply a patch to a file in the root file system in yocto recipe如何在 yocto recipe 中将补丁应用于根文件系统中的文件
【发布时间】:2018-10-25 12:42:03
【问题描述】:

我想将补丁应用到 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中没有应用补丁)

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

【问题讨论】:

    标签: patch yocto bitbake recipe


    【解决方案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" in local.conf 的图像。

    【讨论】:

    • 所以,我不知道我是否理解错了,但我尝试在我的 test_1.0.bb 中这样做:ROOTFS_POSTPROCESS_COMMAND += "set_patches; " set_patches () { patch ${sysconfdir}/ssh/sshd_config_readonly ${WORKDIR}/sshd_config_readonly.patch } 但它不起作用。
    • 您必须将${sysconfdir}/ssh 替换为${IMAGE_ROOTFS}/etc/ssh。但是 ROOTFS_POSTPROCESS_COMMAND 是一个图像变量,所以你必须从 core-image-base 创建一个自定义图像来添加它。老实说,我认为您应该使用 bbappend 进行这种修改。
    • 非常感谢。我使用了“第一个选项”,因此自定义图像中的 ROOTFS_POSTPROCESS_COMMAND (​​因为我需要自定义图像)。在不久的将来,我会尝试使用 .bbappend
    • 只是另一件事。我创建了文件 openssh_%.bbappend,但是我可以在do_install_append () { ... } 中使用文件sshd.conf.patch(我使用diff 命令创建的)还是让我使用我已经修补的文件sshd.conf?
    • 你必须使用打补丁的 sshd.conf 文件
    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 2019-07-03
    • 1970-01-01
    • 2021-10-31
    • 2020-04-18
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多