iankelling.org
/
git
/
automated-distro-installer
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add more stack traces, other minor changes
[automated-distro-installer]
/
fai
/
config
/
files
/
boot
/
chboot
/
DEFAULT
diff --git
a/fai/config/files/boot/chboot/DEFAULT
b/fai/config/files/boot/chboot/DEFAULT
index 4dda460dbae5d3117860495dc940159b8ccdfe54..8a093d9e32287de91e36266bd87bcb65fae7fc3f 100755
(executable)
--- a/
fai/config/files/boot/chboot/DEFAULT
+++ b/
fai/config/files/boot/chboot/DEFAULT
@@
-16,8
+16,7
@@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-set -eE -o pipefail
-trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+x="$(readlink -f "$BASH_SOURCE")"; source "${x%/*}/bash-trace"
[[ $EUID == 0 ]] || exec sudo "$BASH_SOURCE" "$@"
[[ $EUID == 0 ]] || exec sudo "$BASH_SOURCE" "$@"
@@
-28,7
+27,7
@@
Set grub to boot into a different distro, and reboot unless -r
With no argument, print available distros
DISTRO_NAME is based on the partition names in /boot.
With no argument, print available distros
DISTRO_NAME is based on the partition names in /boot.
-For example
debianjessie for the partitionn
boot_debianjessie.
+For example
,
boot_debianjessie.
For a system without libreboot, which is failing completely to
boot on one distro, here is how I did a chboot for it:
For a system without libreboot, which is failing completely to
boot on one distro, here is how I did a chboot for it:
@@
-76,10
+75,15
@@
done
distro=$1
distro=$1
+mnt=/boot
+if ! mountpoint $mnt &>/dev/null; then
+ mnt=/
+fi
+
if [[ ! $distro ]]; then
echo "available distros:"
if [[ ! $distro ]]; then
echo "available distros:"
- cur=$(btrfs subvol show
/boo
t| sed -rn 's/^.*Name:\s*(\S*).*/\1/p')
- btrfs subvolume list
/boo
t | awk '{print $9}' | sed "s/$cur/$cur (current)/"
+ cur=$(btrfs subvol show
$mn
t| sed -rn 's/^.*Name:\s*(\S*).*/\1/p')
+ btrfs subvolume list
$mn
t | awk '{print $9}' | sed "s/$cur/$cur (current)/"
exit 0
fi
exit 0
fi
@@
-88,9
+92,9
@@
fi
#### begin initial error checking #####
#### begin initial error checking #####
-if ! btrfs subvolume list
/boot | grep "_
$distro$" &>/dev/null; then
- echo "$0: error:
_$distro$ not found in btrfs subvolume list /boo
t:"
- btrfs subvolume list
/boo
t
+if ! btrfs subvolume list
$mnt | grep "
$distro$" &>/dev/null; then
+ echo "$0: error:
$distro not found in btrfs subvolume list $mn
t:"
+ btrfs subvolume list
$mn
t
exit 1
fi
exit 1
fi
@@
-98,11
+102,11
@@
fi
e() { echo "$@"; "$@"; }
e() { echo "$@"; "$@"; }
-boot_dev=$(mount | sed -rn "s#^(\S+) on
/boo
t .*#\1#p")
+boot_dev=$(mount | sed -rn "s#^(\S+) on
$mn
t .*#\1#p")
mount_point=$(mktemp -d)
mount_point=$(mktemp -d)
-e mount -o subvol=
boot_
$distro $boot_dev $mount_point
+e mount -o subvol=$distro $boot_dev $mount_point
boot_disk=${boot_dev%%[0-9]*}
boot_disk=${boot_dev%%[0-9]*}
@@
-114,7
+118,7
@@
e grub-bios-setup -d $mount_point/grub/i386-pc -s -m $mount_point/grub/device.ma
e umount $mount_point
e mount $boot_disk$grub_extn $mount_point
e umount $mount_point
e mount $boot_disk$grub_extn $mount_point
-e grub-editenv $mount_point/grubenv set last_boot=/
boot_
$distro
+e grub-editenv $mount_point/grubenv set last_boot=/$distro
e grub-editenv $mount_point/grubenv set did_fai_check=true
e umount $mount_point
e rmdir $mount_point
e grub-editenv $mount_point/grubenv set did_fai_check=true
e umount $mount_point
e rmdir $mount_point