From 11fb6fee5045401466763b5fd2985f708333f2ac Mon Sep 17 00:00:00 2001 From: Anton Gerasimov Date: Wed, 30 Nov 2016 15:07:18 +0100 Subject: Set rootfs size based on real size of rootfs image ROOTFS_SIZE is recomputed for each image type based on total size of rootfs directory. If rootfs directory gets smaller between creation of rootfs image and SD image, it fill result in corrupted SD image. It should not happen in theory, but it happens occasionally for a reason I could not identify. Change-Id: I1c888c179fdcec32c3cacbbce7b2d34ec70bbb17 Signed-off-by: Anton Gerasimov --- meta-agl-bsp/classes/sdcard_image-rpi-gdp.bbclass | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/meta-agl-bsp/classes/sdcard_image-rpi-gdp.bbclass b/meta-agl-bsp/classes/sdcard_image-rpi-gdp.bbclass index 2956dd075..b26323950 100644 --- a/meta-agl-bsp/classes/sdcard_image-rpi-gdp.bbclass +++ b/meta-agl-bsp/classes/sdcard_image-rpi-gdp.bbclass @@ -2,12 +2,28 @@ inherit sdcard_image-rpi IMAGE_CMD_rpi-sdimg () { + # Get rootfs size + if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz" + then + ROOTPART_SIZE=`xz -l --robot ${SDIMG_ROOTFS} | grep "^file" | cut -f` + else + ROOTPART_SIZE=`du -Lb ${SDIMG_ROOTFS} | cut -f1` + fi + + ROOTPART_SIZE=$(expr ${ROOTPART_SIZE} / 1024) + + # just in case our file system block size is not a multiple of 1KiB + if [ $(expr ${ROOTPART_SIZE} % 1024) != 0 ]; + then + ROOTPART_SIZE=$(expr ${ROOTPART_SIZE} + 1) + fi + # Align partitions BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1) BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT}) - SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE) + SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTPART_SIZE) - echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $ROOTFS_SIZE KiB" + echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $ROOTPART_SIZE KiB" # Check if we are building with device tree support DTS="${@get_dts(d, None)}" -- cgit 1.2.3-korg