diskimage-builder/elements/growroot/static/usr/local/sbin/growroot
Ian Wienand 63182a02e4 Refactor growroot for debuggabilty
This is a slight refactor I found useful when debugging.  The
udevadmin info query will be visbile in the output of "set -x" which
helps, and is the logs/journal.

We can also reduce some calls by keeping the value and just grepping
with a herefile.

This also does some error checking and bails out if it does not see
what it needs to continue.

Change-Id: I39c4d262f9c5ce53f6b83d95b1363a74834cf2c8
2016-02-10 14:02:28 +11:00

37 lines
869 B
Bash
Executable File

#!/bin/bash
# dib-lint: disable=dibdebugtrace
set -exu
set -o pipefail
root_dev=$(df -P / | tail -n 1 | awk '/.*/ { print $1 }')
if [ -z "${root_dev}" ]; then
echo "*** Root device not found?"
exit 1
fi
udev_root=$(udevadm info --query=all --name $root_dev)
part=$(grep ID_PART_ENTRY_DISK <<< "${udev_root}" | cut -d= -f2)
if [ -z "${part}" ]; then
echo "*** Root partition not found!"
exit 1
fi
part_no=$(grep ID_PART_ENTRY_NUMBER <<< "${udev_root}" | cut -d= -f2)
if [ -z "${part_no}" ]; then
echo "*** Root partition number not found!"
exit 1
fi
disk=$(find /sys/dev/block -name ${part})
disk="/dev/$(source ${disk}/uevent; echo $DEVNAME)"
set +e
growpart $disk $part_no
# Error code 1 means no change
if [ "$?" -le 1 ]; then
# always return true because this might not work if were are non ext4
resize2fs $root_dev || true
fi