make chboot work for bootstrap volume
authorIan Kelling <ian@iankelling.org>
Sat, 11 Feb 2017 04:19:51 +0000 (20:19 -0800)
committerIan Kelling <ian@iankelling.org>
Sat, 11 Feb 2017 04:19:51 +0000 (20:19 -0800)
fai-kexec
fai/config/files/boot/chboot/DEFAULT
pxe-server
wrt-setup

index dbf003be355563b8188b02240e7bae7f61f681f8..b674d7eff2d2090675417ceb914615837e97df46 100755 (executable)
--- a/fai-kexec
+++ b/fai-kexec
@@ -17,6 +17,7 @@
 set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 
+[[ $EUID == 0 ]] || exec sudo "$BASH_SOURCE" "$@"
 
 usage() {
     cat <<'EOF'
@@ -35,7 +36,6 @@ case $1 in
 esac
 
 
-
 if [[ $1 ]]; then
     prefix="ssh root@$1"
 fi
index 4dda460dbae5d3117860495dc940159b8ccdfe54..a8aa58497c386e94d3f5c676191530b56d520c49 100755 (executable)
@@ -28,7 +28,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.
-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:
@@ -76,10 +76,15 @@ done
 
 distro=$1
 
+mnt=/boot
+if ! mountpoint $mnt &>/dev/null; then
+    mnt=/
+fi
+
 if [[ ! $distro ]]; then
     echo "available distros:"
-    cur=$(btrfs subvol show /boot| sed -rn 's/^.*Name:\s*(\S*).*/\1/p')
-    btrfs subvolume list /boot | awk '{print $9}' | sed "s/$cur/$cur (current)/"
+    cur=$(btrfs subvol show $mnt| sed -rn 's/^.*Name:\s*(\S*).*/\1/p')
+    btrfs subvolume list $mnt | awk '{print $9}' | sed "s/$cur/$cur (current)/"
     exit 0
 fi
 
@@ -88,9 +93,9 @@ fi
 
 #### begin initial error checking #####
 
-if ! btrfs subvolume list /boot | grep "_$distro$" &>/dev/null; then
-    echo "$0: error: _$distro$ not found in btrfs subvolume list /boot:"
-    btrfs subvolume list /boot
+if ! btrfs subvolume list $mnt | grep "_$distro$" &>/dev/null; then
+    echo "$0: error: _$distro$ not found in btrfs subvolume list $mnt:"
+    btrfs subvolume list $mnt
     exit 1
 fi
 
@@ -98,11 +103,11 @@ fi
 
 e() { echo "$@"; "$@"; }
 
-boot_dev=$(mount | sed -rn "s#^(\S+) on /boot .*#\1#p")
+boot_dev=$(mount | sed -rn "s#^(\S+) on $mnt .*#\1#p")
 
 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]*}
 
@@ -114,7 +119,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 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
index 9e74eeb757a030c9a367fabb3c8440597188d043..fb92d66c82b736692ce2d9849491c4798d83101e 100755 (executable)
@@ -156,7 +156,9 @@ if $set; then
             e fai-redep
         fi
     else
-        e myfai-chboot
+        # This will fail if faiserver is not setup, so ignore any
+        # failure and don't bother us about it.
+        myfai-chboot &>/dev/null ||:
     fi
 fi
 
index 981a290f0f0b0dd4909f71bca1e463908dfb512d..aa34f67f4321872434d6ba55b23f75045db23871 100755 (executable)
--- a/wrt-setup
+++ b/wrt-setup
@@ -247,8 +247,8 @@ EOF
 dnsmasq_restart=false
 v cedit /etc/hosts <<EOF || dnsmasq_restart=true
 192.168.1.1 wrt
-192.168.1.2 treetowl mail.iankelling.org faiserver $HOME_DOMAIN
-192.168.1.3 frodo
+192.168.1.2 treetowl mail.iankelling.org $HOME_DOMAIN
+192.168.1.3 frodo faiserver
 192.168.1.4 htpc
 192.168.1.5 x2
 192.168.1.6 demohost