%pre --interpreter /bin/bash --log /tmp/ks-pre-partitioning.log ( # sgdisk -L # ef00 EFI system # ef02 biosboot # 8300 linux filesystem # fd00 linux raid # 8e00 linux lvm NRDISKS=4 DATARAID=RAID10 PARTITION_TYPE=( "ef02" "ef00" "fd00" "fd00" ) PARTITION_SIZE=( "+1M" "+100M" "+1500M" "+15G" ) # Getting the proper number of disks disks=$(lsblk --nodeps -no name,type,tran | grep "disk" | grep -vE "usb|zram" | grep -Eo '^[^ ]+' | head -n ${NRDISKS}) # Deactivating all lvm and raid while read dm _; do echo "deactivating dm $dm" dmsetup remove "$dm" done < <(dmsetup ls | grep -vE "live-(rw|base)") while read lv; do echo "deactivating lv $lv" lvchange -an "$lv" done < <(lvs --noheadings -o lv_name) while read vg; do echo "deactivating vg $vg" vgchange -an "$vg" done < <(vgs --noheadings -o vg_name) while read _ array _; do echo "stopping md array $array" mdadm -S "$array" done < <(mdadm -D -s) # Cleaning all datas from the disks what we want to use for disk in ${disks}; do #for blkdev in $(lsblk -l -n -o name,type /dev/${disk} | grep -v disk | awk '{print $1}'); do for blkdev in $(sfdisk -l "/dev/${disk}" | grep -o "/dev/${disk}p\?[0-9]\+"); do mdadm -q --zero-superblock ${blkdev} wipefs -f -a ${blkdev} dd if=/dev/zero of=${blkdev} bs=512 count=2047 done mdadm -q --zero-superblock /dev/${disk} wipefs -f -a /dev/${disk} sgdisk -Z /dev/${disk} dd if=/dev/zero of=/dev/${disk} bs=512 count=2047 done # reloading disk partition table partprobe # Creating partitions and writing partitioning kickstart file for disk in ${disks}; do for (( i=0; i<${#PARTITION_TYPE[@]}; i++ )); do sgdisk -n 0:0:${PARTITION_SIZE[$i]} -t 0:${PARTITION_TYPE[$i]} /dev/${disk}; done cat >> /tmp/partitioning.ks << EOF part biosboot --fstype=biosboot --onpart=${disk}1 part raid.${disk}2 --fstype=efi --onpart=${disk}2 part raid.${disk}3 --fstype=xfs --fsoptions=noatime,nodiratime --onpart=${disk}3 part raid.${disk}4 --onpart=${disk}4 EOF MD0DISKS="${MD0DISKS} raid.${disk}2" MD1DISKS="${MD1DISKS} raid.${disk}3" MD2DISKS="${MD2DISKS} raid.${disk}4" done cat >> /tmp/partitioning.ks << EOF raid /boot/efi --fstype=efi --device md0 --level=RAID1 ${MD0DISKS} raid /boot --fstype xfs --device md1 --level=RAID1 ${MD1DISKS} --fsoptions=noatime,nodiratime raid pv.01 --device md2 --level=${DATARAID} ${MD2DISKS} EOF # reloading disk partition table partprobe ) > /tmp/partitioning.log 2>&1 %end %include /tmp/partitioning.ks