diff --git a/files/files/usr/lib/raspi-config/fix_resize.sh b/files/files/usr/lib/raspi-config/fix_resize.sh deleted file mode 100755 index 20e5755..0000000 --- a/files/files/usr/lib/raspi-config/fix_resize.sh +++ /dev/null @@ -1,181 +0,0 @@ -#!/bin/sh - -reboot_pi () { - umount /boot - mount / -o remount,ro - sync - if [ "$NOOBS" = "1" ]; then - if [ "$NEW_KERNEL" = "1" ]; then - reboot -f "$BOOT_PART_NUM" - else - echo "$BOOT_PART_NUM" > "/sys/module/${BCM_MODULE}/parameters/reboot_part" - fi - fi - echo b > /proc/sysrq-trigger - sleep 5 - exit 0 -} - -check_commands () { - if ! command -v whiptail > /dev/null; then - echo "whiptail not found" - sleep 5 - return 1 - fi - for COMMAND in grep cut sed parted fdisk findmnt partprobe; do - if ! command -v $COMMAND > /dev/null; then - FAIL_REASON="$COMMAND not found" - return 1 - fi - done - return 0 -} - -check_noobs () { - if [ "$BOOT_PART_NUM" = "1" ]; then - NOOBS=0 - else - NOOBS=1 - fi -} - -get_variables () { - ROOT_PART_DEV=$(findmnt / -o source -n) - ROOT_PART_NAME=$(echo "$ROOT_PART_DEV" | cut -d "/" -f 3) - ROOT_DEV_NAME=$(echo /sys/block/*/"${ROOT_PART_NAME}" | cut -d "/" -f 4) - ROOT_DEV="/dev/${ROOT_DEV_NAME}" - ROOT_PART_NUM=$(cat "/sys/block/${ROOT_DEV_NAME}/${ROOT_PART_NAME}/partition") - - BOOT_PART_DEV=$(findmnt /boot -o source -n) - BOOT_PART_NAME=$(echo "$BOOT_PART_DEV" | cut -d "/" -f 3) - BOOT_DEV_NAME=$(echo /sys/block/*/"${BOOT_PART_NAME}" | cut -d "/" -f 4) - BOOT_PART_NUM=$(cat "/sys/block/${BOOT_DEV_NAME}/${BOOT_PART_NAME}/partition") - - OLD_DISKID=$(fdisk -l "$ROOT_DEV" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p') - - check_noobs - - ROOT_DEV_SIZE=$(cat "/sys/block/${ROOT_DEV_NAME}/size") - TARGET_END=$((ROOT_DEV_SIZE - 1)) - - PARTITION_TABLE=$(parted -m "$ROOT_DEV" unit s print | tr -d 's') - - LAST_PART_NUM=$(echo "$PARTITION_TABLE" | tail -n 1 | cut -d ":" -f 1) - - ROOT_PART_LINE=$(echo "$PARTITION_TABLE" | grep -e "^${ROOT_PART_NUM}:") - ROOT_PART_START=$(echo "$ROOT_PART_LINE" | cut -d ":" -f 2) - ROOT_PART_END=$(echo "$ROOT_PART_LINE" | cut -d ":" -f 3) - - if [ "$NOOBS" = "1" ]; then - EXT_PART_LINE=$(echo "$PARTITION_TABLE" | grep ":::;" | head -n 1) - EXT_PART_NUM=$(echo "$EXT_PART_LINE" | cut -d ":" -f 1) - EXT_PART_START=$(echo "$EXT_PART_LINE" | cut -d ":" -f 2) - EXT_PART_END=$(echo "$EXT_PART_LINE" | cut -d ":" -f 3) - fi -} - -fix_partuuid() { - DISKID="$(fdisk -l "$ROOT_DEV" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')" - - sed -i "s/${OLD_DISKID}/${DISKID}/g" /etc/fstab - sed -i "s/${OLD_DISKID}/${DISKID}/" /boot/cmdline.txt -} - -check_variables () { - if [ "$NOOBS" = "1" ]; then - if [ "$EXT_PART_NUM" -gt 4 ] || \ - [ "$EXT_PART_START" -gt "$ROOT_PART_START" ] || \ - [ "$EXT_PART_END" -lt "$ROOT_PART_END" ]; then - FAIL_REASON="Unsupported extended partition" - return 1 - fi - fi - - if [ "$BOOT_DEV_NAME" != "$ROOT_DEV_NAME" ]; then - FAIL_REASON="Boot and root partitions are on different devices" - return 1 - fi - - if [ "$ROOT_PART_NUM" -ne "$LAST_PART_NUM" ]; then - FAIL_REASON="Root partition should be last partition" - return 1 - fi - - if [ "$ROOT_PART_END" -gt "$TARGET_END" ]; then - FAIL_REASON="Root partition runs past the end of device" - return 1 - fi - - if [ ! -b "$ROOT_DEV" ] || [ ! -b "$ROOT_PART_DEV" ] || [ ! -b "$BOOT_PART_DEV" ] ; then - FAIL_REASON="Could not determine partitions" - return 1 - fi -} - -check_kernel () { - local MAJOR=$(uname -r | cut -f1 -d.) - local MINOR=$(uname -r | cut -f2 -d.) - if [ "$MAJOR" -eq "4" ] && [ "$MINOR" -lt "9" ]; then - return 0 - fi - if [ "$MAJOR" -lt "4" ]; then - return 0 - fi - NEW_KERNEL=1 -} - -main () { - get_variables - - if ! check_variables; then - return 1 - fi - - check_kernel - -touch /root/f2 - - resize2fs ${ROOT_PART_DEV} - if [ $? != "0" ]; then -touch /root/ffail - FAIL_REASON="Root partition resize failed" - return 1 - fi - - partprobe "$ROOT_DEV" - fix_partuuid - - return 0 -} - -mount -t proc proc /proc -mount -t sysfs sys /sys -mount -t tmpfs tmp /run -mkdir -p /run/systemd - -mount /boot -mount / -o remount,rw - -touch /root/f1 -sed -i 's| init=/usr/lib/raspi-config/fix_resize.sh||' /boot/cmdline.txt - -if ! grep -q splash /boot/cmdline.txt; then - sed -i "s/ quiet//g" /boot/cmdline.txt -fi -sync - -echo 1 > /proc/sys/kernel/sysrq - -if ! check_commands; then - reboot_pi -fi - -if main; then - whiptail --infobox "Resized root filesystem. Rebooting in 5 seconds..." 20 60 - sleep 5 -else - sleep 5 - whiptail --msgbox "Could not expand filesystem, please try raspi-config or rc_gui.\n${FAIL_REASON}" 20 60 -fi - -reboot_pi diff --git a/files/files/usr/lib/raspi-config/init_resize.sh b/files/files/usr/lib/raspi-config/init_resize.sh deleted file mode 100755 index cd87c4d..0000000 --- a/files/files/usr/lib/raspi-config/init_resize.sh +++ /dev/null @@ -1,194 +0,0 @@ -#!/bin/sh - -reboot_pi () { - umount /boot - mount / -o remount,ro - sync - if [ "$NOOBS" = "1" ]; then - if [ "$NEW_KERNEL" = "1" ]; then - reboot -f "$BOOT_PART_NUM" - else - echo "$BOOT_PART_NUM" > "/sys/module/${BCM_MODULE}/parameters/reboot_part" - fi - fi - echo b > /proc/sysrq-trigger - sleep 5 - exit 0 -} - -check_commands () { - if ! command -v whiptail > /dev/null; then - echo "whiptail not found" - sleep 5 - return 1 - fi - for COMMAND in grep cut sed parted fdisk findmnt partprobe; do - if ! command -v $COMMAND > /dev/null; then - FAIL_REASON="$COMMAND not found" - return 1 - fi - done - return 0 -} - -check_noobs () { - if [ "$BOOT_PART_NUM" = "1" ]; then - NOOBS=0 - else - NOOBS=1 - fi -} - -get_variables () { - ROOT_PART_DEV=$(findmnt / -o source -n) - ROOT_PART_NAME=$(echo "$ROOT_PART_DEV" | cut -d "/" -f 3) - ROOT_DEV_NAME=$(echo /sys/block/*/"${ROOT_PART_NAME}" | cut -d "/" -f 4) - ROOT_DEV="/dev/${ROOT_DEV_NAME}" - ROOT_PART_NUM=$(cat "/sys/block/${ROOT_DEV_NAME}/${ROOT_PART_NAME}/partition") - - BOOT_PART_DEV=$(findmnt /boot -o source -n) - BOOT_PART_NAME=$(echo "$BOOT_PART_DEV" | cut -d "/" -f 3) - BOOT_DEV_NAME=$(echo /sys/block/*/"${BOOT_PART_NAME}" | cut -d "/" -f 4) - BOOT_PART_NUM=$(cat "/sys/block/${BOOT_DEV_NAME}/${BOOT_PART_NAME}/partition") - - OLD_DISKID=$(fdisk -l "$ROOT_DEV" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p') - - check_noobs - - ROOT_DEV_SIZE=$(cat "/sys/block/${ROOT_DEV_NAME}/size") - TARGET_END=$((ROOT_DEV_SIZE - 1)) - - PARTITION_TABLE=$(parted -m "$ROOT_DEV" unit s print | tr -d 's') - - LAST_PART_NUM=$(echo "$PARTITION_TABLE" | tail -n 1 | cut -d ":" -f 1) - - ROOT_PART_LINE=$(echo "$PARTITION_TABLE" | grep -e "^${ROOT_PART_NUM}:") - ROOT_PART_START=$(echo "$ROOT_PART_LINE" | cut -d ":" -f 2) - ROOT_PART_END=$(echo "$ROOT_PART_LINE" | cut -d ":" -f 3) - - if [ "$NOOBS" = "1" ]; then - EXT_PART_LINE=$(echo "$PARTITION_TABLE" | grep ":::;" | head -n 1) - EXT_PART_NUM=$(echo "$EXT_PART_LINE" | cut -d ":" -f 1) - EXT_PART_START=$(echo "$EXT_PART_LINE" | cut -d ":" -f 2) - EXT_PART_END=$(echo "$EXT_PART_LINE" | cut -d ":" -f 3) - fi -} - -fix_partuuid() { - DISKID="$(fdisk -l "$ROOT_DEV" | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')" - - sed -i "s/${OLD_DISKID}/${DISKID}/g" /etc/fstab - sed -i "s/${OLD_DISKID}/${DISKID}/" /boot/cmdline.txt -} - -check_variables () { - if [ "$NOOBS" = "1" ]; then - if [ "$EXT_PART_NUM" -gt 4 ] || \ - [ "$EXT_PART_START" -gt "$ROOT_PART_START" ] || \ - [ "$EXT_PART_END" -lt "$ROOT_PART_END" ]; then - FAIL_REASON="Unsupported extended partition" - return 1 - fi - fi - - if [ "$BOOT_DEV_NAME" != "$ROOT_DEV_NAME" ]; then - FAIL_REASON="Boot and root partitions are on different devices" - return 1 - fi - - if [ "$ROOT_PART_NUM" -ne "$LAST_PART_NUM" ]; then - FAIL_REASON="Root partition should be last partition" - return 1 - fi - - if [ "$ROOT_PART_END" -gt "$TARGET_END" ]; then - FAIL_REASON="Root partition runs past the end of device" - return 1 - fi - - if [ ! -b "$ROOT_DEV" ] || [ ! -b "$ROOT_PART_DEV" ] || [ ! -b "$BOOT_PART_DEV" ] ; then - FAIL_REASON="Could not determine partitions" - return 1 - fi -} - -check_kernel () { - local MAJOR=$(uname -r | cut -f1 -d.) - local MINOR=$(uname -r | cut -f2 -d.) - if [ "$MAJOR" -eq "4" ] && [ "$MINOR" -lt "9" ]; then - return 0 - fi - if [ "$MAJOR" -lt "4" ]; then - return 0 - fi - NEW_KERNEL=1 -} - -main () { - get_variables - - if ! check_variables; then - return 1 - fi - - check_kernel - - if [ "$NOOBS" = "1" ] && [ "$NEW_KERNEL" != "1" ]; then - BCM_MODULE=$(grep -e "^Hardware" /proc/cpuinfo | cut -d ":" -f 2 | tr -d " " | tr '[:upper:]' '[:lower:]') - if ! modprobe "$BCM_MODULE"; then - FAIL_REASON="Couldn't load BCM module $BCM_MODULE" - return 1 - fi - fi - - if [ "$ROOT_PART_END" -eq "$TARGET_END" ]; then - reboot_pi - fi - -touch /root/i2 - - parted ${ROOT_DEV} unit s resizepart ${ROOT_PART_NUM} Yes ${TARGET_END} - if [ $? != "0" ]; then -touch /root/ifail - FAIL_REASON="Root partition resize failed" - return 1 - fi - - partprobe "$ROOT_DEV" - fix_partuuid - - return 0 -} - -mount -t proc proc /proc -mount -t sysfs sys /sys -mount -t tmpfs tmp /run -mkdir -p /run/systemd - -mount /boot -mount / -o remount,rw - -touch /root/i1 - -sed -i 's| init=/usr/lib/raspi-config/init_resize.sh| init=/usr/lib/raspi-config/fix_resize.sh|' /boot/cmdline.txt - -#if ! grep -q splash /boot/cmdline.txt; then -# sed -i "s/ quiet//g" /boot/cmdline.txt -#fi -sync - -echo 1 > /proc/sys/kernel/sysrq - -if ! check_commands; then - reboot_pi -fi - -if main; then - whiptail --infobox "Resized root filesystem. Rebooting in 5 seconds..." 20 60 - sleep 5 -else - sleep 5 - whiptail --msgbox "Could not expand filesystem, please try raspi-config or rc_gui.\n${FAIL_REASON}" 20 60 -fi - -reboot_pi