diff --git a/bin/disk-image-create b/bin/disk-image-create index 3eb406b26..74231bfd1 100755 --- a/bin/disk-image-create +++ b/bin/disk-image-create @@ -108,19 +108,27 @@ prepare_first_boot # Free up /mnt unmount_image mv $TMP_BUILD_DIR/mnt $TMP_BUILD_DIR/built -# in kb*0.8 - underreport to get a slightly bigger device -_NEEDED_SIZE=$(sudo du --block-size=800 -x -s ${TMP_BUILD_DIR}/built | awk ' { print $1 } ') -truncate -s${_NEEDED_SIZE}K $TMP_IMAGE_PATH + +MKFS_OPTS="" + +if [ -n "$DIB_IMAGE_SIZE" ]; then + truncate -s${DIB_IMAGE_SIZE}G $TMP_IMAGE_PATH +else + # in kb*0.8 - underreport to get a slightly bigger device + _NEEDED_SIZE=$(sudo du --block-size=800 -x -s ${TMP_BUILD_DIR}/built | awk ' { print $1 } ') + truncate -s${_NEEDED_SIZE}K $TMP_IMAGE_PATH + if [ "$FS_TYPE" = "ext4" ] ; then + # Very conservative to handle images being resized a lot + MKFS_OPTS="-i 4096" + fi +fi + + LOOPDEV=$(sudo losetup --show -f $TMP_IMAGE_PATH) export EXTRA_UNMOUNT="sudo losetup -d $LOOPDEV" export IMAGE_BLOCK_DEVICE=$LOOPDEV eval_run_d block-device "IMAGE_BLOCK_DEVICE=" -OPTS="" -if [ "$FS_TYPE" = "ext4" ] ; then - # Very conservative to handle images being resized a lot - OPTS="-i 4096" -fi -sudo mkfs $OPTS -t $FS_TYPE -L cloudimg-rootfs ${IMAGE_BLOCK_DEVICE} +sudo mkfs $MKFS_OPTS -t $FS_TYPE -L cloudimg-rootfs ${IMAGE_BLOCK_DEVICE} mkdir $TMP_BUILD_DIR/mnt sudo mount ${IMAGE_BLOCK_DEVICE} $TMP_BUILD_DIR/mnt sudo mv -t $TMP_BUILD_DIR/mnt ${TMP_BUILD_DIR}/built/* diff --git a/lib/img-defaults b/lib/img-defaults index 2b240b137..e964df576 100644 --- a/lib/img-defaults +++ b/lib/img-defaults @@ -37,7 +37,6 @@ FS_TYPE=${FS_TYPE:-ext4} # Used to set the file extension only at this stage. IMAGE_TYPE=${IMAGE_TYPE:-qcow2} IMAGE_NAME=${IMAGE_NAME:-image} -export DIB_IMAGE_SIZE=${DIB_IMAGE_SIZE:-2} # N.B. This size is in GB export DIB_NO_TMPFS=${DIB_NO_TMPFS:-0} # Set via the CLI normally. # IMAGE_ELEMENT= diff --git a/sudoers.d/img-build-sudoers b/sudoers.d/img-build-sudoers index a1578c685..a6d94314f 100644 --- a/sudoers.d/img-build-sudoers +++ b/sudoers.d/img-build-sudoers @@ -37,6 +37,7 @@ ALL ALL=(root) NOPASSWD: /bin/umount -f /tmp/*/mnt/dev ALL ALL=(root) NOPASSWD: /bin/umount -f /tmp/*/mnt/proc ALL ALL=(root) NOPASSWD: /bin/umount -f /tmp/*/mnt/sys ALL ALL=(root) NOPASSWD: /bin/umount -f /tmp/*/mnt/tmp/in_target.d +ALL ALL=(root) NOPASSWD: /sbin/mkfs -t ext4 -L cloudimg-rootfs /dev/loop* ALL ALL=(root) NOPASSWD: /sbin/mkfs -i 4096 -t ext4 -L cloudimg-rootfs /dev/loop* ALL ALL=(root) NOPASSWD: /sbin/modprobe nbd max_part=16 ALL ALL=(root) NOPASSWD: /sbin/sfdisk /dev/nbd*