arch fixes plus name subvols by distro in prep for multi-distro
authorIan Kelling <ian@iankelling.org>
Sat, 20 Feb 2016 10:35:45 +0000 (02:35 -0800)
committerIan Kelling <ian@iankelling.org>
Mon, 6 Feb 2017 06:21:41 +0000 (22:21 -0800)
arch-init
arch-init-chroot
fai/config/hooks/partition.DEFAULT

index f5a6687c783c7070e2a4a83ad2904e613217388f..a7420bedeeb09937041a3724ecfdc56ca3ccf166 100755 (executable)
--- a/arch-init
+++ b/arch-init
@@ -55,6 +55,7 @@ done
 export CLASS_TWO_DISK=true
 export LUKS_DIR=/root/luks
 export HOSTNAME=$hostname
+export DISTRO=arch
 chmod +x partition.DEFAULT
 ./partition.DEFAULT
 # arch doesn't need crypttab entries for initramfs crypt partititions
@@ -62,12 +63,10 @@ export rootn=1
 export bootn=3
 export swapn=2
 sed -ri '/^crypt_dev/d' /tmp/fai/crypttab
-mount -o subvol=/root /dev/mapper/crypt_dev_?da$rootn /mnt
+mount -o subvol=root_$DISTRO /dev/mapper/crypt_dev_?da$rootn /mnt
 mkdir -p /mnt/{q,home}
 mount -o subvol=/q /dev/mapper/crypt_dev_?da$rootn /mnt/q
-mount -o subvol=/home /dev/mapper/crypt_dev_?da$rootn /mnt/home
-mkdir -p /mnt/etc
-cp /tmp/fai/{fstab,crypttab} /mnt/etc
+mount -o subvol=/home_$DISTRO /dev/mapper/crypt_dev_?da$rootn /mnt/home
 mkdir -p /mnt/boot
 mount /dev/?da$bootn /mnt/boot
 
@@ -101,6 +100,7 @@ if [[ $mirror ]]; then
 they will succeed using the secodary mirror"
 fi
 pacstrap /mnt base
+cp /tmp/fai/{fstab,crypttab} /mnt/etc
 case $hostname in
     frodo)
         # the root .ssh needs to be like this,
@@ -125,9 +125,6 @@ UUID=dd67766f-93c5-4ce3-9877-a1d9841dd4a4  none  swap  sw  0  0
 EOF
         ;;
     *)
-        echo "$0: first fstab:"
-        cat /mnt/etc/fstab
-        genfstab -p /mnt > /mnt/etc/fstab
         echo "$0: 2nd fstab:"
         cat /mnt/etc/fstab
         cp -r .ssh /mnt/root
index e4dcb41a82f1b8e514d20851ccc0181af2b261fa..9c3fc48067a16b3e72ec5dc920a0da1f7353337a 100755 (executable)
@@ -3,6 +3,9 @@ set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?"' ERR
 
 for x in /etc/*.pacorig; do
+    # This started breaking immediately when I stoped doing genfstab.
+    # It's probably not needed anymore
+    [[ -e $x ]] || break
     mv $x ${x%.pacorig}
 done
 
index 89ae1e4491743e76b9fde6a1f37e6517d8accc22..0dbc3769d3388219e49143253f79c19a9bc97c7b 100755 (executable)
@@ -6,7 +6,7 @@ trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?"' ERR
 # # fai's setup-storage won't do btrfs on luks,
 # # so we do it ourself :)
 
-skiptask partition ||: # for running out of fai
+skiptask partition || ! type skiptask # for running not in fai
 
 #### begin configuration
 
@@ -33,6 +33,15 @@ elif ifclass MANY_DISK; then
 else
     exit 1
 fi
+
+if [[ ! $DISTRO ]]; then
+    if ifclass STABLE; then
+        DISTRO=debianjessie
+    else
+        DISTRO=debiantesting
+    fi
+fi
+
 ##### end configuration
 
 
@@ -142,27 +151,27 @@ if $partition; then
                    --key-file $luks_dir/host-$HOSTNAME
     done
     bpart ${crypt_devs[@]/%/$rootn}
-    mount $crypt /mnt
+    bpart ${devs[@]/%/$bootn}
 else
     for dev in ${devs[@]}; do
         cryptsetup luksOpen $dev$rootn crypt_dev_${dev##/dev/}$rootn \
                    --key-file $luks_dir/host-$HOSTNAME || [[ $? == 141 ]]
     done
     sleep 1
-    mount -o subvolid=0 $crypt /mnt
-    # systemd creates subvolumes we want to delete.
-    s=($(btrfs subvolume list --sort=-path /mnt |
-                sed -rn 's#^.*path\s*(root/\S+)\s*$#\1#p'))
-    for subvol in ${s[@]}; do btrfs subvolume delete /mnt/$subvol; done
-    btrfs subvolume set-default 0 /mnt
-    btrfs subvolume delete /mnt/root
 fi
-bpart ${devs[@]/%/$bootn}
+
+mount -o subvolid=0 $crypt /mnt
+# systemd creates subvolumes we want to delete.
+s=($(btrfs subvolume list --sort=-path /mnt |
+            sed -rn "s#^.*path\s*(root_$DISTRO/\S+)\s*\$#\1#p"))
+for subvol in ${s[@]}; do btrfs subvolume delete /mnt/$subvol; done
+btrfs subvolume set-default 0 /mnt
+[[ ! -e /mnt/root_$DISTRO ]] || btrfs subvolume delete /mnt/root_$DISTRO
 
 
 ## create subvols ##
 cd /mnt
-for x in q home root; do
+for x in q home_$DISTRO root_$DISTRO; do
     btrfs subvolume list . | grep "$x$" >/dev/null || btrfs subvolume create $x
 done
 for x in root/a q/a; do
@@ -171,15 +180,16 @@ for x in root/a q/a; do
     chmod 755 $x
 done
 btrfs subvolume set-default \
-      $(btrfs subvolume list . | grep 'root$' | awk '{print $2}') .
+      $(btrfs subvolume list . | grep "root_$DISTRO$" | awk '{print $2}') .
 chattr -Rf +C root
 cd /
 umount /mnt
 mount $first_boot_dev /mnt
 cd /mnt
-btrfs subvolume create boot
+[[ ! -e /mnt/boot_$DISTRO ]] || btrfs subvolume delete /mnt/boot_$DISTRO
+btrfs subvolume create boot_$DISTRO
 btrfs subvolume set-default \
-      $(btrfs subvolume list . | grep 'boot$' | awk '{print $2}') .
+      $(btrfs subvolume list . | grep "boot_$DISTRO$" | awk '{print $2}') .
 cd /
 umount /mnt
 ## end create subvols ##
@@ -187,11 +197,11 @@ umount /mnt
 
 
 cat > /tmp/fai/fstab <<EOF
-$crypt  /  btrfs  noatime,subvol=/root  0 0
-$crypt  /q  btrfs  noatime,subvol=/q  0 0
+$crypt  /  btrfs  noatime,subvol=root_$DISTRO  0 0
+$crypt  /q  btrfs  noatime,subvol=q  0 0
 /q/a  /a  none  bind  0 0
-$crypt  /home  btrfs  noatime,subvol=/home  0 0
-$first_boot_dev  /boot  btrfs  noatime,subvol=/boot  0 0
+$crypt  /home  btrfs  noatime,subvol=home_$DISTRO  0 0
+$first_boot_dev  /boot  btrfs  noatime,subvol=boot_$DISTRO  0 0
 EOF
 
 swaps=()