# System authorization information auth --enableshadow --passalgo=sha512 # We do not want SELinux selinux --disabled # Services to activate services --disabled=lm_sensors # Default root pass, will be changed in post-install process anyway rootpw --lock # Accept EULA eula --agreed # Partitioning from pre section %include /tmp/part-include # Disable kdump %addon com_redhat_kdump --disable %end # Add netinstall repos url --url https://mirror.canada.pialasse.com/releases/testing/10/smeos/x86_64/ repo --name=smeupdates --baseurl=https://mirror.canada.pialasse.com/releases/testing/10/smeupdates/x86_64/ # Packages to install %packages @^minimal @base @core -chrony -kexec-tools %end # Partitioning in pre-install %pre --interpreter=/bin/bash --log=/var/log/ks.pre01.log # Minimum size of hard drive needed specified in GB MINSIZE=5 # Number of detected drives NDEV=0 # Loop through block devices and keep those over MINSIZE # TODO: Only pair up drives of the same size for DEV in $(lsblk -nl | grep disk | cut -d' ' -f1); do if [ -d /sys/block/$DEV ]; then REMOVABLE=`cat /sys/block/$DEV/removable` if (( $REMOVABLE == 0 )); then SIZE=`cat /sys/block/$DEV/size` GB=$(($SIZE/2**21)) if [ $GB -gt $MINSIZE ]; then DRIVES[$NDEV]=$DEV ((NDEV++)) fi fi fi done # Declare useful variables printf -v DRIVELIST ",%s" "${DRIVES[@]}" DRIVELIST=${DRIVELIST:1} LEVEL=1 SPARE=0 # Error if detection has failed and fall back if [ ${#DRIVES[@]} == 0 ] ; then echo "No drive suitable for installation found! Reverting to Anaconda defaults." cat > /tmp/part-include < /tmp/part-include <> /tmp/part-include fi cat >> /tmp/part-include <> /tmp/part-include fi printf "part raid.%s1 --size=500 --ondisk=%s\n" "$i" "${DRIVES[$i]}" >> /tmp/part-include printf "part raid.%s2 --size=4300 --grow --ondisk=%s\n" "$i" "${DRIVES[$i]}" >> /tmp/part-include done # Compute RAID level # from https://wiki.contribs.org/Raid # 2 Drives - Software RAID 1 # 3 Drives - Software RAID 1 + 1 Hot-spare # 4 Drives - Software RAID 6 # 5+ Drives - Software RAID 6 + 1 Hot-spare if [ ${#DRIVES[@]} == 2 ] ; then LEVEL=1 SPARE=0 elif [ ${#DRIVES[@]} == 3 ] ; then LEVEL=1 SPARE=1 elif [ ${#DRIVES[@]} == 4 ] ; then LEVEL=6 SPARE=0 else LEVEL=6 SPARE=1 fi # Set up RAID devices printf -v EFIDEVS "raid.%s0 " "${!DRIVES[@]}" printf -v BOOTDEVS "raid.%s1 " "${!DRIVES[@]}" printf -v ROOTDEVS "raid.%s2 " "${!DRIVES[@]}" # Include the EFI partition if necessary if [ -d /sys/firmware/efi ] ; then printf "raid /boot/efi --fstype=efi --level=1 --spares=0 --device=md9 %s\n" "$EFIDEVS" >> /tmp/part-include fi printf "raid /boot --fstype=xfs --level=1 --spares=0 --device=md0 %s\n" "$BOOTDEVS" >> /tmp/part-include printf "raid pv.01 --level=%s --spares=%s --device=md1 %s\n" "$LEVEL" "$SPARE" "$ROOTDEVS" >> /tmp/part-include # Set up LVM cat >> /tmp/part-include <