什么在我的 yocto 映像中创建 ./var/lib?

什么在我的 yocto 映像中创建 ./var/lib?

太长了;博士Yocto 在我的映像中创建了一个空目录var/lib,即使它已被 显式删除ROOTFS_POSTPROCESS_COMMAND。为什么,我怎样才能摆脱它?


我正在尝试使用一组精确预定义的文件和目录创建 yocto 映像,而不使用通常的 rootfs 文件。首先,我尝试创建一个完全空的图像。

出于测试目的,我使用了一个干净的 yocto jethro 克隆,MACHINE ??= "qemux86"其中包含conf/local.conf.让我们从这个食谱开始吧

meta-selftest/recipes-test/images/test-empty-image.bb

与 yocto 克隆一起提供。这很简单:

SUMMARY = "An empty image."
IMAGE_INSTALL = ""
IMAGE_LINGUAS = ""
PACKAGE_INSTALL = ""

inherit image

构建bitbake test-empty-image为我​​提供了图像中的以下文件:

$ tar tf tmp/deploy/images/qemux86/test-empty-image-qemux86.tar.bz2 
./
./etc/
./etc/version
./etc/default/
./etc/default/postinst
./etc/ld.so.cache
./etc/rpm/
./etc/rpm/platform
./etc/rpm/sysinfo/
./etc/rpm/sysinfo/Dirnames
./etc/timestamp
./var/
./var/lib/

让我们尝试通过将其附加到配方中来删除剩余的文件和文件夹:

remove_dirs () {
        rm -rf ${IMAGE_ROOTFS}/etc
        rm -rf ${IMAGE_ROOTFS}/var 
}
ROOTFS_POSTPROCESS_COMMAND += "remove_dirs ; "

这适用于etc,但不适用于var

$ tar tf tmp/deploy/images/qemux86/test-empty-image-qemux86.tar.bz2
./
./var/
./var/lib/

为了进行更多调试,我将日志记录语句添加到清理函数中:

remove_dirs () {
        echo "################# Listing before rm -rf:" >> ${IMAGE_ROOTFS}/listing.txt
        ls ${IMAGE_ROOTFS} >> ${IMAGE_ROOTFS}/listing.txt
        rm -rf ${IMAGE_ROOTFS}/etc
        rm -rf ${IMAGE_ROOTFS}/var 
        echo "################# Listing after rm -rf:" >> ${IMAGE_ROOTFS}/listing.txt
        ls ${IMAGE_ROOTFS} >> ${IMAGE_ROOTFS}/listing.txt
}

结果是文件listing.txt

################# Listing before rm -rf:
etc
listing.txt
oe_install
var
################# Listing after rm -rf:
listing.txt
oe_install

因此该目录var/lib肯定已被删除ROOTFS_POSTPROCESS_COMMAND,但显然是稍后重新创建的。我怎样才能摆脱这个目录?

答案1

这很烦人,过去我也遇到过同样的问题。在图像配方中执行以下操作:

IMAGE_PREPROCESS_COMMAND +=“删除目录”

这应该在 ROOTFS 部分之后运行。

IMAGE_PREPROCESS_COMMAND 的 Yocto 手动输入

相关内容