fix bugs, support multiple distros via subvolumes
[automated-distro-installer] / fai / config / hooks / partition.DEFAULT
index 0dbc3769d3388219e49143253f79c19a9bc97c7b..81475f2055d48533b8cff7799caadd28f0c61ea8 100755 (executable)
@@ -10,11 +10,12 @@ skiptask partition || ! type skiptask # for running not in fai
 
 #### begin configuration
 
+partition=false # change to true to force a full wipe
 bootn=3
 rootn=1
 swapn=2
 bios_grubn=4
-boot_mib=750
+boot_mib=1500
 lastn=$bios_grubn
 
 if ifclass VM; then
@@ -57,7 +58,6 @@ devs=(${letters[@]/#//dev/${d}})
 crypt_devs=(${letters[@]/#//dev/mapper/crypt_dev_${d}})
 first_boot_dev=${devs[0]}$bootn
 
-partition=true # hardcoded for now
 
 # somewhat crude detection of whether to partition
 for dev in ${devs[@]}; do
@@ -72,8 +72,6 @@ for dev in ${devs[@]}; do
     done
 done
 
-#partition=true # for temporarily override
-
 # keyfiles generated like:
 # head -c 2048 /dev/urandom | od | s dd of=/q/root/luks/host-demohost
 luks_dir=${LUKS_DIR:-/var/lib/fai/config/distro-install-common/luks}
@@ -98,7 +96,7 @@ swap_mib=$(( $(grep ^MemTotal: /proc/meminfo | \
 # Otherwise we would pass in -0 for the end argument for the last partition.
 disk_mib=$(( $(parted -m ${devs[0]} unit MiB print | \
                       sed -nr "s#^${devs[0]}:([0-9]+).*#\1#p") - 1))
-root_end=$(( disk_mib - swap_mib - boot_mib ))
+root_end=$(( disk_mib - swap_mib - boot_mib /  ${#devs[@]} ))
 swap_end=$(( root_end + swap_mib))
 
 mkdir -p /tmp/fai
@@ -174,22 +172,23 @@ cd /mnt
 for x in q home_$DISTRO root_$DISTRO; do
     btrfs subvolume list . | grep "$x$" >/dev/null || btrfs subvolume create $x
 done
+mkdir -p /mnt/root_$DISTRO/boot
 for x in root/a q/a; do
     mkdir -p $x
     chown 1000:1000 $x
     chmod 755 $x
 done
-btrfs subvolume set-default \
-      $(btrfs subvolume list . | grep "root_$DISTRO$" | awk '{print $2}') .
-chattr -Rf +C root
+# could set default like this, but no reason to.
+# btrfs subvolume set-default \
+#       $(btrfs subvolume list . | grep "root_$DISTRO$" | awk '{print $2}') .
+chattr -Rf +C root_$DISTRO
 cd /
 umount /mnt
-mount $first_boot_dev /mnt
+mount -o subvolid=0 $first_boot_dev /mnt
 cd /mnt
+btrfs subvolume set-default 0 /mnt
 [[ ! -e /mnt/boot_$DISTRO ]] || btrfs subvolume delete /mnt/boot_$DISTRO
 btrfs subvolume create boot_$DISTRO
-btrfs subvolume set-default \
-      $(btrfs subvolume list . | grep "boot_$DISTRO$" | awk '{print $2}') .
 cd /
 umount /mnt
 ## end create subvols ##