#!/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