X-Git-Url: https://iankelling.org/git/?p=automated-distro-installer;a=blobdiff_plain;f=fai%2Fconfig%2Fhooks%2Fpartition.DEFAULT;h=ccaca6efe02ad34a5eb94a79ce68e1602969aedc;hp=ab436bdad797d35b60e0339237b731a164fbd09e;hb=78a1427fc167ccee73d448054a9c40c19d737ed3;hpb=19fcc3931853969ed5aa97897795557d324cae39 diff --git a/fai/config/hooks/partition.DEFAULT b/fai/config/hooks/partition.DEFAULT index ab436bd..ccaca6e 100755 --- a/fai/config/hooks/partition.DEFAULT +++ b/fai/config/hooks/partition.DEFAULT @@ -93,10 +93,7 @@ grub_extn=4 # https://wiki.archlinux.org/index.php/GRUB bios_grubn=5 lastn=$bios_grubn -# this is larger than needed for several /boot subvols, -# becuase I keep a minimal debian install on it, for -# recovery needs, and for doing pxe-kexec. -boot_mib=10000 + ##### end configuration @@ -212,7 +209,7 @@ if [[ ! ${devs[0]} ]]; then exit 1 fi - +boot_space=0 first=false boot_devs=() for dev in ${devs[@]}; do @@ -242,6 +239,8 @@ for dev in ${devs[@]}; do done $bad_disk || boot_devs+=($(bootdev)) else + boot_space=$(( boot_space + $(parted -m $dev unit MiB print | \ + sed -nr "s#^/dev/[^:]+:([0-9]+).*#\1#p") - 1)) boot_devs+=($(bootdev)) fi if [[ $boot_devs && $first ]]; then @@ -256,11 +255,32 @@ elif ifclass RAID1 || (( ${#boot_devs[@]} <= 3 )); then raid_level=1 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 +### Begin calculate boot partition space +# due to raid duplication +case $raid_level in + 1*) boot_space=$(( boot_space / 2 )) ;; +esac +if (( boot_space > 60000 )); then + # this is larger than needed for several /boot subvols, + # becuase I keep a minimal debian install on it for + # recovery needs and for doing pxe-kexec. + boot_mib=10000 +elif (( boot_space > 30000 )); then + boot_mib=$(( 5000 + (boot_space - 30000) / 2 )) +else + # Small vms don't have room for /boot recovery. With 3 kernels + # installed, i'm using 132M on t8, so this seems like plenty of + # room. note: rhel 8 recomments 1g for /boot. + boot_mib=500 + # +fi +case $raid_level in + 1*) boot_mib=$(( boot_mib * 2 )) ;; +esac +### end calculate boot partition space + if [[ ! $DISTRO ]]; then @@ -541,8 +561,8 @@ else # note, fai creates the mountpoints listed here cat > /tmp/fai/fstab <> /tmp/fai/fstab <