mirror of
https://github.com/rwinkhart/artix-install-script.git
synced 2026-08-28 12:56:26 -04:00
188 lines
5.1 KiB
Bash
Executable File
188 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
loadkeys us
|
|
echo ----------------------------------------------------------------------------------------------
|
|
echo rwinkhart\'s artix installer
|
|
echo last updated june 26, 2022
|
|
echo ----------------------------------------------------------------------------------------------
|
|
echo You will be asked some questions before installation.
|
|
echo -e "----------------------------------------------------------------------------------------------\n"
|
|
read -n 1 -s -r -p 'Press any key to continue'
|
|
|
|
# start questions
|
|
echo Special Devices:
|
|
echo -e '\nspecial devices:\n1. asus rog zephyrus g14 2020 (not yet supported)\ngeneric:\n2. laptop\n3. desktop\n4. server\n'
|
|
read -n 1 -r -p "formfactor: " formfactor
|
|
|
|
fdisk -l
|
|
read -rp "disk: " disk
|
|
|
|
read -rp "swap (in GB): " swap
|
|
|
|
read -n 1 -rp "clean install? (y/N) " wipe
|
|
echo
|
|
read -rp "username: " username
|
|
|
|
read -rp "$username password: " userpassword
|
|
|
|
read -rp "root password: " rootpassword
|
|
|
|
read -rp "hostname: " hostname
|
|
|
|
echo -e '\namerica:'&&ls /usr/share/zoneinfo/America
|
|
echo -e 'e.g. "New_York" or "Aruba"\n'
|
|
read -r -p "timezone: " timezone
|
|
# stop questions
|
|
|
|
# start hardware detection
|
|
cpu=$(lscpu | grep 'Vendor ID:' | awk 'FNR == 1 {print $3;}')
|
|
gpu=$(lspci | grep 'VGA compatible controller:' | awk 'FNR == 1 {print $5;}')
|
|
ram=$(echo "$(cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2;}') / 1000000" | bc)
|
|
# stop hardware detection
|
|
|
|
# start conditional questions
|
|
if [ "$gpu" == 'Intel' ]; then
|
|
echo -e '1. libva-intel-driver (intel igpus up to coffee lake)\n2. intel-media-driver (intel igpus/dgpus newer than coffee lake)\n'
|
|
read -n 1 -rp "va-api driver: " intel_vaapi_driver
|
|
fi
|
|
# stop conditional questions
|
|
|
|
# start variable manipulation
|
|
wipe=$(echo "$wipe" | tr '[:upper:]' '[:lower:]')
|
|
username=$(echo "$username" | tr '[:upper:]' '[:lower:]')
|
|
hostname=$(echo "$hostname" | tr '[:upper:]' '[:lower:]')
|
|
|
|
disk0=$disk
|
|
if [[ "$disk" == /dev/nvme0n* ]]; then
|
|
disk="$disk"'p'
|
|
fi
|
|
if [[ "$disk" == /dev/mmcblk* ]]; then
|
|
disk="$disk"'p'
|
|
fi
|
|
|
|
if [ "$formfactor" == 1 ]; then
|
|
device='g14-'
|
|
else
|
|
device=''
|
|
fi
|
|
# stop variable manipulation
|
|
|
|
# determine if running as UEFI or BIOS
|
|
if [ -d "/sys/firmware/efi" ]; then
|
|
boot=1
|
|
else
|
|
boot=2
|
|
fi
|
|
|
|
# start partitioning
|
|
if [ "$boot" == 1 ]; then
|
|
# gpt/uefi partitioning
|
|
if [ "$wipe" == y ]; then
|
|
partitions=0
|
|
echo "g
|
|
n
|
|
1
|
|
|
|
+256M
|
|
t
|
|
1
|
|
n
|
|
|
|
|
|
|
|
w
|
|
" | fdisk -w always -W always "$disk0"
|
|
else
|
|
partitions=$(lsblk "$disk0" -o NAME | grep -o '.$' | tail -1)
|
|
echo "n
|
|
|
|
|
|
+256M
|
|
t
|
|
|
|
1
|
|
n
|
|
|
|
|
|
|
|
w
|
|
" | fdisk -W always "$disk0"
|
|
fi
|
|
|
|
# disk formatting
|
|
mkfs.fat -F32 "$disk""$((1 + "$partitions"))"
|
|
mkfs.ext4 -O fast_commit "$disk""$((2 + "$partitions"))"
|
|
|
|
# mounting storage and efi partitions
|
|
mount "$disk""$((2 + "$partitions"))" /mnt
|
|
mkdir -p /mnt/{boot/EFI,etc/conf.d}
|
|
mount "$disk""$((1 + "$partitions"))" /mnt/boot/EFI
|
|
else
|
|
# mbr/bios partitioning
|
|
if [ "$wipe" == y ]; then
|
|
partitions=0
|
|
echo "o
|
|
n
|
|
p
|
|
|
|
|
|
|
|
w
|
|
" | fdisk -w always -W always "$disk0"
|
|
else
|
|
partitions=$(lsblk "$disk0" -o NAME | grep -o '.$' | tail -1)
|
|
echo "n
|
|
p
|
|
|
|
|
|
|
|
w
|
|
" | fdisk -W always "$disk0"
|
|
fi
|
|
|
|
# disk formatting
|
|
mkfs.ext4 -O fast_commit "$disk""$((1 + "$partitions"))"
|
|
|
|
# mounting storage (no efi partition, using dos label)
|
|
mount "$disk""$((1 + "$partitions"))" /mnt
|
|
mkdir -p /mnt/etc/conf.d
|
|
fi
|
|
|
|
# create and mount swap file
|
|
if [ "$swap" != 0 ]; then
|
|
dd if=/dev/zero of=/mnt/swapfile bs=1G count="$swap" status=progress
|
|
chmod 600 /mnt/swapfile
|
|
mkswap /mnt/swapfile
|
|
swapon /mnt/swapfile
|
|
fi
|
|
|
|
fstabgen -U /mnt >> /mnt/etc/fstab
|
|
echo -e "\ntmpfs /tmp tmpfs rw,nodev,nosuid,size="$(echo ".75 * $ram / 1" | bc)"G 0 0" >> /mnt/etc/fstab
|
|
# stop partitioning
|
|
|
|
# setting hostname
|
|
echo "$hostname" > /mnt/etc/hostname
|
|
echo "hostname=\'"$hostname"\'" > /mnt/etc/conf.d/hostname
|
|
|
|
# installing base packages
|
|
base_devel='db diffutils gc guile libisl libmpc perl autoconf automake binutils bison esysusers etmpfiles fakeroot file findutils flex gawk gcc gettext grep groff gzip libtool m4 make pacman patch pkgconf python sed opendoas texinfo which'
|
|
basestrap /mnt base $base_devel openrc elogind-openrc linux linux-firmware git micro man-db
|
|
|
|
# exporting variables
|
|
mkdir /mnt/tempfiles
|
|
echo "$formfactor" > /mnt/tempfiles/formfactor
|
|
echo "$device" > /mnt/tempfiles/device
|
|
echo "$cpu" > /mnt/tempfiles/cpu
|
|
echo "$gpu" > /mnt/tempfiles/gpu
|
|
echo "$intel_vaapi_driver" > /mnt/tempfiles/intel_vaapi_driver
|
|
echo "$boot" > /mnt/tempfiles/boot
|
|
echo "$disk0" > /mnt/tempfiles/disk
|
|
echo "$username" > /mnt/tempfiles/username
|
|
echo "$userpassword" > /mnt/tempfiles/userpassword
|
|
echo "$rootpassword" > /mnt/tempfiles/rootpassword
|
|
echo "$timezone" > /mnt/tempfiles/timezone
|
|
|
|
# download and initiate part 2
|
|
curl https://raw.githubusercontent.com/rwinkhart/artix-install-script/main/chrootInstall.sh -o /mnt/chrootInstall.sh
|
|
chmod +x /mnt/chrootInstall.sh
|
|
artix-chroot /mnt /chrootInstall.sh
|