
SC2154: var is referenced but not assigned. The 'rootmnt' variable is set in /usr/share/initramfs-tools/init and if it's not available, that would be bad. According to SC2154 you can fix that issue by using '${var:?}' so it would fail if unset or empty. So apply that and reference that SC item in the comments. Also remove it from the exclude list in the CI config file.
54 lines
1.4 KiB
Bash
Executable file
54 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
#
|
|
# List the soft prerequisites here. This is a space separated list of
|
|
# names, of scripts that are in the same directory as this one, that
|
|
# must be run before this one can be.
|
|
#
|
|
PREREQS=""
|
|
case $1 in
|
|
prereqs) echo "$PREREQS"; exit 0;;
|
|
esac
|
|
|
|
. /scripts/functions
|
|
|
|
# Given the root partition, get the underlying device and partition number
|
|
rootpart=$(realpath $ROOT)
|
|
rootpart_nr=$(blkid -sPART_ENTRY_NUMBER -o value -p $rootpart)
|
|
rootdev="/dev/$(lsblk -no pkname "$rootpart")"
|
|
|
|
# Parted will detect if the GPT label is messed up and fix it
|
|
# automatically, we just need to tell it to do so.
|
|
parted -s $rootdev print 2>&1 | grep -z "fix the GPT" && {
|
|
echo "Fix" | parted ---pretend-input-tty $rootdev print
|
|
}
|
|
|
|
# Check if there's free space at the end of the device
|
|
free_space="$(parted -m -s $rootdev print free | tail -n1 | grep free)"
|
|
if test -z "$free_space"; then
|
|
# Great, we already resized; nothing left to do!
|
|
exit 0
|
|
fi
|
|
|
|
log_begin_msg "$0 resizing $ROOT"
|
|
|
|
# Unmount for safety; fail if unset or empty (shellcheck SC2154)
|
|
umount "${rootmnt:?}"
|
|
|
|
# Expand the partition size to fill the entire device
|
|
parted -s $rootdev resizepart $rootpart_nr 100%
|
|
|
|
wait_for_udev 5
|
|
|
|
# Now resize the filesystem
|
|
partprobe $rootdev
|
|
resize2fs $rootpart
|
|
|
|
# Remount root
|
|
if ! mount -r ${FSTYPE:+-t "${FSTYPE}"} ${ROOTFLAGS} "${ROOT}" "${rootmnt?}"; then
|
|
panic "Failed to mount ${ROOT} as root file system."
|
|
fi
|
|
|
|
log_end_msg
|