mirror of
https://github.com/ChrisTitusTech/linutil.git
synced 2024-11-05 13:15:21 +00:00
Fix archtitus issues (#560)
* Fix archtitus * Fix keymap * Attempt to fix subvolume issues --------- Co-authored-by: nnyyxxxx <nnyyxxxx@users.noreply.github.com>
This commit is contained in:
parent
3a06f75142
commit
9bc28b621c
|
@ -79,7 +79,7 @@ select_option() {
|
||||||
echo "Please select an option using the arrow keys and Enter:"
|
echo "Please select an option using the arrow keys and Enter:"
|
||||||
fi
|
fi
|
||||||
for i in "${!options[@]}"; do
|
for i in "${!options[@]}"; do
|
||||||
if [ $i -eq $selected ]; then
|
if [ "$i" -eq $selected ]; then
|
||||||
echo "> ${options[$i]}"
|
echo "> ${options[$i]}"
|
||||||
else
|
else
|
||||||
echo " ${options[$i]}"
|
echo " ${options[$i]}"
|
||||||
|
@ -154,6 +154,7 @@ filesystem () {
|
||||||
*) echo "Wrong option please select again"; filesystem;;
|
*) echo "Wrong option please select again"; filesystem;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
# @description Detects and sets timezone.
|
# @description Detects and sets timezone.
|
||||||
timezone () {
|
timezone () {
|
||||||
# Added this from arch wiki https://wiki.archlinux.org/title/System_time
|
# Added this from arch wiki https://wiki.archlinux.org/title/System_time
|
||||||
|
@ -171,7 +172,7 @@ timezone () {
|
||||||
export TIMEZONE=$time_zone;;
|
export TIMEZONE=$time_zone;;
|
||||||
n|N|no|NO|No)
|
n|N|no|NO|No)
|
||||||
echo "Please enter your desired timezone e.g. Europe/London :"
|
echo "Please enter your desired timezone e.g. Europe/London :"
|
||||||
read new_timezone
|
read -r new_timezone
|
||||||
echo "${new_timezone} set as timezone"
|
echo "${new_timezone} set as timezone"
|
||||||
export TIMEZONE=$new_timezone;;
|
export TIMEZONE=$new_timezone;;
|
||||||
*) echo "Wrong option. Try again";timezone;;
|
*) echo "Wrong option. Try again";timezone;;
|
||||||
|
@ -240,7 +241,7 @@ userinfo () {
|
||||||
# Loop through user input until the user gives a valid username
|
# Loop through user input until the user gives a valid username
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
read -p "Please enter username:" username
|
read -r -p "Please enter username: " username
|
||||||
if [[ "${username,,}" =~ ^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$ ]]
|
if [[ "${username,,}" =~ ^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$ ]]
|
||||||
then
|
then
|
||||||
break
|
break
|
||||||
|
@ -266,14 +267,14 @@ userinfo () {
|
||||||
# Loop through user input until the user gives a valid hostname, but allow the user to force save
|
# Loop through user input until the user gives a valid hostname, but allow the user to force save
|
||||||
while true
|
while true
|
||||||
do
|
do
|
||||||
read -p "Please name your machine:" name_of_machine
|
read -r -p "Please name your machine: " name_of_machine
|
||||||
# hostname regex (!!couldn't find spec for computer name!!)
|
# hostname regex (!!couldn't find spec for computer name!!)
|
||||||
if [[ "${name_of_machine,,}" =~ ^[a-z][a-z0-9_.-]{0,62}[a-z0-9]$ ]]
|
if [[ "${name_of_machine,,}" =~ ^[a-z][a-z0-9_.-]{0,62}[a-z0-9]$ ]]
|
||||||
then
|
then
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
# if validation fails allow the user to force saving of the hostname
|
# if validation fails allow the user to force saving of the hostname
|
||||||
read -p "Hostname doesn't seem correct. Do you still want to save it? (y/n)" force
|
read -r -p "Hostname doesn't seem correct. Do you still want to save it? (y/n)" force
|
||||||
if [[ "${force,,}" = "y" ]]
|
if [[ "${force,,}" = "y" ]]
|
||||||
then
|
then
|
||||||
break
|
break
|
||||||
|
@ -303,6 +304,7 @@ keymap
|
||||||
echo "Setting up mirrors for optimal download"
|
echo "Setting up mirrors for optimal download"
|
||||||
iso=$(curl -4 ifconfig.co/country-iso)
|
iso=$(curl -4 ifconfig.co/country-iso)
|
||||||
timedatectl set-ntp true
|
timedatectl set-ntp true
|
||||||
|
pacman -Sy
|
||||||
pacman -S --noconfirm archlinux-keyring #update keyrings to latest to prevent packages failing to install
|
pacman -S --noconfirm archlinux-keyring #update keyrings to latest to prevent packages failing to install
|
||||||
pacman -S --noconfirm --needed pacman-contrib terminus-font
|
pacman -S --noconfirm --needed pacman-contrib terminus-font
|
||||||
setfont ter-v18b
|
setfont ter-v18b
|
||||||
|
@ -314,7 +316,7 @@ echo -ne "
|
||||||
Setting up $iso mirrors for faster downloads
|
Setting up $iso mirrors for faster downloads
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
"
|
"
|
||||||
reflector -a 48 -c $iso -f 5 -l 20 --sort rate --save /etc/pacman.d/mirrorlist
|
reflector -a 48 -c "$iso" -f 5 -l 20 --sort rate --save /etc/pacman.d/mirrorlist
|
||||||
if [ ! -d "/mnt" ]; then
|
if [ ! -d "/mnt" ]; then
|
||||||
mkdir /mnt
|
mkdir /mnt
|
||||||
fi
|
fi
|
||||||
|
@ -331,17 +333,17 @@ echo -ne "
|
||||||
"
|
"
|
||||||
umount -A --recursive /mnt # make sure everything is unmounted before we start
|
umount -A --recursive /mnt # make sure everything is unmounted before we start
|
||||||
# disk prep
|
# disk prep
|
||||||
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::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' ${DISK} # partition 1 (BIOS Boot Partition)
|
sgdisk -n 1::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' "${DISK}" # partition 1 (BIOS Boot Partition)
|
||||||
sgdisk -n 2::+1GiB --typecode=2:ef00 --change-name=2:'EFIBOOT' ${DISK} # partition 2 (UEFI Boot Partition)
|
sgdisk -n 2::+1GiB --typecode=2:ef00 --change-name=2:'EFIBOOT' "${DISK}" # partition 2 (UEFI Boot Partition)
|
||||||
sgdisk -n 3::-0 --typecode=3:8300 --change-name=3:'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
|
||||||
if [[ ! -d "/sys/firmware/efi" ]]; then # Checking for bios system
|
if [[ ! -d "/sys/firmware/efi" ]]; then # Checking for bios system
|
||||||
sgdisk -A 1:set:2 ${DISK}
|
sgdisk -A 1:set:2 "${DISK}"
|
||||||
fi
|
fi
|
||||||
partprobe ${DISK} # reread partition table to ensure it is correct
|
partprobe "${DISK}" # reread partition table to ensure it is correct
|
||||||
|
|
||||||
# make filesystems
|
# make filesystems
|
||||||
echo -ne "
|
echo -ne "
|
||||||
|
@ -353,17 +355,11 @@ echo -ne "
|
||||||
createsubvolumes () {
|
createsubvolumes () {
|
||||||
btrfs subvolume create /mnt/@
|
btrfs subvolume create /mnt/@
|
||||||
btrfs subvolume create /mnt/@home
|
btrfs subvolume create /mnt/@home
|
||||||
btrfs subvolume create /mnt/@var
|
|
||||||
btrfs subvolume create /mnt/@tmp
|
|
||||||
btrfs subvolume create /mnt/@.snapshots
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# @description Mount all btrfs subvolumes after root has been mounted.
|
# @description Mount all btrfs subvolumes after root has been mounted.
|
||||||
mountallsubvol () {
|
mountallsubvol () {
|
||||||
mount -o ${MOUNT_OPTIONS},subvol=@home ${partition3} /mnt/home
|
mount -o "${MOUNT_OPTIONS}",subvol=@home "${partition3}" /mnt/home
|
||||||
mount -o ${MOUNT_OPTIONS},subvol=@tmp ${partition3} /mnt/tmp
|
|
||||||
mount -o ${MOUNT_OPTIONS},subvol=@var ${partition3} /mnt/var
|
|
||||||
mount -o ${MOUNT_OPTIONS},subvol=@.snapshots ${partition3} /mnt/.snapshots
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# @description BTRFS subvolulme creation and mounting.
|
# @description BTRFS subvolulme creation and mounting.
|
||||||
|
@ -373,9 +369,9 @@ subvolumesetup () {
|
||||||
# unmount root to remount with subvolume
|
# unmount root to remount with subvolume
|
||||||
umount /mnt
|
umount /mnt
|
||||||
# mount @ subvolume
|
# mount @ subvolume
|
||||||
mount -o ${MOUNT_OPTIONS},subvol=@ ${partition3} /mnt
|
mount -o "${MOUNT_OPTIONS}",subvol=@ "${partition3}" /mnt
|
||||||
# make directories home, .snapshots, var, tmp
|
# make directories home, .snapshots, var, tmp
|
||||||
mkdir -p /mnt/{home,var,tmp,.snapshots}
|
mkdir -p /mnt/home
|
||||||
# mount subvolumes
|
# mount subvolumes
|
||||||
mountallsubvol
|
mountallsubvol
|
||||||
}
|
}
|
||||||
|
@ -389,24 +385,24 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${FS}" == "btrfs" ]]; then
|
if [[ "${FS}" == "btrfs" ]]; then
|
||||||
mkfs.vfat -F32 -n "EFIBOOT" ${partition2}
|
mkfs.vfat -F32 -n "EFIBOOT" "${partition2}"
|
||||||
mkfs.btrfs -L ROOT ${partition3} -f
|
mkfs.btrfs -L ROOT "${partition3}" -f
|
||||||
mount -t btrfs ${partition3} /mnt
|
mount -t btrfs "${partition3}" /mnt
|
||||||
subvolumesetup
|
subvolumesetup
|
||||||
elif [[ "${FS}" == "ext4" ]]; then
|
elif [[ "${FS}" == "ext4" ]]; then
|
||||||
mkfs.vfat -F32 -n "EFIBOOT" ${partition2}
|
mkfs.vfat -F32 -n "EFIBOOT" "${partition2}"
|
||||||
mkfs.ext4 -L ROOT ${partition3}
|
mkfs.ext4 -L ROOT "${partition3}"
|
||||||
mount -t ext4 ${partition3} /mnt
|
mount -t ext4 "${partition3}" /mnt
|
||||||
elif [[ "${FS}" == "luks" ]]; then
|
elif [[ "${FS}" == "luks" ]]; then
|
||||||
mkfs.vfat -F32 -n "EFIBOOT" ${partition2}
|
mkfs.vfat -F32 -n "EFIBOOT" "${partition2}"
|
||||||
# enter luks password to cryptsetup and format root partition
|
# enter luks password to cryptsetup and format root partition
|
||||||
echo -n "${LUKS_PASSWORD}" | cryptsetup -y -v luksFormat ${partition3} -
|
echo -n "${LUKS_PASSWORD}" | cryptsetup -y -v luksFormat "${partition3}" -
|
||||||
# open luks container and ROOT will be place holder
|
# open luks container and ROOT will be place holder
|
||||||
echo -n "${LUKS_PASSWORD}" | cryptsetup open ${partition3} ROOT -
|
echo -n "${LUKS_PASSWORD}" | cryptsetup open "${partition3}" ROOT -
|
||||||
# now format that container
|
# now format that container
|
||||||
mkfs.btrfs -L ROOT ${partition3}
|
mkfs.btrfs -L ROOT "${partition3}"
|
||||||
# create subvolumes for btrfs
|
# create subvolumes for btrfs
|
||||||
mount -t btrfs ${partition3} /mnt
|
mount -t btrfs "${partition3}" /mnt
|
||||||
subvolumesetup
|
subvolumesetup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -425,6 +421,7 @@ if ! grep -qs '/mnt' /proc/mounts; then
|
||||||
echo "Rebooting in 1 Second ..." && sleep 1
|
echo "Rebooting in 1 Second ..." && sleep 1
|
||||||
reboot now
|
reboot now
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -ne "
|
echo -ne "
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
Arch Install on Main Drive
|
Arch Install on Main Drive
|
||||||
|
@ -449,7 +446,7 @@ echo -ne "
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
"
|
"
|
||||||
if [[ ! -d "/sys/firmware/efi" ]]; then
|
if [[ ! -d "/sys/firmware/efi" ]]; then
|
||||||
grub-install --boot-directory=/mnt/boot ${DISK}
|
grub-install --boot-directory=/mnt/boot "${DISK}"
|
||||||
fi
|
fi
|
||||||
echo -ne "
|
echo -ne "
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
@ -474,7 +471,7 @@ fi
|
||||||
|
|
||||||
gpu_type=$(lspci | grep -E "VGA|3D|Display")
|
gpu_type=$(lspci | grep -E "VGA|3D|Display")
|
||||||
|
|
||||||
arch-chroot /mnt /bin/bash <<EOF
|
arch-chroot /mnt /bin/bash -c "KEYMAP='${KEYMAP}' /bin/bash" <<EOF
|
||||||
|
|
||||||
echo -ne "
|
echo -ne "
|
||||||
-------------------------------------------------------------------------
|
-------------------------------------------------------------------------
|
||||||
|
@ -516,8 +513,11 @@ timedatectl --no-ask-password set-timezone ${TIMEZONE}
|
||||||
timedatectl --no-ask-password set-ntp 1
|
timedatectl --no-ask-password set-ntp 1
|
||||||
localectl --no-ask-password set-locale LANG="en_US.UTF-8" LC_TIME="en_US.UTF-8"
|
localectl --no-ask-password set-locale LANG="en_US.UTF-8" LC_TIME="en_US.UTF-8"
|
||||||
ln -s /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
|
ln -s /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
|
||||||
|
|
||||||
# Set keymaps
|
# Set keymaps
|
||||||
localectl --no-ask-password set-keymap ${KEYMAP}
|
echo "KEYMAP=${KEYMAP}" > /etc/vconsole.conf
|
||||||
|
echo "XKBLAYOUT=${KEYMAP}" >> /etc/vconsole.conf
|
||||||
|
echo "Keymap set to: ${KEYMAP}"
|
||||||
|
|
||||||
# Add sudo no password rights
|
# Add sudo no password rights
|
||||||
sed -i 's/^# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers
|
sed -i 's/^# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers
|
||||||
|
@ -670,4 +670,4 @@ sed -i 's/^%wheel ALL=(ALL:ALL) NOPASSWD: ALL/# %wheel ALL=(ALL:ALL) NOPASSWD: A
|
||||||
# Add sudo rights
|
# Add sudo rights
|
||||||
sed -i 's/^# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers
|
sed -i 's/^# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers
|
||||||
sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
||||||
EOF
|
EOF
|
Loading…
Reference in New Issue
Block a user