You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calamares-settings-ubuntu/usr/sbin/fs_resize

115 lines
2.7 KiB

#!/bin/bash
# ******************************************
# Resize Linux ext4 partition to fill sdcard
# ******************************************
if [ "$(id -u)" != "0" ]; then
echo "Script must be run as root !"
exit 0
fi
sdcard="/dev/mmcblk0"
echo ""
fdisk -l $sdcard | grep $sdcard
echo ""
_btrfs=`mount | grep -o btrfs`
fat=`fdisk -l $sdcard | grep FAT16`
if [ "${fat}" = "" ]; then
partno="1"
else
partno="2"
fi
sdcard_part=`fdisk -l $sdcard | grep Linux | awk '{print $1}'`
sdcard_sect=`fdisk -l $sdcard | grep "Disk $sdcard" | awk '{print $7}'`
if [ "${sdcard_sect}" = "" ]; then
sdcard_sect=`fdisk -l $sdcard | grep total | awk '{print $8}'`
fi
sdcard_end=$(expr $sdcard_sect - 1024)
part_start=`fdisk -l $sdcard | grep Linux | awk '{print $2}'`
part_end=`fdisk -l $sdcard | grep Linux | awk '{print $3}'`
echo " Max block: $sdcard_end"
echo " Part end: $part_end"
echo " Part start: $part_start"
echo " Part num: $partno"
if [ ! "${_btrfs}" = "" ]; then
echo " btrfs part: yes"
_resize="btrfs filesystem resize max / &&"
else
_resize="resize2fs ${sdcard_part} &&"
fi
echo ""
if [ $part_end -ge $sdcard_end ]; then
echo "Partition allready maximum size !"
rm /usr/local/bin/fs_resize_warning > /dev/null 2>&1
exit 0
fi
echo -n "WARNING: Do you want to resize \"$sdcard_part\" (y/N)? "
read -n 1 ANSWER
if [ ! "${ANSWER}" = "y" ] ; then
echo ""
echo "Canceled.."
exit 0
fi
echo ""
# RESIZE PARTITION
if [ "${partno}" = "1" ] ; then
echo -e "p\nd\nn\np\n$partno\n$part_start\n$sdcard_end\np\nw" | fdisk ${sdcard} > /dev/null 2>&1
else
echo -e "p\nd\n$partno\nn\np\n$partno\n$part_start\n$sdcard_end\np\nw" | fdisk ${sdcard} > /dev/null 2>&1
fi
echo "PARTITION RESIZED."
#/etc/init.d/resize2fs_once
cat > /etc/init.d/resize2fs_once << _EOF_
#!/bin/sh
### BEGIN INIT INFO
# Provides: resize2fs_once
# Required-Start: \$local_fs \$remote_fs \$network \$syslog
# Required-Stop:
# Default-Start: 2 3 4 5 S
# Default-Stop:
# Short-Description: Resize the root filesystem to fill partition
# Description:
### END INIT INFO
. /lib/lsb/init-functions
case "\$1" in
start)
log_daemon_msg "Starting resize2fs_once" &&
$_resize
rm /etc/init.d/resize2fs_once &&
update-rc.d resize2fs_once remove &&
log_end_msg \$?
;;
*)
echo "Usage: \$0 start" >&2
exit 3
;;
esac
_EOF_
chmod +x /etc/init.d/resize2fs_once > /dev/null 2>&1
update-rc.d resize2fs_once defaults > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "ERROR, run: sudo /etc/int.d/resize2fs_once start AFTER REBOOT!"
exit 0
fi
REBOOT=1
echo "*********************************************"
echo "Rootfs Extended. Please REBOOT to take effect"
echo "*********************************************"
echo ""
rm /usr/local/bin/fs_resize_warning > /dev/null 2>&1