2023-03-29 15:25:44 +00:00
|
|
|
#!/bin/bash
|
2022-03-13 15:01:45 +00:00
|
|
|
# Vor Reboot
|
2023-03-29 13:53:44 +00:00
|
|
|
echo "Select Prozessor Vendor:"
|
|
|
|
echo "1) AMD 2) Intel 3) Other(no ucode)"
|
2023-03-29 15:25:44 +00:00
|
|
|
read -r vendor
|
2023-03-29 13:53:44 +00:00
|
|
|
if [[ $vendor == 1 ]]; then
|
|
|
|
echo "AMD"
|
|
|
|
ucode="amd-ucode"
|
|
|
|
elif [[ $vendor == 2 ]]; then
|
|
|
|
echo "Intel"
|
|
|
|
ucode="intel-ucode"
|
|
|
|
elif [[ $vendor == 3 ]]; then
|
|
|
|
echo "no Ucode"
|
|
|
|
ucode=""
|
|
|
|
else
|
|
|
|
echo "Vendor Unknown, aborting"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "Select Kernel"
|
|
|
|
echo "1) Linux 2) Linux+lts 3) Linux+zen 4) Linux+zen+lts 5) zen+lts"
|
2023-03-29 15:25:44 +00:00
|
|
|
read -r kernel
|
2023-03-29 13:53:44 +00:00
|
|
|
|
|
|
|
if [[ $kernel == 1 ]]; then
|
|
|
|
echo "Linux"
|
|
|
|
selectedKernel="linux"
|
|
|
|
header="linux-headers"
|
|
|
|
elif [[ $kernel == 2 ]]; then
|
|
|
|
echo "Linux/Linux LTS"
|
|
|
|
selectedKernel="linux linux-lts"
|
|
|
|
header="linux-headers linux-lts-headers"
|
|
|
|
elif [[ $kernel == 3 ]]; then
|
|
|
|
echo "Linux/Linux Zen"
|
|
|
|
selectedKernel="linux linux-zen"
|
|
|
|
header="linux-headers linux-zen-headers"
|
|
|
|
elif [[ $kernel == 4 ]]; then
|
|
|
|
echo "Linux/Linux LTS/Linux Zen"
|
|
|
|
selectedKernel="linux linux-lts linux-zen"
|
|
|
|
header="linux-headers linux-lts-headers linux-zen-headers"
|
|
|
|
elif [[ $kernel == 5 ]]; then
|
|
|
|
echo "Linux LTS/Linux Zen"
|
|
|
|
selectedKernel="linux-lts linux-zen"
|
|
|
|
header="linux-lts-headers linux-zen-headers"
|
|
|
|
else
|
|
|
|
echo "no Kernel selectet, aborting"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "General configuration:"
|
|
|
|
echo "1) Server (Systemd-networkd, no graphics card) 2) Laptop/Desktop (Networkmanager, Graphics Card)"
|
2023-03-29 15:25:44 +00:00
|
|
|
read -r configuration
|
2023-03-29 13:53:44 +00:00
|
|
|
|
|
|
|
if [[ $configuration == 2 ]]; then
|
|
|
|
echo "Laptop/Desktop"
|
|
|
|
echo ""
|
|
|
|
echo "Graphics Card"
|
|
|
|
echo "1) AMD 2) Intel 3) Nvidia"
|
2023-03-29 15:25:44 +00:00
|
|
|
read -r gracard
|
2023-03-29 13:53:44 +00:00
|
|
|
|
|
|
|
if [[ $gracard == 1 ]]; then
|
|
|
|
echo "AMD"
|
|
|
|
elif [[ $gracard == 2 ]]; then
|
|
|
|
echo "Intel"
|
|
|
|
elif [[ $gracard == 3 ]]; then
|
|
|
|
echo "Nvidia"
|
|
|
|
else
|
2023-03-29 15:25:44 +00:00
|
|
|
read -r -p "No Graphics Card selected. Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1
|
2023-03-29 13:53:44 +00:00
|
|
|
fi
|
|
|
|
elif [[ $configuration == 1 ]]; then
|
|
|
|
echo "Server"
|
|
|
|
fi
|
2023-03-30 10:56:37 +00:00
|
|
|
|
2023-03-29 13:53:44 +00:00
|
|
|
sleep 1
|
2023-01-13 00:42:11 +00:00
|
|
|
|
|
|
|
# Pacman Konfiguration
|
|
|
|
sed -i 's/#\(Color\)/\1/' /etc/pacman.conf
|
|
|
|
# Umbruch notwendug
|
|
|
|
sed -i 's/#\(ParallelDownloads\s=\s5\)/\1\
|
|
|
|
ILoveCandy/' /etc/pacman.conf
|
|
|
|
|
|
|
|
# Zeit einstellen
|
2021-12-11 18:22:56 +00:00
|
|
|
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
|
|
|
|
hwclock --systohc
|
|
|
|
|
2021-12-11 19:03:24 +00:00
|
|
|
# vim /etc/locale.gen
|
|
|
|
sed -i 's/#\(de_DE.UTF-8\)/\1/' /etc/locale.gen
|
2021-12-11 18:22:56 +00:00
|
|
|
locale-gen
|
|
|
|
|
|
|
|
echo "LANG=de_DE.UTF-8" >> /etc/locale.conf
|
2023-01-13 00:31:19 +00:00
|
|
|
echo "KEYMAP=de-latin1-nodeadkeys" >> /etc/vconsole.conf #only for console not for DE or terminal
|
|
|
|
#echo "FONT=Tamsyn10x20r" >> /etc/vconsole.conf
|
2021-12-11 18:22:56 +00:00
|
|
|
echo "arch" >> /etc/hostname
|
|
|
|
# vim /etc/hosts
|
2023-03-29 13:53:44 +00:00
|
|
|
echo "127.0.0.1 localhost" > /etc/hosts
|
2021-12-11 18:22:56 +00:00
|
|
|
echo "::1 localhost" >> /etc/hosts
|
|
|
|
echo "127.0.1.1 arch.localedomain arch" >> /etc/hosts
|
|
|
|
echo root:test | chpasswd
|
|
|
|
|
2023-03-29 13:53:44 +00:00
|
|
|
|
2023-03-29 15:32:02 +00:00
|
|
|
pacman -S $selectedKernel "$ucode"
|
|
|
|
pacman -S base-devel $header
|
2021-12-11 18:22:56 +00:00
|
|
|
|
2023-01-13 00:16:34 +00:00
|
|
|
pacman -S iwd dialog reflector xdg-user-dirs xdg-utils inetutils ldns bash-completion openssh rsync iptables-nft ipset firewalld lynx
|
2021-12-11 18:22:56 +00:00
|
|
|
|
2023-01-13 00:31:19 +00:00
|
|
|
pacman -S networkmanager
|
2023-01-13 00:42:11 +00:00
|
|
|
#Idee: ppp bluez(hier) modemmanager polkit(?)
|
2023-01-13 00:31:19 +00:00
|
|
|
|
2022-03-13 15:01:45 +00:00
|
|
|
pacman -S efibootmgr mtools dosfstools
|
2021-12-12 20:39:13 +00:00
|
|
|
|
2023-03-29 13:53:44 +00:00
|
|
|
if [[ $gracard == 1 ]]; then
|
|
|
|
pacman -S --noconfirm xf86-video-amdgpu
|
|
|
|
elif [[ $gracard == 3 ]]; then
|
|
|
|
pacman -S --noconfirm nvidia nvidia-utils nvidia-settings
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $configuration == 1 ]]; then
|
|
|
|
systemctl enable systemd-networkd
|
|
|
|
systemctl enable iwd
|
|
|
|
systemctl enable sshd
|
|
|
|
# Netzwerk
|
|
|
|
# Ethernet
|
2023-03-29 15:39:25 +00:00
|
|
|
echo "Ethernet"
|
2023-03-29 15:05:02 +00:00
|
|
|
ethernet_network=$(find / -type f -name 20-ethernet.network | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$ethernet_network" /etc/systemd/network/
|
2023-03-29 13:53:44 +00:00
|
|
|
# Wlan
|
2023-03-29 15:39:25 +00:00
|
|
|
echo "WLAN"
|
2023-03-29 15:05:02 +00:00
|
|
|
wlan_network=$(find / -type f -name 20-wlan.network | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$wlan_network" /etc/systemd/network/
|
2023-03-29 13:53:44 +00:00
|
|
|
# Wwan (Mobilefunk)
|
2023-03-29 15:39:25 +00:00
|
|
|
echo "Mobilfunk"
|
2023-03-29 15:05:02 +00:00
|
|
|
wwan_network=$(find / -type f -name 20-wwan.network | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$wwan_network" /etc/systemd/network/
|
2023-03-29 13:53:44 +00:00
|
|
|
elif [[ $configuration == 2 ]]; then
|
|
|
|
systemctl enable NetworkManager
|
2023-03-29 15:05:02 +00:00
|
|
|
wifi_backend_conf=$(find / -type f -name wifi_backend.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$wifi_backend_conf" /etc/NetworkManager/conf.d/
|
2023-03-29 13:53:44 +00:00
|
|
|
fi
|
2021-12-11 18:22:56 +00:00
|
|
|
|
2022-03-13 15:01:45 +00:00
|
|
|
systemctl enable systemd-resolved
|
2023-01-13 00:16:34 +00:00
|
|
|
systemctl enable systemd-timesyncd
|
2021-12-11 18:22:56 +00:00
|
|
|
systemctl enable reflector.timer
|
|
|
|
systemctl enable firewalld
|
2022-03-13 15:01:45 +00:00
|
|
|
systemctl enable fstrim.timer
|
2021-12-11 18:35:28 +00:00
|
|
|
|
2023-03-29 13:53:44 +00:00
|
|
|
if [[ $gracard == 1 ]]; then
|
|
|
|
sed -i 's/MODULES=()/MODULES=(amdgpu)/' /etc/mkinitcpio.conf #AMD
|
|
|
|
elif [[ $gracard == 2 ]]; then
|
|
|
|
sed -i 's/MODULES=()/MODULES=(i915)/' /etc/mkinitcpio.conf #Intel
|
|
|
|
elif [[ $gracard == 3 ]]; then
|
|
|
|
sed -i 's/MODULES=()/MODULES=(nvidia)/' /etc/mkinitcpio.conf #Nvidia
|
|
|
|
fi
|
|
|
|
|
2023-03-29 15:59:47 +00:00
|
|
|
sed -i 's/BINARIES=()/BINARIES=(btrfs)/' /etc/mkinitcpio.conf
|
|
|
|
|
2023-03-29 15:56:31 +00:00
|
|
|
sed -i 's/HOOKS=(.*)/HOOKS=(base systemd keyboard autodetect sd-vconsole modconf kms block sd-encrypt filesystems fsck)/' /etc/mkinitcpio.conf
|
|
|
|
|
2023-03-29 13:53:44 +00:00
|
|
|
if [[ $kernel == 1 ]]; then
|
|
|
|
mkinitcpio -p linux
|
|
|
|
elif [[ $kernel == 2 ]]; then
|
|
|
|
mkinitcpio -p linux
|
|
|
|
mkinitcpio -p linux-lts
|
|
|
|
elif [[ $kernel == 3 ]]; then
|
|
|
|
mkinitcpio -p linux
|
|
|
|
mkinitcpio -p linux-zen
|
|
|
|
elif [[ $kernel == 4 ]]; then
|
|
|
|
mkinitcpio -p linux
|
|
|
|
mkinitcpio -p linux-lts
|
|
|
|
mkinitcpio -p linux-zen
|
|
|
|
elif [[ $kernel == 5 ]]; then
|
|
|
|
mkinitcpio -p linux-lts
|
|
|
|
mkinitcpio -p linux-zen
|
|
|
|
fi
|
2021-12-11 18:35:28 +00:00
|
|
|
|
2022-03-13 15:01:45 +00:00
|
|
|
bootctl install
|
2021-12-11 18:35:28 +00:00
|
|
|
|
|
|
|
# Bootloaderconfig
|
2023-03-29 14:58:05 +00:00
|
|
|
loader_conf=$(find / -type f -name loader.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$loader_conf" /boot/loader/
|
2023-03-29 13:53:44 +00:00
|
|
|
|
2023-03-30 10:56:37 +00:00
|
|
|
#$selectedKernel="linux linux-lts linux-zen"
|
|
|
|
array_kernel_einzeln=$(echo "$selectedKernel" | tr " " "\n");
|
|
|
|
entry_conf=$(find / -type f -name entry.conf | grep configs)
|
|
|
|
for kernel_einzeln in $array_kernel_einzeln; do
|
|
|
|
boot_entry_name="${kernel_einzeln//linux/arch}";
|
|
|
|
# Standart
|
|
|
|
cp "$entry_conf" /boot/loader/entries/"$boot_entry_name".conf
|
|
|
|
sed -i "s/#KERNEL#/$kernel_einzeln/" /boot/loader/entries/"$boot_entry_name".conf
|
|
|
|
sed -i "s/#INITRAMFS#/$kernel_einzeln/" /boot/loader/entries/"$boot_entry_name".conf
|
|
|
|
title="${boot_entry_name//arch/arch-linux}"
|
|
|
|
sed -i "s/#TITLE#/$title/" /boot/loader/entries/"$boot_entry_name".conf
|
|
|
|
# Fallback
|
|
|
|
cp "$entry_conf" /boot/loader/entries/"$boot_entry_name".conf
|
|
|
|
sed -i "s/#KERNEL#/$kernel_einzeln/" /boot/loader/entries/"$boot_entry_name"-fallback.conf
|
|
|
|
sed -i "s/#INITRAMFS#/$kernel_einzeln-fallback/" /boot/loader/entries/"$boot_entry_name"-fallback.conf
|
|
|
|
title="${boot_entry_name//arch/arch-linux}-fallback"
|
|
|
|
sed -i "s/#TITLE#/$title/" /boot/loader/entries/"$boot_entry_name"-fallback.conf
|
|
|
|
done;
|
|
|
|
|
|
|
|
#TITLE#Arch Linux Zen Fallback
|
|
|
|
#KERNEL#linux-zen
|
|
|
|
#INITRAMFS#linux-zen-fallback
|
|
|
|
|
2023-03-29 13:53:44 +00:00
|
|
|
if [[ $kernel == 1 || $kernel == 2 || $kernel == 3 || $kernel == 4 ]]; then
|
|
|
|
# Entry Arch
|
2023-03-29 14:58:05 +00:00
|
|
|
arch_conf=$(find / -type f -name arch.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$arch_conf" /boot/loader/entries/
|
|
|
|
fi
|
2023-03-29 13:53:44 +00:00
|
|
|
|
|
|
|
if [[ $kernel == 2 || $kernel == 4 || $kernel == 5 ]]; then
|
|
|
|
# Entry Arch LTS
|
2023-03-29 14:58:05 +00:00
|
|
|
arch_lts_conf=$(find / -type f -name arch-lts.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$arch_lts_conf" /boot/loader/entries/
|
2023-03-29 13:53:44 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $kernel == 3 || $kernel == 4 || $kernel == 5 ]]; then
|
|
|
|
# Entry Arch Zen
|
2023-03-29 14:58:05 +00:00
|
|
|
arch_zen_conf=$(find / -type f -name arch-zen.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$arch_zen_conf" /boot/loader/entries/
|
2023-03-29 13:53:44 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $kernel == 1 || $kernel == 2 || $kernel == 3 || $kernel == 4 ]]; then
|
|
|
|
# Entry Arch Fallback
|
2023-03-29 14:58:05 +00:00
|
|
|
arch_fallback_conf=$(find / -type f -name arch-fallback.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$arch_fallback_conf" /boot/loader/entries/
|
2023-03-29 13:53:44 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $kernel == 2 || $kernel == 4 || $kernel == 5 ]]; then
|
|
|
|
# Entry Arch LTS Fallback
|
2023-03-29 14:58:05 +00:00
|
|
|
arch_lts_fallback_conf=$(find / -type f -name arch-lts-fallback.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$arch_lts_fallback_conf" /boot/loader/entries/
|
2023-03-29 13:53:44 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $kernel == 3 || $kernel == 4 || $kernel == 5 ]]; then
|
|
|
|
# Entry Arch Zen Fallback
|
2023-03-29 14:58:05 +00:00
|
|
|
arch_zen_fallback_conf=$(find / -type f -name arch-zen-fallback.conf | grep configs)
|
2023-03-29 15:25:44 +00:00
|
|
|
cp "$arch_zen_fallback_conf" /boot/loader/entries/
|
2023-03-29 13:53:44 +00:00
|
|
|
if [[ $vendor == 1 ]]; then
|
|
|
|
sed -i 's/#AMD//' /boot/loader/entries/arch-zen-fallback.conf
|
|
|
|
elif [[ $vendor == 2 ]]; then
|
|
|
|
sed -i 's/#Intel//' /boot/loader/entries/arch-zen-fallback.conf
|
|
|
|
fi
|
|
|
|
fi
|
2022-03-13 15:01:45 +00:00
|
|
|
|
2023-03-30 09:12:24 +00:00
|
|
|
cryptroot_name=$(grep "#\s/dev/mapper" /etc/fstab | head -n 1 | sed 's/#\s\/dev\/mapper\/\(.*\)\s.*/\1/')
|
|
|
|
cryptroot_device_name=$(grep "LABEL=EFI" /etc/fstab | sed 's/#\s\/dev\/\(.\{3\}\).*/\1/')
|
|
|
|
cryptroot_device_uuid=$(blkid -o value -s UUID /dev/"$cryptroot_device_name"2)
|
|
|
|
|
|
|
|
#sed -i "s/root=LABEL=arch/root=\/dev\/mapper\/$cryptroot_name rd.luks.name=$cryptroot_device_uuid=$cryptroot_name/" /boot/loader/entries/arch.conf
|
2023-03-30 10:56:37 +00:00
|
|
|
find /boot -type f -name arch\*.conf -exec sed -i "s/root=LABEL=arch/root=\/dev\/mapper\/$cryptroot_name rd.luks.name=$cryptroot_device_uuid=$cryptroot_name/" {} \;
|
2023-03-30 09:12:24 +00:00
|
|
|
|
2022-03-13 15:01:45 +00:00
|
|
|
useradd -mG wheel eichehome
|
2021-12-11 18:22:56 +00:00
|
|
|
echo eichehome:testen | chpasswd
|
2021-12-12 20:29:14 +00:00
|
|
|
|
2023-01-13 00:42:11 +00:00
|
|
|
echo "%wheel ALL=(ALL) ALL" >> /etc/sudoers.d/wheel_group
|