From a353dcc08f3bd094bc3c6fc73a33ed66726e4212 Mon Sep 17 00:00:00 2001 From: beech Date: Fri, 13 Sep 2024 15:06:02 -0500 Subject: [PATCH] New installers --- install1-ex.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ install2-ex.sh | 74 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 install1-ex.sh create mode 100644 install2-ex.sh diff --git a/install1-ex.sh b/install1-ex.sh new file mode 100644 index 0000000..e05fb33 --- /dev/null +++ b/install1-ex.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +# This WILL format and partition 1 drive in your system. It is recommended to run the script with only 1 drive installed. +# Selected drive is /dev/sda, replace sda with specified drive if you have multiple. List drives with 'lsblk' +# Change boot, SWAP, and root partition sizes to your needs in lines 15-17 + +echo "-------------------------------------------------" +echo "Arch Install Script 1 - Drive Setup" +echo "-------------------------------------------------" + +echo "Specify drive name for install(ex. /dev/sda, /dev/nvme0n1). THIS WILL FORMAT & PARTITION THE SPECIFIED DRIVE!" + +read Diskname + +# disk prep +sgdisk -Z $Diskname # zap all on disk +sgdisk -a 2048 -o $Diskname # new gpt disk 2048 alignment + +# create partitions +sgdisk -n 1:0:1024M $Diskname # partition 1 (boot) +sgdisk -n 2:0:4G $Diskname # partition 2 (SWAP - change to desired size) +sgdisk -n 3:0:35G $Diskname # partition 3 (root - change to desired size) +sgdisk -n 4:0:0 $Diskname # partition 4 (home, remaining space) + +# set partition types +sgdisk -t 1:ef00 $Diskname +sgdisk -t 2:8200 $Diskname +sgdisk -t 3:8300 $Diskname +sgdisk -t 4:8300 $Diskname + +# label partitions +sgdisk -c 1:"boot" $Diskname +sgdisk -c 2:"swap" $Diskname +sgdisk -c 3:"root" $Diskname +sgdisk -c 4:"home" $Diskname + +# make filesystems +echo "-------------------------------------------------" +echo "Creating Filesystems" +echo "-------------------------------------------------" + +mkfs.fat -F32 $(Diskname)1 # FAT32 boot partition +mkswap $(Diskname)2 # create SWAP +swapon $(Diskname)2 # enable SWAP +mkfs.ext4 $(Diskname)3 +mkfs.ext4 $(Diskname)4 + +# mount partitions +echo "-------------------------------------------------" +echo "Mounting Partitions" +echo "-------------------------------------------------" + +mount $(Diskname)3 /mnt +mkdir /mnt/boot +mkdir /mnt/home +mount $(Diskname)1 /mnt/boot +mount $(Diskname)4 /mnt/home + +# set download mirrors +echo "-------------------------------------------------" +echo "Setting Mirrorlist" +echo "-------------------------------------------------" + +cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup # backs up mirrorlist +sudo pacman -Syyy +sudo pacman -S pacman-contrib --noconfirm +rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist + +# install arch +echo "-------------------------------------------------" +echo "Installing to drive" +echo "-------------------------------------------------" + +pacstrap -K /mnt base linux linux-firmware base-devel --noconfirm --needed + +echo "-------------------------------------------------" +echo "Installed - Generating fstab" +echo "-------------------------------------------------" + +# generate fstab + +genfstab -U -p /mnt >> /mnt/etc/fstab + +echo "-------------------------------------------------" +echo "Finished install script 1. Please run [arch-chroot /mnt], and move on to the 2nd installer." +echo "-------------------------------------------------" diff --git a/install2-ex.sh b/install2-ex.sh new file mode 100644 index 0000000..24a8e71 --- /dev/null +++ b/install2-ex.sh @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +# Create your user account following the README instructions before running this. +# Edit hostname on line 26 if desired + +echo "Specify drive name that you entered in the first script." + +read Diskname + +echo "Create a root password (not your user password)." + +passwd + +echo "Create user account" + +read Username + +useradd -m -g users -G wheel,storage,power -s /bin/bash $Username + +echo "Create a user password (should be different from root)." + +passwd $Username + +# File edits for user permissions + +sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers +echo "Defaults rootpw" >> /etc/sudoers + +# generate locales + +sudo pacman -S bash-completion --noconfirm --needed +sed -i 's/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen +locale-gen +echo LANG=en_US.UTF-8 > /etc/locale.conf +export LANG=en_US.UTF-8 + +# set timezone & link HW clock + +ln -s /usr/share/zoneinfo/America/Chicago > /etc/localtime +hwclock --systohc --utc + +# set hostname - edit archdesk with preferred hostname + +echo archdesk > /etc/hostname + +# Enable TRIM + +systemctl enable fstrim.timer + +# mount efivars + +mount -t efivarfs efivarfs /sys/firmware/efi/efivars/ + +# install bootloader + +bootctl install + +touch /boot/loader/entries/arch.conf + +echo "title Arch" > /boot/loader/entries/arch.conf +echo "linux /vmlinuz-linux" >> /boot/loader/entries/arch.conf +echo "initrd /initramfs-linux.img" >> /boot/loader/entries/arch.conf + +echo "options root=PARTUUID=$(blkid -s PARTUUID -o value $(Diskname)3) rw" >> /boot/loader/entries/arch.conf + +# install NetworkManager + +sudo pacman -S networkmanager --noconfirm --needed +sudo systemctl enable NetworkManager.service + + +echo "-------------------------------------------------" +echo "Arch Linux Installed & Configured. Please [exit] & run [umount -R /mnt] and reboot" +echo "-------------------------------------------------" \ No newline at end of file