|
- #!/bin/bash
-
-
- DISK="vd" # Change this to match your disk type (i.e. sd)
- RAM="6" # Change this to match the amount of RAM on your computer (in GiB)
-
- if [[ ! $(whoami) = "root" ]]; then # Check to see if user is not root
- sudo -i # Become root through sudo
- else
- if [[ ${1} = "step1" ]]; then # Run before using ubuquity
- parted /dev/${DISK}a mklabel gpt # Make gpt label on disk a
- parted /dev/${DISK}b mklabel gpt # Make gpt label on disk b
- parted /dev/${DISK}a mkpart primary fat32 0% 512MiB # Make 512MiB partition for EFI
- parted /dev/${DISK}a mkpart primary ext4 512MiB 1.5GiB # Make a 1GiB partition for the bootloader (GRUB)
- parted /dev/${DISK}a mkpart primary btrfs 1.5GiB 100% # Use the remaining space on disk a to make one final partition for the first logical volume
- parted /dev/${DISK}b mkpart primary btrfs 0% 100% # Make a full capacity partition for the first logical volume
-
- sleep 3 # Give the system a few seconds of rest to be on the safe side
-
- pvcreate /dev/${DISK}a3 # Make a physical volume on disk a, partition 3
- pvcreate /dev/${DISK}b1 # Make a physical volume on disk b, partition 1
- vgcreate elementary-vg /dev/${DISK}a3 /dev/${DISK}b1 # Make the virst volume group
- lvcreate -l 100%FREE elementary-vg -n luks # Make the virst logical volume
-
- sleep 3 # Give the system a few seconds of rest to be on the safe side
-
- cryptsetup luksFormat --type luks2 /dev/elementary-vg/luks # Make an encrypted volume on the virst logical volume
- cryptsetup open /dev/elementary-vg/luks elementaryOS # Open the encrypted luks volume
-
- sleep 3 # Give the system a few seconds of rest to be on the safe side
-
- pvcreate /dev/mapper/elementaryOS # Make a physical volume inside the encrypted volume
- vgcreate elementary-filesystem-vg /dev/mapper/elementaryOS # Make the second volume group
- lvcreate -L ${RAM}G elementary-filesystem-vg -n swap # Make a logical volume for swap
- lvcreate -l 100%FREE elementary-filesystem-vg -n root # Make a logical volume for the root filesystem
-
- sleep 3 # Give the system a few seconds of rest to be on the safe side
-
- parted /dev/${DISK}a set 1 esp on # Set disk a, partition 1 as the EFI partition
-
- mkfs.fat -F32 /dev/${DISK}a1 # Format disk a, partition 1 as fat32
- mkfs.ext4 /dev/${DISK}a2 # Format disk a, partition 2 as extended 4
- mkswap /dev/elementary-filesystem-vg/swap # Format the swap volume
- mkfs.btrfs /dev/elementary-filesystem-vg/root # Format the root filesystem as btrfs
- elif [[ ${1} = "step2" ]]; then # Mounts things and other stuff
- vgscan && sleep 1
- vgchange -ay && sleep 1
- lvscan && sleep 1
- mount /dev/elementary-filesystem-vg/root /mnt/ && sleep 1
- mount /dev/${DISK}a2 /mnt/@/boot/ && sleep 1
- mount -o bind /dev/ /mnt/@/dev/ && sleep 1
- mount -o bind /proc/ /mnt/@/proc/ && sleep 1
- mount -o bind /sys/ /mnt/@/sys/ && sleep 1
- cp ${0} /mnt/@/ && sleep 1
- chroot /mnt/@/
- elif [[ ${1} = "step3" ]]; then
- cryptsetup luksDump /dev/elementary-vg/luks | grep UUID # Display the UUID of the encrypted volume to be copied
- read -p "Please copy the UUID above, then pres [ENTER] to continue..."
- echo 'elementaryOS UUID=<uuid> none luks' > /etc/crypttab && sleep 1 # Creates and mostly populates the crypttab file
- nano /etc/crypttab && sleep 1 # Opens the crypttab file in nano so the encrypted volume's UUID can be entered
- update-initramfs -u -k all # Update the initramfs
- else
- echo 'Please enter either step1 (pre-ubiquity), step2 (post ubiquity), or step3 (after chrooting)' # Displays if no options were stated when running the script
- fi
- fi
|