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