From a82f62627f79761e1b09b8f54896a9f85a591443 Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Mon, 29 Jun 2015 20:06:38 -0700 Subject: bootimg.bbclass:hddimg: check the size of rootfs.img for hddimg The hddimg uses FAT, so the single file size should be less than 4GB, otherwise errors, check that and error out. Another way might be use ext2/3/4 rather than FAT, but EFI only supports FAT, if we make EFI use FAT, and non-EFI use extX, that would the code very different, which seems not worth. [YOCTO #6449] Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- meta/classes/bootimg.bbclass | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass index 605edc911e..ab1d1bdd33 100644 --- a/meta/classes/bootimg.bbclass +++ b/meta/classes/bootimg.bbclass @@ -249,6 +249,19 @@ build_hddimg() { efi_hddimg_populate ${HDDDIR} fi + # Check the size of ${HDDDIR}/rootfs.img, error out if it + # exceeds 4GB, it is the single file's max size of FAT fs. + if [ -f ${HDDDIR}/rootfs.img ]; then + rootfs_img_size=`stat -c '%s' ${HDDDIR}/rootfs.img` + max_size=`expr 4 \* 1024 \* 1024 \* 1024` + if [ $rootfs_img_size -gt $max_size ]; then + bberror "${HDDDIR}/rootfs.img execeeds 4GB," + bberror "this doesn't work on FAT filesystem, you can try either of:" + bberror "1) Reduce the size of rootfs.img" + bbfatal "2) Use iso, vmdk or vdi to instead of hddimg\n" + fi + fi + build_fat_img ${HDDDIR} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg if [ "${PCBIOS}" = "1" ]; then -- cgit 1.2.3-korg