O que está criando ./var/lib na minha imagem yocto?

1

tl; dr O Yocto cria um diretório vazio var/lib na minha imagem, mesmo depois de ter sido explicitamente excluído por ROOTFS_POSTPROCESS_COMMAND . Por que e como posso me livrar disso?

Estou tentando criar uma imagem yocto com um conjunto predefinido de arquivos e diretórios, sem os arquivos rootfs usuais. Para começar, estou tentando criar uma imagem completamente vazia.

Para fins de teste, estou usando um clone yocto jethro limpo com MACHINE ??= "qemux86" em conf/local.conf . Vamos começar com essa receita

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

que vem com o clone yocto. É muito simples:

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

inherit image

A criação de bitbake test-empty-image fornece os seguintes arquivos na imagem:

$ 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/

Vamos tentar excluir os arquivos e pastas restantes, acrescentando isso à receita:

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

Isso funciona para etc , mas não para var :

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

Para mais alguma depuração, adiciono instruções de registro à função de limpeza:

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
}

que resulta no arquivo listing.txt :

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

Portanto, o diretório var/lib é definitivamente excluído pelo ROOTFS_POSTPROCESS_COMMAND , mas aparentemente recriado posteriormente. Como posso me livrar desse diretório?

    
por PiQuer 22.06.2016 / 13:36

1 resposta

1

Isso é muito chato e no passado eu tive o mesmo problema. Faça o seguinte na receita da sua imagem:

IMAGE_PREPROCESS_COMMAND +="remove_dirs"

Isso deve ser executado após a parte ROOTFS.

Veja entrada manual do Yocto para IMAGE_PREPROCESS_COMMAND

    
por 23.10.2017 / 13:13

Tags