Add system-update script
dustin/metricspi/pipeline/head This commit looks good
Details
dustin/metricspi/pipeline/head This commit looks good
Details
The `system-update` script takes an archive package (`metricspi.tar`) and extracts its contents into the proper locations to update the system.pull/2/head
parent
aaf75ca1a0
commit
4dddea5a99
|
@ -0,0 +1,76 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# vim: set sw=4 ts=4 sts=4 et :
|
||||||
|
|
||||||
|
check_system() {
|
||||||
|
rc=0
|
||||||
|
if ! mountpoint -q /boot; then
|
||||||
|
echo 'ERROR: /boot is not mounted' >&2
|
||||||
|
rc=1
|
||||||
|
elif [ ! -w /boot ]; then
|
||||||
|
echo 'ERROR: /boot is not writable' >&2
|
||||||
|
rc=1
|
||||||
|
fi
|
||||||
|
if ! mountpoint -q /boot/efi; then
|
||||||
|
echo 'ERROR: /boot/efi is not mounted' >&2
|
||||||
|
rc=1
|
||||||
|
elif [ ! -w /boot/efi ]; then
|
||||||
|
echo 'ERROR: /boot/efi is not writable' >&2
|
||||||
|
rc=1
|
||||||
|
fi
|
||||||
|
return ${rc}
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
rc=$?
|
||||||
|
echo "$1" >&2
|
||||||
|
exit ${rc}
|
||||||
|
}
|
||||||
|
|
||||||
|
do_update() {
|
||||||
|
if [ -d /boot/efi/.old ]; then
|
||||||
|
rm -rf /boot/efi/.old || die 'Failed to remove /boot/efi/.old'
|
||||||
|
fi
|
||||||
|
mkdir /boot/efi/.old || die 'Failed to create /boot/efi/.old'
|
||||||
|
for x in /boot/efi/*; do
|
||||||
|
mv "${x}" /boot/efi/.old/ \
|
||||||
|
|| die "Failed to move ${x} to /boot/efi/.old/"
|
||||||
|
done
|
||||||
|
mv /boot/rootfs.squashfs /boot/rootfs.squashfs.old \
|
||||||
|
|| die 'Failed to rename rootfs.squashfs'
|
||||||
|
echo 'Extracting root filesystem ...'
|
||||||
|
tar -xf "${filename}" -C /boot rootfs.squashfs \
|
||||||
|
|| die 'Failed to extract rootfs.squashfs'
|
||||||
|
echo 'Extracting kernel/initramfs/firmware ...'
|
||||||
|
tar -xf "${filename}" -C /boot/efi \
|
||||||
|
--exclude rootfs.squashfs \
|
||||||
|
--no-same-owner \
|
||||||
|
|| die 'Failed to extract kernel/initramfs/firmware'
|
||||||
|
echo 'The machine will need to be rebooted to complete the update process'
|
||||||
|
}
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
printf 'usage: %s filename\n' "${0##*/}"
|
||||||
|
}
|
||||||
|
|
||||||
|
filename=
|
||||||
|
|
||||||
|
while [ $# -ge 1 ]; do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
filename="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${filename}" ]; then
|
||||||
|
usage >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_system || exit $?
|
||||||
|
do_update
|
Loading…
Reference in New Issue