From e107bcbe92cf845fd086b4c984e1dbf85cfeb2b7 Mon Sep 17 00:00:00 2001 From: Lee Miller Date: Tue, 5 Dec 2023 04:02:57 +0200 Subject: [PATCH] Adopt the solution for resizing root from openwrt expand_root guide Closes: #37 --- .buildbot/openwrt/build.sh | 1 + defaults/70-rootpt-resize | 20 ++++++++++++++++++++ defaults/80-rootfs-resize | 23 +++++++++++++++++++++++ sysupgrade.conf | 5 +++++ 4 files changed, 49 insertions(+) create mode 100644 defaults/70-rootpt-resize create mode 100644 defaults/80-rootfs-resize create mode 100644 sysupgrade.conf diff --git a/.buildbot/openwrt/build.sh b/.buildbot/openwrt/build.sh index efc6e2f..a9e7f3b 100755 --- a/.buildbot/openwrt/build.sh +++ b/.buildbot/openwrt/build.sh @@ -118,6 +118,7 @@ chmod 0400 files/etc/dropbear/authorized_keys mkdir -p files/etc/docker chmod 0750 files/etc/docker cp ${pwd}/daemon.json files/etc/docker +cp ${pwd}/sysupgrade.conf files/etc mkdir -p files/etc/uci-defaults cp ${pwd}/defaults/* files/etc/uci-defaults diff --git a/defaults/70-rootpt-resize b/defaults/70-rootpt-resize new file mode 100644 index 0000000..bf7be2f --- /dev/null +++ b/defaults/70-rootpt-resize @@ -0,0 +1,20 @@ +# Copied from https://openwrt.org/docs/guide-user/advanced/expand_root + +if [ ! -e /etc/rootpt-resize ] \ +&& type parted > /dev/null \ +&& lock -n /var/lock/root-resize +then +ROOT_BLK="$(readlink -f /sys/dev/block/"$(awk -e \ +'$9=="/dev/root"{print $3}' /proc/self/mountinfo)")" +ROOT_DISK="/dev/$(basename "${ROOT_BLK%/*}")" +ROOT_PART="${ROOT_BLK##*[^0-9]}" +parted -l ---pretend-input-tty << EOI +ok +fix +EOI +parted -s "${ROOT_DISK}" resizepart "${ROOT_PART}" 100% +mount_root done +touch /etc/rootpt-resize +reboot +fi +exit 1 diff --git a/defaults/80-rootfs-resize b/defaults/80-rootfs-resize new file mode 100644 index 0000000..11acde0 --- /dev/null +++ b/defaults/80-rootfs-resize @@ -0,0 +1,23 @@ +# Copied from https://openwrt.org/docs/guide-user/advanced/expand_root +# Updated for f2fs using +# https://github.com/anaelorlinski/OpenWrt-NanoPi-R2S-R4S-Builds/blob/main/docs/resize-f2fs.md + +if [ ! -e /etc/rootfs-resize ] \ +&& [ -e /etc/rootpt-resize ] \ +&& type losetup > /dev/null \ +&& type resize.f2fs > /dev/null \ +&& lock -n /var/lock/root-resize +then +LOOP="$(losetup -n -O NAME | sort | sed -n -e "1p")" +ROOT="$(losetup -n -O BACK-FILE ${LOOP} | sed -e "s|^|/dev|")" +OFFS="$(losetup -n -O OFFSET ${LOOP})" +LOOP="$(losetup -f)" +losetup -o ${OFFS} ${LOOP} ${ROOT} +fsck.f2fs -f ${LOOP} +mount ${LOOP} /mnt +touch /mnt/upper/etc/rootfs-resize +umount ${LOOP} +resize.f2fs ${LOOP} +reboot +fi +exit 1 diff --git a/sysupgrade.conf b/sysupgrade.conf new file mode 100644 index 0000000..64d44be --- /dev/null +++ b/sysupgrade.conf @@ -0,0 +1,5 @@ +## This file contains files and directories that should +## be preserved during an upgrade. + +/etc/uci-defaults/70-rootpt-resize +/etc/uci-defaults/80-rootfs-resize