2025-05-10 21:49:39 +08:00

70 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
### BEGIN INIT INFO
# Provides: resize-all
# Default-Start: S
# Default-Stop:
# Description: Resize all internal mounted partitions
### END INIT INFO
# Don't exit on error status
set +e
# Uncomment below to see more logs
# set -x
. $(dirname $0)/disk-helper
LOGFILE=/tmp/resize-all.log
do_part()
{
DEV=$1
MOUNT_POINT=$2
FSTYPE=$3
OPTS=$4
# Check /etc/fstab
if ! sed "s/#.*//" /etc/fstab | xargs -n 6 | cut -d' ' -f2 | \
grep -q "^$MOUNT_POINT/*$"; then
if [ "$MOUNT_POINT" != "/" ]; then
return 0
fi
fi
echo "Handling $DEV $MOUNT_POINT $FSTYPE $OPTS"
# Setup check/mount tools and do some prepare
prepare_part || return
# Store ro/rw
MOUNTED_RO_RW=$(touch $MOUNT_POINT &>/dev/null && echo rw || echo ro)
# Resize partition if needed
resize_part
# Restore ro/rw
remount_part $MOUNTED_RO_RW
}
resize_all()
{
echo "Will now resize all mounted partitions in /etc/fstab or root"
while read LINE;do
do_part $LINE
done < /proc/mounts
}
case "$1" in
start|"")
resize_all 2>&1 | tee $LOGFILE
echo "Log saved to $LOGFILE"
;;
*)
echo "Usage: resize-helper start" >&2
exit 3
;;
esac
: