# cat /usr/bin/resize_datafs.sh #!/bin/bash set -e DATA_MOUNT="/data" # Only run once STAMP="/var/lib/resize-datafs.done" [ -f "$STAMP" ] && exit 0 # Find device backing /data DATA_DEV=$(findmnt -n -o SOURCE --target "$DATA_MOUNT") [ -z "$DATA_DEV" ] && exit 0 # mmcblk1p3 -> mmcblk1 DISK="/dev/$(lsblk -no PKNAME "$DATA_DEV")" # Partition number (3) PARTNUM=$(echo "$DATA_DEV" | sed 's/.*p//') # Unmount safely umount "$DATA_MOUNT" # Grow partition echo ",+" | sfdisk -N "$PARTNUM" "$DISK" --no-reread # Re-read partition table partprobe "$DISK" sleep 2 # Check filesystem e2fsck -fy "$DATA_DEV" || true # Resize filesystem resize2fs "$DATA_DEV" # Check filesystem after resize e2fsck -fy "$DATA_DEV" || true # Mount back mount "$DATA_MOUNT" # Mark done mkdir -p /var/lib touch "$STAMP" sync exit 0