2021-11-26 12:50:12 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
#---------------------------------------------
|
|
|
|
# ██████╗ ██╗ █████╗ ██╗ ██████╗ ███████╗
|
|
|
|
#██╔═══██╗██║ ██╔══██╗██║██╔═══██╗██╔════╝
|
|
|
|
#██║ ██║██║ ███████║██║██║ ██║███████╗
|
|
|
|
#██║ ██║██║ ██╔══██║██║██║ ██║╚════██║
|
|
|
|
#╚██████╔╝███████╗██║ ██║██║╚██████╔╝███████║
|
|
|
|
# ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝
|
|
|
|
#---------------------------------------------
|
|
|
|
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
|
|
echo "-------------------------------------------------"
|
|
|
|
echo "Setting up mirrors for optimal download "
|
|
|
|
echo "-------------------------------------------------"
|
|
|
|
iso=$(curl -4 ifconfig.co/country-iso)
|
|
|
|
timedatectl set-ntp true
|
|
|
|
pacman -S --noconfirm pacman-contrib terminus-font
|
|
|
|
setfont ter-v22b
|
|
|
|
sed -i 's/^#Para/Para/' /etc/pacman.conf
|
|
|
|
pacman -S --noconfirm reflector rsync grub
|
|
|
|
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
|
|
|
|
echo -e "----------------------------------------------"
|
2021-12-12 01:41:12 +00:00
|
|
|
echo -e " ██████ ██ █████ ██ ██████ ███████ "
|
|
|
|
echo -e " ██ ██ ██ ██ ██ ██ ██ ██ ██ "
|
|
|
|
echo -e " ██ ██ ██ ███████ ██ ██ ██ ███████ "
|
|
|
|
echo -e " ██ ██ ██ ██ ██ ██ ██ ██ ██ "
|
|
|
|
echo -e " ██████ ███████ ██ ██ ██ ██████ ███████ "
|
2021-11-26 12:50:12 +00:00
|
|
|
echo -e "-------------------------------------------------------------------------"
|
|
|
|
echo -e "-Setting up $iso mirrors for faster downloads"
|
|
|
|
echo -e "-------------------------------------------------------------------------"
|
|
|
|
|
|
|
|
reflector -a 48 -c $iso -f 5 -l 20 --sort rate --save /etc/pacman.d/mirrorlist
|
|
|
|
mkdir /mnt
|
|
|
|
|
|
|
|
|
|
|
|
echo -e "\nInstalling prereqs...\n$HR"
|
|
|
|
pacman -S --noconfirm gptfdisk btrfs-progs
|
|
|
|
|
|
|
|
echo "-------------------------------------------------"
|
|
|
|
echo "-------select your disk to format----------------"
|
|
|
|
echo "-------------------------------------------------"
|
|
|
|
lsblk
|
|
|
|
echo "Please enter disk to work on: (example /dev/sda)"
|
|
|
|
read DISK
|
|
|
|
echo "THIS WILL FORMAT AND DELETE ALL DATA ON THE DISK"
|
2021-12-11 22:36:16 +00:00
|
|
|
read -p "are you sure you want to continue (y/N):" formatdisk
|
2021-11-26 12:50:12 +00:00
|
|
|
case $formatdisk in
|
|
|
|
|
|
|
|
y|Y|yes|Yes|YES)
|
|
|
|
echo "--------------------------------------"
|
|
|
|
echo -e "\nFormatting disk...\n$HR"
|
|
|
|
echo "--------------------------------------"
|
|
|
|
|
|
|
|
# disk prep
|
|
|
|
sgdisk -Z ${DISK} # zap all on disk
|
|
|
|
sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment
|
|
|
|
|
|
|
|
# create partitions
|
|
|
|
sgdisk -n 1::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' ${DISK} # partition 1 (BIOS Boot Partition)
|
|
|
|
sgdisk -n 2::+100M --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
|
|
|
|
if [[ ! -d "/sys/firmware/efi" ]]; then
|
|
|
|
sgdisk -A 1:set:2 ${DISK}
|
|
|
|
fi
|
|
|
|
|
|
|
|
# make filesystems
|
|
|
|
echo -e "\nCreating Filesystems...\n$HR"
|
|
|
|
if [[ ${DISK} =~ "nvme" ]]; then
|
|
|
|
mkfs.vfat -F32 -n "EFIBOOT" "${DISK}p2"
|
|
|
|
mkfs.btrfs -L "ROOT" "${DISK}p3" -f
|
|
|
|
mount -t btrfs "${DISK}p3" /mnt
|
|
|
|
else
|
|
|
|
mkfs.vfat -F32 -n "EFIBOOT" "${DISK}2"
|
|
|
|
mkfs.btrfs -L "ROOT" "${DISK}3" -f
|
|
|
|
mount -t btrfs "${DISK}3" /mnt
|
|
|
|
fi
|
|
|
|
ls /mnt | xargs btrfs subvolume delete
|
|
|
|
btrfs subvolume create /mnt/@
|
|
|
|
umount /mnt
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
echo "Rebooting in 3 Seconds ..." && sleep 1
|
|
|
|
echo "Rebooting in 2 Seconds ..." && sleep 1
|
|
|
|
echo "Rebooting in 1 Second ..." && sleep 1
|
|
|
|
reboot now
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# mount target
|
|
|
|
mount -t btrfs -o subvol=@ -L ROOT /mnt
|
|
|
|
mkdir /mnt/boot
|
|
|
|
mkdir /mnt/boot/efi
|
|
|
|
mount -t vfat -L EFIBOOT /mnt/boot/
|
|
|
|
|
|
|
|
if ! grep -qs '/mnt' /proc/mounts; then
|
|
|
|
echo "Drive is not mounted can not continue"
|
|
|
|
echo "Rebooting in 3 Seconds ..." && sleep 1
|
|
|
|
echo "Rebooting in 2 Seconds ..." && sleep 1
|
|
|
|
echo "Rebooting in 1 Second ..." && sleep 1
|
|
|
|
reboot now
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "--------------------------------------"
|
|
|
|
echo "-- Arch Install on Main Drive --"
|
|
|
|
echo "--------------------------------------"
|
|
|
|
pacstrap /mnt base base-devel linux linux-firmware vim nano sudo archlinux-keyring wget libnewt --noconfirm --needed
|
|
|
|
genfstab -U /mnt >> /mnt/etc/fstab
|
|
|
|
echo "keyserver hkp://keyserver.ubuntu.com" >> /mnt/etc/pacman.d/gnupg/gpg.conf
|
|
|
|
cp -R ${SCRIPT_DIR} /mnt/root/OlaiOS
|
|
|
|
cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
|
|
|
|
echo "--------------------------------------"
|
|
|
|
echo "--GRUB BIOS Bootloader Install&Check--"
|
|
|
|
echo "--------------------------------------"
|
|
|
|
if [[ ! -d "/sys/firmware/efi" ]]; then
|
|
|
|
grub-install --boot-directory=/mnt/boot ${DISK}
|
|
|
|
fi
|
|
|
|
echo "--------------------------------------"
|
|
|
|
echo "-- Check for low memory systems <8G --"
|
|
|
|
echo "--------------------------------------"
|
|
|
|
TOTALMEM=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')
|
|
|
|
if [[ $TOTALMEM -lt 8000000 ]]; then
|
|
|
|
#Put swap into the actual system, not into RAM disk, otherwise there is no point in it, it'll cache RAM into RAM. So, /mnt/ everything.
|
|
|
|
mkdir /mnt/opt/swap #make a dir that we can apply NOCOW to to make it btrfs-friendly.
|
|
|
|
chattr +C /mnt/opt/swap #apply NOCOW, btrfs needs that.
|
|
|
|
dd if=/dev/zero of=/mnt/opt/swap/swapfile bs=1M count=2048 status=progress
|
|
|
|
chmod 600 /mnt/opt/swap/swapfile #set permissions.
|
|
|
|
chown root /mnt/opt/swap/swapfile
|
|
|
|
mkswap /mnt/opt/swap/swapfile
|
|
|
|
swapon /mnt/opt/swap/swapfile
|
|
|
|
#The line below is written to /mnt/ but doesn't contain /mnt/, since it's just / for the sysytem itself.
|
|
|
|
echo "/opt/swap/swapfile none swap sw 0 0" >> /mnt/etc/fstab #Add swap to fstab, so it KEEPS working after installation.
|
|
|
|
fi
|
|
|
|
echo "--------------------------------------"
|
|
|
|
echo "-- SYSTEM READY FOR 1-setup --"
|
2021-12-11 22:36:16 +00:00
|
|
|
echo "--------------------------------------"
|