diff --git a/scripts/0-preinstall.sh b/scripts/0-preinstall.sh index 3741b6d..e6a3b32 100755 --- a/scripts/0-preinstall.sh +++ b/scripts/0-preinstall.sh @@ -50,26 +50,6 @@ echo -ne " Formating Disk ------------------------------------------------------------------------- " -umount -A --recursive /mnt # make sure everything is unmounted before we start -# disk prep -sgdisk -Z ${DISK} # zap all on disk -sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment - -# create partitions -sgdisk -n 1::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' ${DISK} # partition 1 (BIOS Boot Partition) -sgdisk -n 2::+300M --typecode=2:ef00 --change-name=2:'EFIBOOT' ${DISK} # partition 2 (UEFI Boot Partition) -sgdisk -n 3::-0 --typecode=3:8300 --change-name=3:'ROOT' ${DISK} # partition 3 (Root), default start, remaining -if [[ ! -d "/sys/firmware/efi" ]]; then # Checking for bios system - sgdisk -A 1:set:2 ${DISK} -fi -partprobe ${DISK} # reread partition table to ensure it is correct - -# make filesystems -echo -ne " -------------------------------------------------------------------------- - Creating Filesystems -------------------------------------------------------------------------- -" createsubvolumes () { btrfs subvolume create /mnt/@ btrfs subvolume create /mnt/@home @@ -79,10 +59,10 @@ createsubvolumes () { } mountallsubvol () { - mount -o ${MOUNT_OPTIONS},subvol=@home ${partition3} /mnt/home - mount -o ${MOUNT_OPTIONS},subvol=@tmp ${partition3} /mnt/tmp - mount -o ${MOUNT_OPTIONS},subvol=@var ${partition3} /mnt/var - mount -o ${MOUNT_OPTIONS},subvol=@.snapshots ${partition3} /mnt/.snapshots + mount -o ${MOUNT_OPTIONS},subvol=@home ${rootpartition} /mnt/home + mount -o ${MOUNT_OPTIONS},subvol=@tmp ${rootpartition} /mnt/tmp + mount -o ${MOUNT_OPTIONS},subvol=@var ${rootpartition} /mnt/var + mount -o ${MOUNT_OPTIONS},subvol=@.snapshots ${rootpartition} /mnt/.snapshots } subvolumesetup () { @@ -91,48 +71,83 @@ subvolumesetup () { # unmount root to remount with subvolume umount /mnt # mount @ subvolume - mount -o ${MOUNT_OPTIONS},subvol=@ ${partition3} /mnt + mount -o ${MOUNT_OPTIONS},subvol=@ ${rootpartition} /mnt # make directories home, .snapshots, var, tmp mkdir -p /mnt/{home,var,tmp,.snapshots} # mount subvolumes mountallsubvol } -if [[ "${DISK}" =~ "nvme" ]]; then - partition2=${DISK}p2 - partition3=${DISK}p3 -else - partition2=${DISK}2 - partition3=${DISK}3 -fi - -if [[ "${FS}" == "btrfs" ]]; then - mkfs.vfat -F32 -n "EFIBOOT" ${partition2} - mkfs.btrfs -L ROOT ${partition3} -f - mount -t btrfs ${partition3} /mnt - subvolumesetup -elif [[ "${FS}" == "ext4" ]]; then - mkfs.vfat -F32 -n "EFIBOOT" ${partition2} - mkfs.ext4 -L ROOT ${partition3} - mount -t ext4 ${partition3} /mnt -elif [[ "${FS}" == "luks" ]]; then - mkfs.vfat -F32 -n "EFIBOOT" ${partition2} +formatandmount () { + if [[ "${FS}" == "btrfs" ]]; then + mkfs.btrfs -L ROOT ${rootpartition} -f + mount -t btrfs ${rootpartition} /mnt + subvolumesetup + elif [[ "${FS}" == "ext4" ]]; then + mkfs.ext4 -L ROOT ${rootpartition} + mount -t ext4 ${rootpartition} /mnt + elif [[ "${FS}" == "luks" ]]; then # enter luks password to cryptsetup and format root partition - echo -n "${LUKS_PASSWORD}" | cryptsetup -y -v luksFormat ${partition3} - + echo -n "${LUKS_PASSWORD}" | cryptsetup -y -v luksFormat ${rootpartition} - # open luks container and ROOT will be place holder - echo -n "${LUKS_PASSWORD}" | cryptsetup open ${partition3} ROOT - + echo -n "${LUKS_PASSWORD}" | cryptsetup open ${rootpartition} ROOT - # now format that container - mkfs.btrfs -L ROOT ${partition3} + mkfs.btrfs -L ROOT ${rootpartition} # create subvolumes for btrfs - mount -t btrfs ${partition3} /mnt - subvolumesetup + mount -t btrfs ${rootpartition} /mnt + subvolumesetup # store uuid of encrypted partition for grub - echo ENCRYPTED_PARTITION_UUID=$(blkid -s UUID -o value ${partition3}) >> $CONFIGS_DIR/setup.conf + echo ENCRYPTED_PARTITION_UUID=$(blkid -s UUID -o value ${rootpartition}) >> $CONFIGS_DIR/setup.conf + fi +} + +umount -A --recursive /mnt # make sure everything is unmounted before we start + +if [[ $INSTALL_IN = "PART" ]]; then # Checking if install to partition + EFIpartition=${BOOTPART} + rootpartition=${PART} + + if [[ -d "/sys/firmware/efi" ]]; then # Checking for UEFI system + if [[ $FORMATEFI = "yes" ]]; then + mkfs.vfat -F32 -n "EFIBOOT" ${EFIpartition} + fi + formatandmount + # mount EFI partition + mkdir -p /mnt/boot/EFI + mount -t vfat ${EFIpartition} /mnt/boot/EFI + elif [[ $(sudo sudo fdisk -l | grep -i '^Disklabel type') = "Disklabel type: gpt" ]]; then # Checking for GPT Disk Label on a Legacy BIOS (non UEFI) System + formatandmount + fi +fi + +if [[ $INSTALL_IN = "DISK" ]]; then # Checking if install to disk + # disk prep + sgdisk -Z ${DISK} # zap all on disk + sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment + + # create partitions + sgdisk -n 1::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' ${DISK} # BIOSpartition (BIOS Boot Partition) + sgdisk -n 2::+300M --typecode=2:ef00 --change-name=2:'EFIBOOT' ${DISK} # EFIpartition (UEFI Boot Partition) + sgdisk -n 3::-0 --typecode=3:8300 --change-name=3:'ROOT' ${DISK} # rootpartition (Root), default start, remaining + if [[ ! -d "/sys/firmware/efi" ]]; then # Checking for BIOS system + sgdisk -A 1:set:2 ${DISK} + fi + + if [[ "${DISK}" =~ "nvme" ]]; then + EFIpartition=${DISK}p2 + rootpartition=${DISK}p3 + else + EFIpartition=${DISK}2 + rootpartition=${DISK}3 + fi + + mkfs.vfat -F32 -n "EFIBOOT" ${EFIpartition} + formatandmount + # mount EFI partition + mkdir -p /mnt/boot/EFI + mount -t vfat -L EFIBOOT /mnt/boot/EFI fi -# mount target -mkdir -p /mnt/boot/efi -mount -t vfat -L EFIBOOT /mnt/boot/ if ! grep -qs '/mnt' /proc/mounts; then echo "Drive is not mounted can not continue"