From 9a2c7fe949ec2ffed410aa1e3adf520d4b85ef4a Mon Sep 17 00:00:00 2001 From: framp Date: Mon, 20 Apr 2020 13:24:55 +0200 Subject: [PATCH 1/2] Fixed pishrink issue #133 --- pishrink.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pishrink.sh b/pishrink.sh index 6551e28..5f04ae5 100755 --- a/pishrink.sh +++ b/pishrink.sh @@ -178,14 +178,14 @@ trap cleanup ERR EXIT #Gather info info "Gathering data" beforesize="$(ls -lh "$img" | cut -d ' ' -f 5)" -if ! parted_output=$(parted -ms "$img" unit B print); then - rc=$? +if ! parted_output="$(parted -ms "$img" unit B print)"; then + rc=$? error $LINENO "parted failed with rc $rc" - info "Possibly invalid image. Run 'parted $img unit B print' manually to investigate" + info "Possibly invalid image. Run 'parted $img unit B print' manually to investigate" exit -6 fi partnum="$(echo "$parted_output" | cut -d ':' -f 1)" -partstart="$(echo "$parted_output" | cut -d ':' -f 2 | tr -d 'B')" +partstart="$(echo "$parted_output" | tail -n 1 | cut -d ':' -f 2 | tr -d 'B')" loopback="$(losetup -f --show -o "$partstart" "$img")" tune2fs_output="$(tune2fs -l "$loopback")" currentsize="$(echo "$tune2fs_output" | grep '^Block count:' | tr -d ' ' | cut -d ':' -f 2)" From 3c3f68f59fb1c11b38d22dccc5714b1d92f083f1 Mon Sep 17 00:00:00 2001 From: framp Date: Mon, 20 Apr 2020 14:58:25 +0200 Subject: [PATCH 2/2] Added missing tail when retrieving partnum --- pishrink.sh | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/pishrink.sh b/pishrink.sh index 5f04ae5..7e308aa 100755 --- a/pishrink.sh +++ b/pishrink.sh @@ -178,13 +178,14 @@ trap cleanup ERR EXIT #Gather info info "Gathering data" beforesize="$(ls -lh "$img" | cut -d ' ' -f 5)" -if ! parted_output="$(parted -ms "$img" unit B print)"; then - rc=$? +parted_output="$(parted -ms "$img" unit B print)" +rc=$? +if (( $rc )); then error $LINENO "parted failed with rc $rc" info "Possibly invalid image. Run 'parted $img unit B print' manually to investigate" exit -6 fi -partnum="$(echo "$parted_output" | cut -d ':' -f 1)" +partnum="$(echo "$parted_output" | tail -n 1 | cut -d ':' -f 1)" partstart="$(echo "$parted_output" | tail -n 1 | cut -d ':' -f 2 | tr -d 'B')" loopback="$(losetup -f --show -o "$partstart" "$img")" tune2fs_output="$(tune2fs -l "$loopback")" @@ -308,8 +309,9 @@ logVariables $LINENO minsize #Shrink filesystem info "Shrinking filesystem" resize2fs -p "$loopback" $minsize -if [[ $? != 0 ]]; then - error $LINENO "resize2fs failed" +rc=$? +if (( $rc )); then + error $LINENO "resize2fs failed with rc $rc" mount "$loopback" "$mountdir" mv "$mountdir/etc/rc.local.bak" "$mountdir/etc/rc.local" umount "$mountdir" @@ -322,30 +324,34 @@ sleep 1 partnewsize=$(($minsize * $blocksize)) newpartend=$(($partstart + $partnewsize)) logVariables $LINENO partnewsize newpartend -if ! parted -s -a minimal "$img" rm "$partnum"; then - rc=$? +parted -s -a minimal "$img" rm "$partnum" +rc=$? +if (( $rc )); then error $LINENO "parted failed with rc $rc" exit -13 fi -if ! parted -s "$img" unit B mkpart primary "$partstart" "$newpartend"; then - rc=$? +parted -s "$img" unit B mkpart primary "$partstart" "$newpartend" +rc=$? +if (( $rc )); then error $LINENO "parted failed with rc $rc" exit -14 fi #Truncate the file info "Shrinking image" -if ! endresult=$(parted -ms "$img" unit B print free); then - rc=$? +endresult=$(parted -ms "$img" unit B print free) +rc=$? +if (( $rc )); then error $LINENO "parted failed with rc $rc" exit -15 fi endresult=$(tail -1 <<< "$endresult" | cut -d ':' -f 2 | tr -d 'B') logVariables $LINENO endresult -if ! truncate -s "$endresult" "$img"; then - rc=$? +truncate -s "$endresult" "$img" +rc=$? +if (( $rc )); then error $LINENO "trunate failed with rc $rc" exit -16 fi