너무 길어요.var/lib
Yocto는 명시적으로 삭제되었음에도 불구하고 내 이미지에 빈 디렉토리를 생성했습니다 ROOTFS_POSTPROCESS_COMMAND
. 왜 그리고 어떻게 제거할 수 있나요?
일반적인 rootfs 파일을 사용하지 않고 미리 정의된 파일과 디렉터리의 정확한 세트로 yocto 이미지를 만들려고 합니다. 먼저 완전히 비어있는 이미지를 만들어 보았습니다.
테스트 목적 MACHINE ??= "qemux86"
으로 conf/local.conf
.
meta-selftest/recipes-test/images/test-empty-image.bb
욕토 클론과 함께 제공됩니다. 이것은 매우 간단합니다.
SUMMARY = "An empty image."
IMAGE_INSTALL = ""
IMAGE_LINGUAS = ""
PACKAGE_INSTALL = ""
inherit image
빌드는 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 += "디렉토리 삭제"
이는 ROOTFS 섹션 다음에 실행되어야 합니다.