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]

(From OE-Core rev: a82f62627f79761e1b09b8f54896a9f85a591443)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang
2015-06-29 20:06:38 -07:00
committed by Richard Purdie
parent b3c79c4d0f
commit 5c71337cd7

View 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