Merge pull request #134 from framps/fix133

Fix for issue #133
This commit is contained in:
Drew Bonasera 2020-04-20 16:37:40 -04:00 committed by GitHub
commit d38666fefd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 15 deletions

View File

@ -178,14 +178,15 @@ trap cleanup ERR EXIT
#Gather info #Gather info
info "Gathering data" info "Gathering data"
beforesize="$(ls -lh "$img" | cut -d ' ' -f 5)" beforesize="$(ls -lh "$img" | cut -d ' ' -f 5)"
if ! parted_output=$(parted -ms "$img" unit B print); then parted_output="$(parted -ms "$img" unit B print)"
rc=$? rc=$?
if (( $rc )); then
error $LINENO "parted failed with rc $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 exit -6
fi fi
partnum="$(echo "$parted_output" | cut -d ':' -f 1)" partnum="$(echo "$parted_output" | tail -n 1 | 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")" loopback="$(losetup -f --show -o "$partstart" "$img")"
tune2fs_output="$(tune2fs -l "$loopback")" tune2fs_output="$(tune2fs -l "$loopback")"
currentsize="$(echo "$tune2fs_output" | grep '^Block count:' | tr -d ' ' | cut -d ':' -f 2)" currentsize="$(echo "$tune2fs_output" | grep '^Block count:' | tr -d ' ' | cut -d ':' -f 2)"
@ -308,8 +309,9 @@ logVariables $LINENO minsize
#Shrink filesystem #Shrink filesystem
info "Shrinking filesystem" info "Shrinking filesystem"
resize2fs -p "$loopback" $minsize resize2fs -p "$loopback" $minsize
if [[ $? != 0 ]]; then rc=$?
error $LINENO "resize2fs failed" if (( $rc )); then
error $LINENO "resize2fs failed with rc $rc"
mount "$loopback" "$mountdir" mount "$loopback" "$mountdir"
mv "$mountdir/etc/rc.local.bak" "$mountdir/etc/rc.local" mv "$mountdir/etc/rc.local.bak" "$mountdir/etc/rc.local"
umount "$mountdir" umount "$mountdir"
@ -322,30 +324,34 @@ sleep 1
partnewsize=$(($minsize * $blocksize)) partnewsize=$(($minsize * $blocksize))
newpartend=$(($partstart + $partnewsize)) newpartend=$(($partstart + $partnewsize))
logVariables $LINENO partnewsize newpartend logVariables $LINENO partnewsize newpartend
if ! parted -s -a minimal "$img" rm "$partnum"; then parted -s -a minimal "$img" rm "$partnum"
rc=$? rc=$?
if (( $rc )); then
error $LINENO "parted failed with rc $rc" error $LINENO "parted failed with rc $rc"
exit -13 exit -13
fi fi
if ! parted -s "$img" unit B mkpart primary "$partstart" "$newpartend"; then parted -s "$img" unit B mkpart primary "$partstart" "$newpartend"
rc=$? rc=$?
if (( $rc )); then
error $LINENO "parted failed with rc $rc" error $LINENO "parted failed with rc $rc"
exit -14 exit -14
fi fi
#Truncate the file #Truncate the file
info "Shrinking image" info "Shrinking image"
if ! endresult=$(parted -ms "$img" unit B print free); then endresult=$(parted -ms "$img" unit B print free)
rc=$? rc=$?
if (( $rc )); then
error $LINENO "parted failed with rc $rc" error $LINENO "parted failed with rc $rc"
exit -15 exit -15
fi fi
endresult=$(tail -1 <<< "$endresult" | cut -d ':' -f 2 | tr -d 'B') endresult=$(tail -1 <<< "$endresult" | cut -d ':' -f 2 | tr -d 'B')
logVariables $LINENO endresult logVariables $LINENO endresult
if ! truncate -s "$endresult" "$img"; then truncate -s "$endresult" "$img"
rc=$? rc=$?
if (( $rc )); then
error $LINENO "trunate failed with rc $rc" error $LINENO "trunate failed with rc $rc"
exit -16 exit -16
fi fi