1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun### BEGIN INIT INFO 3*4882a593Smuzhiyun# Provides: resize-all 4*4882a593Smuzhiyun# Default-Start: S 5*4882a593Smuzhiyun# Default-Stop: 6*4882a593Smuzhiyun# Description: Resize all internal mounted partitions 7*4882a593Smuzhiyun### END INIT INFO 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun# Don't exit on error status 10*4882a593Smuzhiyunset +e 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun# Uncomment below to see more logs 13*4882a593Smuzhiyun# set -x 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun. $(dirname $0)/disk-helper 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunLOGFILE=/tmp/resize-all.log 18*4882a593Smuzhiyun 19*4882a593Smuzhiyundo_part() 20*4882a593Smuzhiyun{ 21*4882a593Smuzhiyun DEV=$1 22*4882a593Smuzhiyun MOUNT_POINT=$2 23*4882a593Smuzhiyun FSTYPE=$3 24*4882a593Smuzhiyun OPTS=$4 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun # Check /etc/fstab 27*4882a593Smuzhiyun if ! sed "s/#.*//" /etc/fstab | xargs -n 6 | cut -d' ' -f2 | \ 28*4882a593Smuzhiyun grep -q "^$MOUNT_POINT/*$"; then 29*4882a593Smuzhiyun if [ "$MOUNT_POINT" != "/" ]; then 30*4882a593Smuzhiyun return 0 31*4882a593Smuzhiyun fi 32*4882a593Smuzhiyun fi 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun echo "Handling $DEV $MOUNT_POINT $FSTYPE $OPTS" 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun # Setup check/mount tools and do some prepare 37*4882a593Smuzhiyun prepare_part || return 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun # Store ro/rw 40*4882a593Smuzhiyun MOUNTED_RO_RW=$(touch $MOUNT_POINT &>/dev/null && echo rw || echo ro) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun # Resize partition if needed 43*4882a593Smuzhiyun resize_part 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun # Restore ro/rw 46*4882a593Smuzhiyun remount_part $MOUNTED_RO_RW 47*4882a593Smuzhiyun} 48*4882a593Smuzhiyun 49*4882a593Smuzhiyunresize_all() 50*4882a593Smuzhiyun{ 51*4882a593Smuzhiyun echo "Will now resize all mounted partitions in /etc/fstab or root" 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun while read LINE;do 54*4882a593Smuzhiyun do_part $LINE 55*4882a593Smuzhiyun done < /proc/mounts 56*4882a593Smuzhiyun} 57*4882a593Smuzhiyun 58*4882a593Smuzhiyuncase "$1" in 59*4882a593Smuzhiyun start|"") 60*4882a593Smuzhiyun resize_all 2>&1 | tee $LOGFILE 61*4882a593Smuzhiyun echo "Log saved to $LOGFILE" 62*4882a593Smuzhiyun ;; 63*4882a593Smuzhiyun *) 64*4882a593Smuzhiyun echo "Usage: resize-helper start" >&2 65*4882a593Smuzhiyun exit 3 66*4882a593Smuzhiyun ;; 67*4882a593Smuzhiyunesac 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun: 70