From bcf9b705c23ee739a07bc37da312ce5c5fc95230 Mon Sep 17 00:00:00 2001 From: Kalle Struik Date: Fri, 22 Oct 2021 13:42:06 +0200 Subject: [PATCH] Switch to using settings.env for configuration instead of constant prompts. --- install.sh | 141 ++++++++++++++++++++++------------------------------- 1 file changed, 57 insertions(+), 84 deletions(-) diff --git a/install.sh b/install.sh index dc5613d..c4981ab 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,7 @@ #!/bin/sh +source ./settings.env + echo "+===============================+" echo "| Kalle's Arch Installer Script |" echo "+===============================+" @@ -30,81 +32,57 @@ echo "+================================+" echo "| Partitioning |" echo "+================================+" -# Print a list of block devices. -lsblk -o NAME,LABEL,HOTPLUG,SIZE,MODEL +ls $DISK_BASE > /dev/null - - -echo "[?] Above is a list of block devices found on the system. Please choose the one that you want to use for this installation." -echo "[?] Or enter manual to drop to a shell for manual partitioning." -read -p "[/dev/sda,/dev/nvme0n1,manual,etc] " disk_base - -# Check for manual mode and drop them into a shell. -if [ $disk_base == "manual" ]; then - echo "[?] Make sure to also mount the full file structure under the /mnt directory." - echo "[?] Good luck! Type exit to return to the installer." - zsh -else - ls $disk_base > /dev/null - - if [ $? != 0 ]; then - echo "[!] Device $disk_base does not exist." - exit 1 - fi - - # Make sure that the user wants to erase the full disk. - read -p "[!] This will destroy all data on device $disk_base! Are you sure you want to continue? [y/N] " confirmation - - # If they are not exit. - if [ $confirmation != "y" ]; then - echo "[?] Goodbye! :)" - exit 0 - fi - - echo "[?] Creating GPT" - # Create a new GPT. - parted $disk_base -- mklabel gpt - - # Get the size of swap to use. - read -p "[?] How large do you want your swap to be? [GiB] " swap_size - - # Create partitions. - echo "[?] Creating partitions." - - # Create the root partition. - parted $disk_base -- mkpart primary 512MiB -"$swap_size"GiB - - # Create the swap partition. - parted $disk_base -- mkpart primary linux-swap -"$swap_size"GiB 100% - - # Create the EFI partition. - parted $disk_base -- mkpart ESP fat32 1MiB 512MiB - parted $disk_base -- set 3 esp on - - # Get the partition prefix from the user. - echo "[?] What prefix should be used for partitions? For HDDs and SATA SSDs this is probably the same as the device you selected earlier." - echo "[?] For nvme SSDs it will most likely be something like /dev/nvme0n1p" - read -p "[?] " partition_base - - # Create filesystems. - echo "[?] Creating file systems. This might take a while." - - # Create root filesystem. - mkfs.ext4 -L Arch "$partition_base"1 - # Create swap. - mkswap -L swap "$partition_base"2 - # Create EFI filesystem. - mkfs.fat -F 32 -n boot "$partition_base"3 - - # Mount filesystems. - mount "$partition_base"1 /mnt - mkdir -p /mnt/boot - mount "$partition_base"3 /mnt/boot - - # And turn on swap - swapon "$partition_base"2 +if [ $? != 0 ]; then +echo "[!] Device $DISK_BASE does not exist." +exit 1 fi +# Make sure that the user wants to erase the full disk. +read -p "[!] This will destroy all data on device $DISK_BASE! Are you sure you want to continue? [y/N] " confirmation + +# If they are not exit. +if [ $confirmation != "y" ]; then + echo "[?] Goodbye! :)" + exit 0 +fi + +echo "[?] Creating GPT" +# Create a new GPT. +parted $DISK_BASE -- mklabel gpt + +# Create partitions. +echo "[?] Creating partitions." + +# Create the root partition. +parted $DISK_BASE -- mkpart primary 512MiB -"$SWAP_SIZE" + +# Create the swap partition. +parted $DISK_BASE -- mkpart primary linux-swap -"$SWAP_SIZE" 100% + +# Create the EFI partition. +parted $DISK_BASE -- mkpart ESP fat32 1MiB 512MiB +parted $DISK_BASE -- set 3 esp on + +# Create filesystems. +echo "[?] Creating file systems. This might take a while." + +# Create root filesystem. +mkfs.ext4 -L Arch "$PARTITION_BASE"1 +# Create swap. +mkswap -L swap "$PARTITION_BASE"2 +# Create EFI filesystem. +mkfs.fat -F 32 -n boot "$PARTITION_BASE"3 + +# Mount filesystems. +mount "$PARTITION_BASE"1 /mnt +mkdir -p /mnt/boot +mount "$PARTITION_BASE"3 /mnt/boot + +# And turn on swap +swapon "$PARTITION_BASE"2 + # # Package installation # @@ -125,23 +103,17 @@ genfstab -U /mnt >> /mnt/etc/fstab # # Chroot part # -echo "[?] Package installation is done. Please enter a couple bits of information about your system." -read -p "What timezone? [Europe/Amsterdam] " time_zone -read -p "What locale? [en_US.UTF-8] " locale -read -p "What hostname? [arch] " hostname -read -p "What cpu vendor? [intel/amd]" cpu_vendor - echo "[?] Starting work in chroot now." echo " -ln -sf /usr/share/zoneinfo/$time_zone /etc/localtime +ln -sf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime hwclock --systohc -echo \"$locale UTF-8\" > /etc/locale.gen +echo \"$LOCALE UTF-8\" > /etc/locale.gen locale-gen -echo \"LANG=$locale\" > /etc/locale.conf -echo \"$hostname\" > /etc/hostname +echo \"LANG=$LOCALE\" > /etc/locale.conf +echo \"$HOSTNAME\" > /etc/hostname echo \"127.0.0.1 localhost ::1 localhost -127.0.1.1 $hostname\" > /etc/hosts +127.0.1.1 $HOSTNAME\" > /etc/hosts echo \"[!] Please set your root password below\" passwd bootctl install @@ -155,5 +127,6 @@ Target = systemd Description = Updating systemd-boot When = PostTransaction Exec = /usr/bin/bootctl update\" > /etc/pacman.d/hooks/100-systemd-boot.hook -pacman -Sy \"$cpu_vendor\"-ucode +pacman -Sy \"$CPU_VENDOR\"-ucode +mkinitcpio -p " > arch-chroot /mnt