Created
November 17, 2020 23:20
-
-
Save VeloAddict/637b309fd743458444a1d8b9a9c7749e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
do_expand_rootfs() { | |
ROOT_PART="$(findmnt / -o source -n)" | |
ROOT_DEV="/dev/$(lsblk -no pkname "$ROOT_PART")" | |
PART_NUM="$(echo "$ROOT_PART" | grep -o "[[:digit:]]*$")" | |
# NOTE: the NOOBS partition layout confuses parted. For now, let's only | |
# agree to work with a sufficiently simple partition layout | |
if [ "$PART_NUM" -ne 2 ]; then | |
whiptail --msgbox "Your partition layout is not currently supported by this tool. You are probably using NOOBS, in which case your root filesystem is already expanded anyway." 20 60 2 | |
return 0 | |
fi | |
LAST_PART_NUM=$(parted "$ROOT_DEV" -ms unit s p | tail -n 1 | cut -f 1 -d:) | |
if [ $LAST_PART_NUM -ne $PART_NUM ]; then | |
whiptail --msgbox "$ROOT_PART is not the last partition. Don't know how to expand" 20 60 2 | |
return 0 | |
fi | |
# Get the starting offset of the root partition | |
PART_START=$(parted "$ROOT_DEV" -ms unit s p | grep "^${PART_NUM}" | cut -f 2 -d: | sed 's/[^0-9]//g') | |
[ "$PART_START" ] || return 1 | |
# Return value will likely be error for fdisk as it fails to reload the | |
# partition table because the root fs is mounted | |
fdisk "$ROOT_DEV" <<EOF | |
p | |
d | |
$PART_NUM | |
n | |
p | |
$PART_NUM | |
$PART_START | |
p | |
w | |
EOF | |
ASK_TO_REBOOT=1 | |
# now set up an init.d script | |
cat <<EOF > /etc/init.d/resize2fs_once && | |
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: resize2fs_once | |
# Required-Start: | |
# Required-Stop: | |
# Default-Start: 3 | |
# 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" && | |
resize2fs "$ROOT_PART" && | |
update-rc.d resize2fs_once remove && | |
rm /etc/init.d/resize2fs_once && | |
log_end_msg \$? | |
;; | |
*) | |
echo "Usage: \$0 start" >&2 | |
exit 3 | |
;; | |
esac | |
EOF | |
chmod +x /etc/init.d/resize2fs_once && | |
update-rc.d resize2fs_once defaults && | |
if [ "$INTERACTIVE" = True ]; then | |
whiptail --msgbox "Root partition has been resized.\nThe filesystem will be enlarged upon the next reboot" 20 60 2 | |
fi | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment