added hostname, names and passwords input and fixed partition naming

This commit is contained in:
2024-12-30 20:37:22 +01:00
parent 0f96d1cb34
commit 066f78f982
+87 -10
View File
@@ -1,5 +1,68 @@
#!/bin/sh #!/bin/sh
# User inputs
HOSTNAME=""
ROOT_PASSWORD=""
USERNAME=""
USER_PASSWORD=""
get_config_inputs() {
while [ -z "$HOSTNAME" ]; do
printf "Enter hostname: "
read HOSTNAME
if [ -z "$HOSTNAME" ]; then
echo "Hostname cannot be empty."
continue
fi
break
done
echo ""
while [ -z "$ROOT_PASSWORD" ]; do
printf "Enter root password: "
read -s ROOT_PASSWORD
printf "\nConfirm root password: "
read -s CONFIRM_ROOT_PASSWORD
if [ "$ROOT_PASSWORD" != "$CONFIRM_ROOT_PASSWORD" ]; then
echo "Root passwords do not match."
ROOT_PASSWORD=""
CONFIRM_ROOT_PASSWORD=""
continue
fi
break
done
echo ""
while [ -z "$USERNAME" ]; do
printf "Enter username: "
read USERNAME
if [ -z "$USERNAME" ]; then
echo "Username cannot be empty."
continue
fi
break
done
echo ""
while [ -z "$USER_PASSWORD" ]; do
printf "Enter user password: "
read -s USER_PASSWORD
printf "\nConfirm user password: "
read -s CONFIRM_USER_PASSWORD
if [ "$USER_PASSWORD" != "$CONFIRM_USER_PASSWORD" ]; then
echo "User passwords do not match."
USER_PASSWORD=""
CONFIRM_USER_PASSWORD=""
continue
fi
break
done
}
# Function to get drive name # Function to get drive name
DISK="" DISK=""
get_drive() { get_drive() {
@@ -14,8 +77,8 @@ get_drive() {
DISK="/dev/${DISK}" DISK="/dev/${DISK}"
printf "WARNING: All data on %s will be erased. Are you sure? [Y/n] " "${DISK}" printf "WARNING: All data on %s will be erased. Are you sure? [Y/n] " "${DISK}"
read confirmation read CONFIRMATION
case "$confirmation" in case "$CONFIRMATION" in
"n" | "N") "n" | "N")
echo "Operation canceled." echo "Operation canceled."
exit 0 exit 0
@@ -39,18 +102,18 @@ get_drive() {
} }
setup_partitions() { setup_partitions() {
if [ ! -d "/sys/firmware/efi" ]; then # Checking for bios system if [ ! -d "/sys/firmware/efi" ]; then # Checking for BIOS system
echo "BIOS systems are not supported." echo "BIOS systems are not supported."
fi fi
umount -A -R /mnt # make sure everything is unmounted before we start umount -A -R /mnt # make sure everything is unmounted before we start
sgdisk -Z ${DISK} # zap all on disk sgdisk -Z ${DISK} # zap all on disk
sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment sgdisk -a 2048 -o ${DISK} # new GPT disk 2048 alignment
# Create partitions # Create partitions
sgdisk -n 1::+1G --typecode=1:ef00 --change-name=1:"BOOT" ${DISK} # partition 1 (UEFI boot partition) sgdisk -n 1::+1G --typecode=1:ef00 --change-name=1:"BOOT" ${DISK} # partition 1 (UEFI boot partition)
sgdisk -n 2::+4G --typecode=2:8200 --change-name=1:"SWAP" ${DISK} # partition 2 (Swap partition) sgdisk -n 2::+4G --typecode=2:8200 --change-name=2:"SWAP" ${DISK} # partition 2 (Swap partition)
sgdisk -n 3::-0 --typecode=3:8300 --change-name=1:"ROOT" ${DISK} # partition 3 (Root), default start, remaining sgdisk -n 3::-0 --typecode=3:8300 --change-name=3:"ROOT" ${DISK} # partition 3 (Root), default start, remaining
partprobe ${DISK} # reread partition table to ensure it is correct partprobe ${DISK} # reread partition table to ensure it is correct
# Create filesystems # Create filesystems
@@ -109,14 +172,19 @@ setup_bootloader() {
# Main execution flow # Main execution flow
# Ask for hostname, username, user and root passwords
get_config_inputs
echo ""
# Ask for the drive to install on # Ask for the drive to install on
get_drive get_drive
echo ""
# Partition, create filesystems and mount # Partition, create filesystems and mount
setup_partitions setup_partitions
# Then install the kernel and some required packages # Then install the kernel and some required packages
pacstrap -K /mnt base linux linux-firmware networkmanager pacstrap -K /mnt base linux linux-firmware networkmanager sudo
genfstab -U /mnt >>/mnt/etc/fstab genfstab -U /mnt >>/mnt/etc/fstab
@@ -124,11 +192,20 @@ genfstab -U /mnt >>/mnt/etc/fstab
ln -sf /usr/share/zoneinfo/Europe/Paris /mnt/etc/localtime ln -sf /usr/share/zoneinfo/Europe/Paris /mnt/etc/localtime
arch-chroot /mnt locale-gen arch-chroot /mnt locale-gen
echo LANG=en_US.UTF-8 >/mnt/etc/locale.conf echo LANG=en_US.UTF-8 >/mnt/etc/locale.conf
echo hostname >/mnt/etc/hostname echo $HOSTNAME >/mnt/etc/hostname
arch-chroot /mnt bash -c "echo 'root:password' | chpasswd" # Set root password
arch-chroot /mnt bash -c "echo 'root:$ROOT_PASSWORD' | chpasswd"
# NetworkManager handles all the network setup # Create user and set password
arch-chroot /mnt useradd -m $USERNAME
arch-chroot /mnt bash -c "echo '$USERNAME:$USER_PASSWORD' | chpasswd"
# Setup wheel group
arch-chroot /mnt usermod -aG wheel $USERNAME
arch-chroot /mnt bash -c "echo '%wheel ALL=(ALL) ALL' | EDITOR='tee -a' visudo"
# Enable NetworkManager
arch-chroot /mnt systemctl enable NetworkManager arch-chroot /mnt systemctl enable NetworkManager
setup_bootloader setup_bootloader