In the email from Monday, 11 July 2022 11:16:02 +03 user Tobias Schmidl wrote: > If the disk is too small, resizing might have detrimental effects. > Because of aligning issues, it could happen the the final partition is > _smaller_ than desired, which might lead to an unusable last partition. > > Signed-off-by: Tobias Schmidl > --- > .../files/expand-last-partition.sh | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git > a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > index c0edde7..0aa1063 100755 > --- > a/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > +++ > b/meta/recipes-support/expand-on-first-boot/files/expand-last-partition.sh > @@ -22,6 +22,22 @@ if [ "${ROOT_DEV}" = "${BOOT_DEV}" ]; then > exit 1 > fi > > +# this value is in blocks. Normally a block has 512 bytes. > +BUFFER_SIZE=32768 > +BOOT_DEV_NAME=${BOOT_DEV##*/} > +DISK_SIZE="$(cat /sys/class/block/"${BOOT_DEV_NAME}"/size)" > +ALL_PARTS_SIZE=0 > +for PARTITION in /sys/class/block/"${BOOT_DEV_NAME}"[1-9]*; do It seems to be working only for something like 'sda' => 'sda1'. For RPi I have root@isar:~# ls /sys/class/block/ | grep mmc mmcblk0 mmcblk0p1 mmcblk0p2 So, "p" suffix is required. Some other devices (like nvme) also need some prefix. > + PART_SIZE=$(cat "${PARTITION}"/size) > + ALL_PARTS_SIZE=$((ALL_PARTS_SIZE + PART_SIZE)) > +done > + > +MINIMAL_SIZE=$((ALL_PARTS_SIZE + BUFFER_SIZE)) > +if [ "$DISK_SIZE" -lt "$MINIMAL_SIZE" ]; then > + echo "Disk is practically already full, doing nothing." >&2 > + exit 0 > +fi > + > LAST_PART="$(sfdisk -d "${BOOT_DEV}" 2>/dev/null | tail -1 | cut -d ' ' -f > 1)" > > # Transform the partition table as follows: -- Uladzimir Bely