fix chboot, add partition options
[automated-distro-installer] / fai / config / hooks / partition.DEFAULT
index 9905602cab65a4108057e488a06a507a1ca954b5..46887e9712d1aa558fb08bcab3be976a4fce6723 100755 (executable)
@@ -37,7 +37,7 @@ grub_extn=4
 # https://wiki.archlinux.org/index.php/GRUB
 bios_grubn=5
 lastn=$bios_grubn
-boot_mib=4000
+boot_mib=10000
 
 
 ##### end configuration
@@ -99,7 +99,7 @@ $(cat $disk/queue/rotational)"; exit 1 ;;
 done
 
 # install all ssds, or if there are none, all hdds
-if (( ${#ssds[@]} > 0 )); then
+if ! ifclass ROTATIONAL && (( ${#ssds[@]} > 0 )); then
     short_devs=( ${ssds[@]} )
 else
     short_devs=( ${hdds[@]} )
@@ -173,6 +173,17 @@ for dev in ${devs[@]}; do
     fi
 done
 
+if ifclass RAID0 || (( ${#boot_devs[@]} < 4 )); then
+    raid_level=0
+else
+    raid_level=10
+    # need double the space if we are raid 10, and then
+    # might as well give some extra.
+    boot_mib=$((boot_mib * 3))
+fi
+
+
+
 if [[ ! $DISTRO ]]; then
     if ifclass STABLE_BOOTSTRAP; then
         DISTRO=debianstable_bootstrap
@@ -192,17 +203,10 @@ fi
 first_boot_dev=${boot_devs[0]}
 
 
-case ${#boot_devs[@]} in
-    # need double the space if we are raid 10, and then
-    # might as well give some extra overhead.
-    [4-9]*|[1-3]?*) boot_mib=$((boot_mib * 3)) ;;
-esac
-
-
 bpart() { # btrfs a partition
-    case ${#@} in
-        [1-3]) mkfs.btrfs -f $@ ;;
-        [4-9]*|[1-3]?*) mkfs.btrfs -f -m raid10 -d raid10 $@ ;;
+    case $raid_level in
+        0) mkfs.btrfs -f $@ ;;
+        10) mkfs.btrfs -f -m raid10 -d raid10 $@ ;;
     esac
 }
 
@@ -240,7 +244,11 @@ done
 shopt -s nullglob
 if $partition; then
     for dev in ${devs[@]}; do
-        for x in $dev[0-9]; do
+        # if we repartition to the same as an old partition,
+        # we don't want any old fses hanging around.
+        for (( i=1; i <= lastn; i++ )); do
+            x=$(add-part $dev $i)
+            [[ -e $x ]] || continue
             count_down=10
             # wipefs has failed, manual run works, google suggests timing issue
             while ! wipefs -a $x; do
@@ -417,14 +425,6 @@ $first_root_crypt  /q  btrfs  noatime,subvol=q  0 0
 $first_boot_dev  /boot  btrfs  noatime,subvol=$boot_vol  0 0
 EOF
 
-    # I will avoid using uuid in the future. the other way of specifying is simpler
-    if ifclass treetowl; then
-        cat >> /tmp/fai/fstab <<'EOF'
-$first_root_crypt  /i  btrfs  noatime,subvol=i  0 0
-UUID=3f7b31cd-f299-40b4-a86b-7604282e2715 /i btrfs  noatime  0 2
-EOF
-    fi
-
     swaps=()
     for dev in ${devs[@]}; do
         swaps+=(`swap-cryptname`)