You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
3.2 KiB

#!/bin/bash
while getopts "p:n:d:" opt;
do case $opt in
p) PASSWD=${OPTARG} ;;
n) NAME=${OPTARG} ;;
d) DEV=${OPTARG} ;;
\?) echo "-$OPTARG is not valid" >&2 && exit ;;
esac
done
init() {
[ -z "$NAME" ] && read -p "Hostname: " NAME
while [ -z "$PASSWD" ] || [ ! "$PASSWD" = "$CHECK" ]; do
read -sp "Root password: " PASSWD
echo
read -sp "Repeat: " CHECK
done
# Show some possible disks
[ -z "$DEV" ] && lsblk -nrpo "name,size,model" && read -p "Provide installation medium (e.g. sda, nvme0n1): " DEV
[[ "$DEV" =~ sd[a-z] ]] && SUF="1-3" && MODE="SATA"
[[ "$DEV" =~ nvme[0-9]n[0-9] ]] && SUF="p1-3" && MODE="NVME"
echo "+---------------------+"
echo "| Archlinux Bootstrap |"
echo "+---------------------+"
echo "HOSTNAME = $NAME"
echo "ROOTPASSWD = ${PASSWD:0:1}***${PASSWD: -1}"
echo "DEVICEPARTS = $DEV$SUF"
read -p "Do you want to continue with these values (y/n): " cont
[ ! "$cont" = "y" ] && unset NAME PASSWD DEV && init
echo "Let's GOOOO"
}
# stop on error
set -e
# initialize important values
init
# All values set, start bootstrapping
gdisk /dev/$DEV <<EOF
o
y
n
+1G
ef00
n
+16G
8200
n
8304
w
y
EOF
case $MODE in
"NVME")
mkfs.fat -F 32 -n P_EFI /dev/${DEV}p1
mkfs.ext4 -L P_ROOT /dev/${DEV}p3
mkswap -L P_SWAP /dev/${DEV}p2
;;
"SATA")
mkfs.fat -F 32 -n P_EFI /dev/${DEV}1
mkfs.ext4 -L P_ROOT /dev/${DEV}3
mkswap -L P_SWAP /dev/${DEV}2
;;
esac
mount -L P_ROOT /mnt # root
mkdir -p /mnt/boot
mount -L P_EFI /mnt/boot # EFI
swapon -L P_SWAP # swap
sed -e '/## Germany/,+1!d' /etc/pacman.d/mirrorlist
# for server dhcpcd and other programs are not required -> see good2know
pacstrap /mnt base base-devel linux-zen linux-firmware vi dhcpcd wpa_supplicant dialog git netctl curl
genfstab -p /mnt > /mnt/etc/fstab
cat <<EOF > /mnt/root/bootstrap2.sh
#!/bin/bash
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
echo $NAME > /etc/hostname
mkinitcpio -p linux
pacman -Sy --noconfirm efibootmgr dosfstools gptfdisk
bootctl install
# MAYBE: add intel-ucode images, check for amd
cat <<EEE > /boot/loader/entries/arch-uefi.conf
title Arch
linux /vmlinuz-linux-zen
initrd /initramfs-linux-zen.img
options root=LABEL=P_ROOT rw resume=LABEL=P_SWAP
EEE
cat <<EEE > /boot/loader/entries/arch-uefi-fallback.conf
title Arch Linux Fallback
linux /vmlinuz-linux-zen
initrd /initramfs-linux-zen-fallback.img
options root=LABEL=P_ROOT rw resume=LABEL=P_SWAP
EEE
cat <<EEE > /boot/loader/loader.conf
default arch-uefi
timeout 1
EEE
pacman --noconfirm -Sy reflector
reflector --country 'Germany' --sort rate --protocol https --save /etc/pacman.d/mirrorlist
printf "${PASSWD}\n${PASSWD}\n" | passwd root
4 years ago
cd && curl -L https://g.phga.de/phga/fresh/archive/master.tar.gz -o fresh.tar.gz && tar -xzf fresh.tar.gz
# basically a shitty one time job, which does not work, seems like root does not source .bashrc
echo '/root/fresh/fresh.sh' > .bash_profile
exit
EOF
chmod u+x /mnt/root/bootstrap2.sh
arch-chroot /mnt /root/bootstrap2.sh
rm /mnt/root/bootstrap2.sh
reboot