]> code.ossystems Code Review - openembedded-core.git/commitdiff
bootimg.bbclass:hddimg: check the size of rootfs.img for hddimg
authorRobert Yang <liezhi.yang@windriver.com>
Tue, 30 Jun 2015 03:06:38 +0000 (20:06 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 1 Jul 2015 14:38:23 +0000 (15:38 +0100)
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 <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/bootimg.bbclass

index 605edc911e44ab927b79875990f53c991a5cae9d..ab1d1bdd336592eba6426f492d910f7899abe9d1 100644 (file)
@@ -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