tl; drYocto crea un directorio vacío var/lib
en mi imagen, incluso después de que ROOTFS_POSTPROCESS_COMMAND
. ¿Por qué y cómo puedo deshacerme de él?
Estoy intentando crear una imagen de yocto con un conjunto exacto predefinido de archivos y directorios, sin los archivos rootfs habituales. Para empezar, intento crear una imagen completamente vacía.
Para fines de prueba, estoy usando un clon limpio de yocto jethro MACHINE ??= "qemux86"
con conf/local.conf
. Empecemos con esta receta.
meta-selftest/recipes-test/images/test-empty-image.bb
que viene con el clon yocto. Es muy simple:
SUMMARY = "An empty image."
IMAGE_INSTALL = ""
IMAGE_LINGUAS = ""
PACKAGE_INSTALL = ""
inherit image
El edificio bitbake test-empty-image
me da los siguientes archivos en la imagen:
$ 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/
Intentemos eliminar los archivos y carpetas restantes agregando esto a la receta:
remove_dirs () {
rm -rf ${IMAGE_ROOTFS}/etc
rm -rf ${IMAGE_ROOTFS}/var
}
ROOTFS_POSTPROCESS_COMMAND += "remove_dirs ; "
Esto funciona para etc
, pero no para var
:
$ tar tf tmp/deploy/images/qemux86/test-empty-image-qemux86.tar.bz2
./
./var/
./var/lib/
Para una mayor depuración, agrego declaraciones de registro a la función de limpieza:
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
}
lo que da como resultado el archivo listing.txt
:
################# Listing before rm -rf:
etc
listing.txt
oe_install
var
################# Listing after rm -rf:
listing.txt
oe_install
Por lo tanto, el directorio var/lib
definitivamente se elimina ROOTFS_POSTPROCESS_COMMAND
, pero aparentemente se vuelve a crear más tarde. ¿Cómo puedo deshacerme de este directorio?
Respuesta1
Esto es bastante molesto y en el pasado tuve el mismo problema. Haga lo siguiente en su receta de imagen:
IMAGE_PREPROCESS_COMMAND += "remove_dirs"
Esto debería ejecutarse después de la parte ROOTFS.