Was erstellt ./var/lib in meinem Yocto-Image?

Was erstellt ./var/lib in meinem Yocto-Image?

tl;drYocto erstellt ein leeres Verzeichnis var/libin meinem Image, selbst nachdem es explizit gelöscht wurde ROOTFS_POSTPROCESS_COMMAND. Warum und wie kann ich es loswerden?


Ich versuche, ein Yocto-Image mit einem genau vordefinierten Satz von Dateien und Verzeichnissen zu erstellen, ohne die üblichen Root-FS-Dateien. Zunächst versuche ich, ein völlig leeres Image zu erstellen.

Zu Testzwecken verwende ich einen sauberen Yocto Jethro-Klon mit MACHINE ??= "qemux86"in conf/local.conf. Beginnen wir mit diesem Rezept

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

das mit dem Yocto-Klon geliefert wird. Es ist ganz einfach:

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

inherit image

Beim Erstellen bitbake test-empty-imageerhalte ich folgende Dateien im 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/

Versuchen wir, die verbleibenden Dateien und Ordner zu löschen, indem wir Folgendes an das Rezept anhängen:

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

Dies funktioniert für etc, aber nicht für var:

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

Für weitere Fehlerbehebungen füge ich der Bereinigungsfunktion Protokollierungsanweisungen hinzu:

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
}

Das Ergebnis ist die Datei listing.txt:

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

Das Verzeichnis var/libwird also definitiv gelöscht ROOTFS_POSTPROCESS_COMMAND, später aber anscheinend neu erstellt. Wie kann ich dieses Verzeichnis loswerden?

Antwort1

Das ist ziemlich ärgerlich und ich hatte in der Vergangenheit das gleiche Problem. Gehen Sie in Ihrem Bildrezept wie folgt vor:

IMAGE_PREPROCESS_COMMAND += "remove_dirs"

Dies sollte nach dem ROOTFS-Teil ausgeführt werden.

SehenManueller Yocto-Eintrag für IMAGE_PREPROCESS_COMMAND

verwandte Informationen