Expanding root partition and filesystem on OpenWRT

From Jwiki
Revision as of 20:22, 19 April 2025 by Gyurci08 (talk | contribs) (Created page with "Category:OpenWrt = Expanding root partition and filesystem = == Introduction == This instruction expands OpenWrt root partition and filesystem on x86 target. Follow the automated section for quick setup. == Features == * Support `ext4` and `squashfs` image types. * Automatically identify the root partition and filesystem. * Expand the root partition and filesystem using free space. * Preserve the scripts through firmware upgrade. * Automatically run after firmw...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Expanding root partition and filesystem

Introduction

This instruction expands OpenWrt root partition and filesystem on x86 target.

Follow the automated section for quick setup.

Features

  • Support `ext4` and `squashfs` image types.
  • Automatically identify the root partition and filesystem.
  • Expand the root partition and filesystem using free space.
  • Preserve the scripts through firmware upgrade.
  • Automatically run after firmware upgrade.

Instructions

Configure startup scripts

cat /etc/uci-defaults/70-rootpt-resize 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 -f -s "${ROOT_DISK}" \
   resizepart "${ROOT_PART}" 100%
 mount_root
 done
 touch /etc/rootpt-resize
 if [ -e /boot/cmdline.txt ]
 then
   NEW_UUID=`blkid ${ROOT_DISK}p${ROOT_PART} | sed -n 's/.*PARTUUID="\([^"]*\)".*/\1/p'`
   sed -i "s/PARTUUID=[^ ]*/PARTUUID=${NEW_UUID}/" /boot/cmdline.txt
 fi
 reboot

fi exit 1 EOF

cat /etc/uci-defaults/80-rootfs-resize if [ ! -e /etc/rootfs-resize ] \

 && [ -e /etc/rootpt-resize ] \
 && type losetup > /dev/null \
 && type resize2fs > /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_DEV="/dev/${ROOT_BLK##*/}"
 LOOP_DEV="$(awk -e '$5=="/overlay"{print $9}' /proc/self/mountinfo)"
 if [ -z "${LOOP_DEV}" ]
 then
   LOOP_DEV="$(losetup -f)"
   losetup "${LOOP_DEV}" "${ROOT_DEV}"
 fi
 resize2fs -f "${LOOP_DEV}"
 mount_root
 done
 touch /etc/rootfs-resize
 reboot

fi exit 1 EOF

cat > /etc/sysupgrade.conf /etc/uci-defaults/70-rootpt-resize /etc/uci-defaults/80-rootfs-resize EOF


Examples

Install packages

opkg update opkg install parted losetup resize2fs


Expand root partition/filesystem

sh /etc/uci-defaults/70-rootpt-resize


Automated

opkg update opkg install parted losetup resize2fs wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0" . ./expand-root.sh


Soruce: https://openwrt.org/docs/guide-user/advanced/expand_root