archinstall/install.uefi

194 lines
6.6 KiB
Bash

#!/bin/bash
####################
# Einfache Version #
####################
# processor micricode: amd-ucode|intel-ucode
MICROCODE="amd-ucode"
# kernel: linux|linux-lts|linux-zen
KERNEL="linux"
# hostname: arch
HOSTNAME_NEW="arch"
# rootpassword: testen
ROOTPASSWORD="testen"
# username: eichehome
USERNAME="eichehome"
# userpassword: testen
USERPASSWORD="testen"
# graphics card: amd|intel|nvidia
GRAPHICS_CARD="amd"
# timezone: Europe/Berlin
TIMEZONE="Europe/Berlin"
# language: de_DE.UTF-8
LANG="de_DE.UTF-8"
# Drive: /dev/vda
DRIVE="/dev/vda"
# disklayout: ESP (512MiB), Root (100% - 512MiB)
###########################
#Discoverable Partitions Specification
sgdisk -og "${DRIVE}"
sgdisk -n 0:0:+512M -t 0:c12a7328-f81f-11d2-ba4b-00a0c93ec93b -c 0:"EFI System Partition" "${DRIVE}"
#sgdisk -n 0:0:+512M -t 0:ef00 -c 0:ESP "${DRIVE}"
sgdisk -n 0:0:+15G -t 0:8484680c-9521-48c6-9c11-b0720656f69e -c 0:"Usr-Partition" "${DRIVE}"
sgdisk -n 0:0:0 -t 0:4f68bce3-e8cd-4db1-96e7-fbcaf984b709 -c 0:"System Root" "${DRIVE}"
mkfs.vfat -n EFI -F 32 /dev/vda1
mkfs.ext4 -L usr /dev/vda2
mkfs.ext4 -L root /dev/vda3
mount /dev/vda3 /mnt
mkdir -p /mnt/{boot,usr}
mount /dev/vda1 /mnt/boot
mount /dev/vda2 /mnt/usr
# Pacman im Live-System konfigurieren
sed -i 's/#\(Color\)/\1/' /etc/pacman.conf
# Umbruch notwendug
sed -i 's/#\(ParallelDownloads\s=\s5\)/\1\
ILoveCandy/' /etc/pacman.conf
#ln -sf /run/systemd/resolve/stub-resolv.conf /mnt/etc/resolv.conf # tmpfiles.d macht das
pacstrap -i /mnt base iptables-nft linux-firmware vim git "${KERNEL}" "${MICROCODE}" #dracut
#arch-chroot /mnt
# ln -sf "/usr/share/zoneinfo/${TIMEZONE}" /etc/localtime -> L /etc/localtime - - - - "/usr/share/zoneinfo/${TIMEZONE}"
arch-chroot /mnt hwclock --systohc
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf "/usr/share/zoneinfo/${TIMEZONE}" /etc/localtime
sed -i 's/#\(Color\)/\1/' /mnt/etc/pacman.conf
# Umbruch notwendug
sed -i 's/#\(ParallelDownloads\s=\s5\)/\1\
ILoveCandy/' /mnt/etc/pacman.conf
sed -i "s/#\(${LANG}\)/\1/" /mnt/etc/locale.gen
arch-chroot /mnt locale-gen
echo "LANG=${LANG}" > /mnt/etc/locale.conf
echo "KEYMAP=${KEYMAP}" > /mnt/etc/vconsole.conf
echo "${HOSTNAME_NEW}" > /mnt/etc/hostname
cat > /mnt/etc/hosts << EOF
127.0.0.1 localhost
::1 localhost
127.0.1.1 ${HOSTNAME_NEW}.localedomain ${HOSTNAME_NEW}
EOF
#echo "127.0.0.1 localhost" > /etc/hosts
#echo "::1 localhost" >> /etc/hosts
#echo "127.0.1.1 ${HOSTNAME_NEW}.localedomain ${HOSTNAME_NEW}" >> /etc/hosts
arch-chroot /mnt chpasswd <<< "root:${ROOTPASSWORD}"
#echo root:"${ROOTPASSWORD}" | chpasswd
pacstrap -i /mnt base-devel "${KERNEL}-headers"
pacstrap -i /mnt opendoas firewalld openssh bash-completion man-db man-pages reflector xdg-user-dirs lynx
#pacman -S iwd dialog reflector xdg-user-dirs xdg-utils inetutils ldns bash-completion openssh rsync iptables-nft ipset firewalld lynx man-db man-pages texinfo opendoas pacman-contrib rebuild-detector
pacstrap -i /mnt efibootmgr mtools dosfstools
if [[ "${GRAPHICS_CARD}" == "amd" ]]; then
pacstrap -i /mnt xf86-video-amdgpu
elif [[ "${GRAPHICS_CARD}" == "nvidia" ]]; then
pacstrap -i /mnt nvidia nvidia-utils nvidia-settings
fi
# GNOME installieren
#pacstrap -i /mnt gnome
gnome=("gdm" "gnome-backgrounds" "gnome-color-manager" "gnome-console" "gnome-control-center" "gnome-disk-utility" "gnome-keyring" "gnome-menus" "gnome-remote-desktop" "gnome-session" "gnome-settings-daemon" "gnome-shell" "gnome-system-monitor" "gnome-tour" "gnome-user-docs" "gnome-user-share" "grilo-plugins" "gvfs" "gvfs-afc" "gvfs-goa" "gvfs-google" "gvfs-gphoto2" "gvfs-mtp" "gvfs-nfs" "gvfs-smb" "malcontent" "nautilus" "orca" "rygel" "sushi" "xdg-desktop-portal-gnome" "xdg-user-dirs-gtk" "yelp")
#pacstrap -i /mnt
#pacstrap -i /mnt gnome-extra
gnome+=(seahorse)
#pacstrap -i /mnt seahorse
# Sonstiges
other=("avahi" "bluez" "bluez-utils" "pipewire" "pipewire-audio" "pipewire-alsa" "pipewire-pulse" "pipewire-jack" "pipewire-zeroconf" "pipewire-v4l2" "pipewire-docs" "pipewire-roc" "helvum" "wireplumber" "gstreamer" "gst-plugin-pipewire" "gst-libav" "gst-plugins-good" "gst-plugins-base" "xdg-desktop-portal-gnome" "networkmanager" "modemmanager" "networkmanager-openconnect" "networkmanager-openvpn" "networkmanager-pptp" "networkmanager-vpnc" "power-profiles-daemon" "plymouth" "libreoffice-fresh-de" "htop")
pacstrap -i /mnt "${gnome[@]}" "${other[@]}"
#iwd
#cat > /etc/NetworkManager/conf.d/wifi_backend.conf << EOF
#[device]
#wifi.backend=iwd
#EOF
#################################################################
sed -i 's/#\(CHARACTER_SET:\).*/\1utf-8/' /mnt/etc/lynx.cfg
sleep 2
# Tastatur layout auf Deutsch stellen
arch-chroot /mnt gsettings set org.gnome.desktop.input-sources source "[('xkb', 'de')]"
cat > /mnt/etc/xdg/reflector/reflector.conf << EOF
--save /etc/pacman.d/mirrorlist
--country Germany
--protocol https
--latest 5
EOF
cat > /mnt/etc/doas.conf << EOF
permit :wheel
permit persist eichehome as root
EOF
#echo "permit :wheel" > /etc/doas.conf
#echo "permit persist eichehome as root" >> /etc/doas.conf
#echo "" >> /etc/doas.conf
arch-chroot /mnt doas -C /etc/doas.conf && echo "config ok" || echo "config error"
sleep 2
mkdir -p /mnt/etc/systemd/resolved.conf.d
cat > /mnt/etc/systemd/resolved.conf.d/disable-multicastDNS.conf << EOF
[Resolve]
MulticastDNS=no
EOF
sleep 2
arch-chroot /mnt systemctl enable systemd-resolved
arch-chroot /mnt systemctl enable systemd-timesyncd
arch-chroot /mnt systemctl enable NetworkManager
arch-chroot /mnt systemctl enable reflector.timer
arch-chroot /mnt systemctl enable firewalld
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable gdm
arch-chroot /mnt systemctl enable avahi-daemon
arch-chroot /mnt systemctl enable bluetooth
if [[ "${GRAPHICS_CARD}" == "amd" ]]; then
sed -i 's/MODULES=()/MODULES=(amdgpu)/' /mnt/etc/mkinitcpio.conf #AMD
elif [[ "${GRAPHICS_CARD}" == "intel" ]]; then
sed -i 's/MODULES=()/MODULES=(i915)/' /mnt/etc/mkinitcpio.conf #Intel
elif [[ "${GRAPHICS_CARD}" == "nvidia" ]]; then
sed -i 's/MODULES=()/MODULES=(nvidia)/' /mnt/etc/mkinitcpio.conf #Nvidia
fi
sed -i 's/^HOOKS=(.*)/HOOKS=(base systemd keyboard plymouth autodetect sd-vconsole modconf kms block filesystems fsck)/' /mnt/etc/mkinitcpio.conf
arch-chroot /mnt mkinitcpio -p "${KERNEL}"
arch-chroot /mnt bootctl install
cat > /mnt/boot/loader/loader.conf << EOF
timeout 5
console-mode max
editor yes
default *
EOF
cat > /mnt/boot/loader/entries/arch.conf << EOF
title Arch Linux
version 0.1
linux /vmlinuz-${KERNEL}
initrd /${MICROCODE}.img
initrd /initramfs-${KERNEL}.img
options quiet rw
EOF
arch-chroot /mnt useradd -mG wheel "${USERNAME}"
arch-chroot /mnt chpasswd <<< "${USERNAME}:${USERPASSWORD}"
#echo "${USERNAME}:${USERPASSWORD}" | chpasswd
umount -R /mnt
exit 0