Initial commit

master
kalle 2021-05-22 10:49:31 +02:00
commit d549dec7bf
2 changed files with 124 additions and 0 deletions

121
install.sh Normal file
View File

@ -0,0 +1,121 @@
#!/bin/sh
echo "+===============================+"
echo "| Kalle's Arch Installer Script |"
echo "+===============================+"
#
# Early setup
#
# Ping my server to check network.
ping -c 1 kallestruik.nl
# Check if the ping was successful. If it was not inform the user and exit.
if [ $? != 0 ]; then
echo "[!] You do not seem to have a network connect. Please establish one first."
echo ""
echo "[?] For wireless networks you can use the 'iwctl' command to establish a connection."
exit 1
fi
# Enable NTP to sync system time.
timedatectl set-ntp true
#
# Partitioning
#
echo "+================================+"
echo "| Partitioning |"
echo "+================================+"
# Print a list of block devices.
lsblk -o NAME,LABEL,HOTPLUG,SIZE,MODEL
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
if [ ! -f $disk_base ]; then
echo "[!] Device $disk_base does not exist."
exit 1
fi
# Make sure that the user wants to erase the full disk.
read confirmation -p "[!] This will destroy all data on device $disk_base! Are you sure you want to continue? [y/N] "
# If they are not exit.
if [ $confirmation != "y" ]; then
echo "[?] Goodbye! :)"
exit 0
fi
# Create a new GPT.
parted $disk_base -- mklabel gpt
# Get the size of swap to use.
read swap_size -p "[?] How large do you want your swap to be? [GiB] "
# 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 partition_base -p "[?] "
# 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
fi
#
# Package installation
#
echo "[?] Installing packages using pacstrap. This will take quite a bit of time."
echo "[?] Go get a cup of thee or something."
sleep 5
# Use pacstrap to install all packages from the packages file.
pacstrap /mnt ${cat packages}
echo "[?] Package installation done. Generating /etc/fstab now."
# Generate fstab.
genfstab -U /mnt >> /mnt/etc/fstab

3
packages Normal file
View File

@ -0,0 +1,3 @@
base
linux-zen
linux-firmware