Что создает ./var/lib в моем образе yocto?

Что создает ./var/lib в моем образе yocto?

вкратце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

Building 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 += "remove_dirs"

Это должно выполняться после части ROOTFS.

ВидетьРучной ввод Yocto для IMAGE_PREPROCESS_COMMAND

Связанный контент