diff --git a/debian/calamares.install b/debian/calamares.install index 5ba730b..c95f912 100644 --- a/debian/calamares.install +++ b/debian/calamares.install @@ -3,3 +3,4 @@ debian/settings.conf /etc/calamares/ debian/modules/* /etc/calamares/modules/ usr/* debian/extra_modules/* usr/lib/calamares/modules/ +debian/fs_resize usr/sbin/ diff --git a/debian/fs_resize b/debian/fs_resize new file mode 100755 index 0000000..23d399d --- /dev/null +++ b/debian/fs_resize @@ -0,0 +1,114 @@ +#!/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 diff --git a/debian/modules/resize.conf b/debian/modules/resize.conf index a3634ef..0ceaaf4 100644 --- a/debian/modules/resize.conf +++ b/debian/modules/resize.conf @@ -1,2 +1,2 @@ --- -command: "/usr/local/bin/fs_resize" +command: "/usr/sbin/fs_resize"