如何使用Yocto修改rootfs配置文件?

时间:2019-06-22 03:23:27

标签: yocto

我正在使用Thud(2.6),并且想清除/ etc / default / dropbear的内容。 ROOTFS_POSTPROCESS_COMMAND似乎很有希望,但以下内容未能创建空文件。没有错误。

由配方完成的其他工作成功。

SRC_URI += "file://authorized_keys"
SRC_URI += "file://dropbear_rsa_host_key"
# Configuration file to be installed in /etc/default.
# SRC_URI += "file://dropbear"

S = "${WORKDIR}"

do_install() {

install -d ${D}/etc/dropbear
install -m 0600 ${S}/authorized_keys ${D}/etc/dropbear
install -m 0600 ${S}/dropbear_rsa_host_key ${D}/etc/dropbear

}

clear_dropbear_default_configuration() {

rm ${D}/etc/default/dropbear
touch ${D}/etc/default/dropbear
echo "Hello" > hello.txt

}

FILES_${PN} += "/etc/dropbear"

FILES_${PN} += "/etc/dropbear/authorized_keys"

FILES_${PN} += "/etc/dropbear/dropbear_rsa_host_key"

ROOTFS_POSTPROCESS_COMMAND += "clear_dropbear_default_configuration;"

# FILES_${PN} += "/etc/default/dropbear"

1 个答案:

答案 0 :(得分:2)

我相信ROOTFS_POSTPROCESS_COMMAND是您想要的,但是您不能从这样的包装配方中调用它。在我们的应用程序中,我们在与.bb图像创建配方相同的目录中创建了一个具有一些常用功能的新.inc文件,并将其包含在用于构建目标图像的配方中。这是我们放置这些指令和函数的位置(我有4个进行符号链接并重置root密码的位置)。挑战在于,后处理无法再次调用您的配方,并且我不确定如何尝试预定义类似的函数以供稍后调用。请注意,语法从外观上看完全正确,只是不在需要时运行的正确位置。

image-base.inc

ROOTFS_POSTPROCESS_COMMAND += "clear_dropbear_default_configuration;"

clear_dropbear_default_configuration() {
    rm ${D}/etc/default/dropbear
    touch ${D}/etc/default/dropbear
    echo "Hello" > hello.txt
}

image-name.bb

require image-base.inc

如果您愿意,也可以直接将其添加到.bb中。我喜欢.inc文件,因为它们使在类似条目之间共享变得更容易。请注意,此示例忽略了其他内容,但是您可以自由格式化其所属位置。

如果您不想更改现有目标,则可以创建自己的目标,然后在新图像配方中要求image.bb。