X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=install-chboot;fp=install-chboot;h=838c0ae02e63565a37963088f8c65490734dc45d;hb=cfe7d2a4eb0e0af4cd59df420f76ea4d5ee755fd;hp=0000000000000000000000000000000000000000;hpb=114c4b67d43d7fa1cd7b5014153b82aa8492c74d;p=automated-distro-installer diff --git a/install-chboot b/install-chboot new file mode 100755 index 0000000..838c0ae --- /dev/null +++ b/install-chboot @@ -0,0 +1,44 @@ +#!/bin/bash +# Copyright (C) 2016 Ian Kelling + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +[[ $EUID == 0 ]] || exec sudo -E "$BASH_SOURCE" "$@" + +set -eE -o pipefail +trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR + +# usage install-chboot: isntalls chboot to all /boot subvols, +# in case there is an issue booting and it is needed. +# Run this when chboot changes. + +cd "${BASH_SOURCE%/*}" + +e() { echo "$@"; "$@"; } + +boot_dev=$(mount | sed -rn "s#^(\S+) on /boot .*#\1#p") +mount_point=$(mktemp -d) +e mount -o subvolid=0 $boot_dev $mount_point + +shopt -s nullglob +for dir in $mount_point/*; do + btrfs subvol show $dir &>/dev/null || continue + if [[ -e $dir/boot ]]; then + dir=$dir/boot + fi + e install -m 755 -o root -g root chboot $dir +done +e umount $mount_point +e rmdir $mount_point