diskimage-builder/elements/growroot/static/usr/local/sbin/growroot
Gregory Haynes 16fc1f9012 create growroot element
We can resize the rootfs without the initrd based approach. Create a
growroot element which performs rootfs resizing as part of system init.

Change-Id: Ibeb846b0170d141fb72323a441d14b65b93ae0a1
2015-08-19 21:12:56 +00:00

27 lines
823 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 }')
minor_dev_no=$(stat --printf="%T" $root_dev)
major_dev_no=$(stat --printf="%t" $root_dev)
# The last digit of our minor number should, on a partitioned block device,
# be the partition number of the device (starting at 1). We need to convert
# this value to decimal from hex for use in growpart.
part_no=$(echo $minor_dev_no | tail -c 2)
part_no=$((16#$part_no))
disk=$(find /sys/dev/block -name "$((16#$major_dev_no)):${minor_dev_no::-1}0")
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