RaveOS-Gnome/releng/airootfs/usr/local/bin/base-install

367 lines
15 KiB
Bash
Executable file

#!/bin/bash
mv /usr/local/bin/progs/3progs.sh.desktop /etc/xdg/autostart/
rm -rf /usr/lib/calamares
rm -rf /usr/share/calamares
rm -rf /usr/include/libcalamares
rm -rf /usr/bin/calamares
rm -rf /etc/calamares
rm -rf /usr/share/applications/calamares.desktop
rm -rf /etc/xdg/autostart/calamares.desktop
ldconfig
# GPU detektálás
AMD_GPU=$(lspci -P | grep -iE "AMD|ATI" -c)
NVIDIA_GPU=$(lspci -P | grep "NVIDIA" -c)
# GPU driverek telepítése
if [[ $AMD_GPU -gt 0 ]]; then
echo "AMD GPU észlelve, driverek telepítése..."
pacman -S mesa vulkan-radeon lib32-vulkan-radeon lib32-mesa xf86-video-amdgpu --noconfirm
fi
if [[ $NVIDIA_GPU -gt 0 ]]; then
echo "NVIDIA GPU észlelve, driverek telepítése..."
pacman -S nvidia-dkms nvidia-utils nvidia-settings egl-wayland lib32-nvidia-utils --noconfirm
sed -i 's/MODULES=()/MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)/' /etc/mkinitcpio.conf
echo "options nvidia_drm modeset=1 fbdev=1" > /etc/modprobe.d/nvidia.conf
mkinitcpio -P
fi
# Boot loader telepítése
if [ -d "/sys/firmware/efi" ]; then
# UEFI rendszer
echo "UEFI rendszer észlelve, systemd-boot telepítése..."
# LUKS titkosítás ellenőrzése
ENCRYPTED=false
CRYPTDEVICE_UUID=""
CRYPTNAME="cryptroot"
# Ellenőrizzük, van-e titkosított partíció
if blkid -t TYPE=crypto_LUKS -o device | grep -q .; then
ENCRYPTED=true
LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1)
CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE")
echo "LUKS titkosítás észlelve: $LUKS_DEVICE (UUID: $CRYPTDEVICE_UUID)"
# A fájlrendszer típusának ellenőrzése
FS_TYPE=$(lsblk -no FSTYPE /dev/mapper/$CRYPTNAME 2>/dev/null || echo "")
if [ -z "$FS_TYPE" ]; then
# Ha még nincs megnyitva a titkosított eszköz, próbáljuk megnyitni
echo "Titkosított eszköz nyitása ellenőrzéshez..."
if [ ! -e "/dev/mapper/$CRYPTNAME" ]; then
# Próbáljuk meg kinyitni (jelszó nélkül nem fog működni, de megpróbáljuk)
cryptsetup open "$LUKS_DEVICE" "$CRYPTNAME" || true
fi
# Ellenőrizzük újra a fájlrendszert
FS_TYPE=$(lsblk -no FSTYPE /dev/mapper/$CRYPTNAME 2>/dev/null || echo "")
if [ -z "$FS_TYPE" ]; then
# Ha még mindig nem tudjuk meghatározni, feltételezzük, hogy ext4
echo "Nem sikerült meghatározni a fájlrendszer típusát, ext4-et feltételezünk"
FS_TYPE="ext4"
fi
fi
echo "Fájlrendszer típusa: $FS_TYPE"
# mkinitcpio.conf módosítása a szükséges modulokkal és hook-okkal
# Hozzáadjuk a dm-crypt és crypto modulokat
if ! grep -q "dm[-_]crypt" <<< "$(grep "^MODULES=" /etc/mkinitcpio.conf)"; then
echo "dm-crypt modul hozzáadása"
sed -i 's/MODULES=(/MODULES=(dm-crypt /' /etc/mkinitcpio.conf
fi
if ! grep -q "crypto" <<< "$(grep "^MODULES=" /etc/mkinitcpio.conf)"; then
echo "crypto modul hozzáadása"
sed -i 's/MODULES=(/MODULES=(crypto /' /etc/mkinitcpio.conf
fi
# Használjuk a systemd hookokat a jobb LUKS kezeléshez
if ! grep -q "sd-encrypt" <<< "$(grep "^HOOKS=" /etc/mkinitcpio.conf)"; then
echo "sd-encrypt hook hozzáadása"
sed -i 's/\(HOOKS=.*\)block/\1block sd-encrypt/' /etc/mkinitcpio.conf
fi
# Biztosítsuk, hogy keyboard és keymap is legyen
if ! grep -q "keyboard" <<< "$(grep "^HOOKS=" /etc/mkinitcpio.conf)"; then
echo "keyboard hook hozzáadása"
sed -i 's/\(HOOKS=.*\)block/\1keyboard block/' /etc/mkinitcpio.conf
fi
if ! grep -q "keymap" <<< "$(grep "^HOOKS=" /etc/mkinitcpio.conf)"; then
echo "keymap hook hozzáadása"
sed -i 's/\(HOOKS=.*keyboard\)/\1 keymap/' /etc/mkinitcpio.conf
fi
# Hozzunk létre egy crypttab fájlt a titkosított eszköz kezeléséhez
echo "$CRYPTNAME UUID=$CRYPTDEVICE_UUID none luks,discard" > /etc/crypttab
echo "Crypttab létrehozva: $CRYPTNAME UUID=$CRYPTDEVICE_UUID"
# Regeneráljuk az initramfs-t
echo "Initramfs újragenerálása..."
mkinitcpio -P
else
echo "Nem észleltünk LUKS titkosítást"
fi
# CPU microcode detect és a változó beállítása
CPU=$(lscpu | grep "AMD" -c)
if [[ $CPU -gt 0 ]]; then
CPU_UCODE="initrd /amd-ucode.img"
pacman -S amd-ucode --noconfirm
elif [[ $(lscpu | grep "Intel" -c) -gt 0 ]]; then
CPU_UCODE="initrd /intel-ucode.img"
pacman -S intel-ucode --noconfirm
else
CPU_UCODE=""
fi
# Root UUID lekérdezése
ROOT_UUID=$(awk '$2=="/" {print $1}' /etc/fstab | grep -o 'UUID=.*' | cut -d'=' -f2)
# Ellenőrizzük a btrfs subvolume-ot
if [ "$FS_TYPE" = "btrfs" ]; then
# Próbáljuk meg a findmnt segítségével meghatározni a subvolume-ot
SUBVOL=$(findmnt -n -o OPTIONS / 2>/dev/null | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
# Ha nem sikerült, próbáljuk az fstabot
if [ -z "$SUBVOL" ]; then
SUBVOL=$(grep -E '^[^#].+\s/\s' /etc/fstab | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
fi
# Ha még mindig nincs, használjuk az alapértelmezett értéket
if [ -z "$SUBVOL" ]; then
echo "Nem sikerült meghatározni a subvolume-ot, '@' vagy 'root' használata"
# Próbáljuk megtalálni, melyik subvolume létezik
if [ -d "/@" ] || grep -q "subvol=@" /etc/fstab; then
SUBVOL="@"
else
SUBVOL="root"
fi
fi
fi
# Systemd-boot konfiguráció
mkdir -p /boot/loader/entries
# Időtúllépés és editor beállítása
cat > /boot/loader/loader.conf << EOF
timeout 5
console-mode max
editor yes
EOF
# Konfigurációs bejegyzések létrehozása
if [ "$ENCRYPTED" = true ]; then
if [ "$FS_TYPE" = "btrfs" ]; then
echo "BTRFS esetén csak a sima (nem titkosított) mód támogatott"
# Nem kezeljük a BTRFS + LUKS kombinációt, áttérünk a nem titkosított btrfs kezelésre
# Ellenőrizzük a btrfs subvolume-ot
SUBVOL=$(findmnt -n -o OPTIONS / 2>/dev/null | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
if [ -z "$SUBVOL" ]; then
SUBVOL=$(grep -E '^[^#].+\s/\s' /etc/fstab | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
fi
if [ -z "$SUBVOL" ]; then
SUBVOL="@"
fi
# Normál btrfs konfiguráció létrehozása
cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS GNOME Gaming 1.0
linux /vmlinuz-linux-zen
$CPU_UCODE
initrd /initramfs-linux-zen.img
options root=UUID=$ROOT_UUID rootflags=subvol=$SUBVOL rw rootfstype=btrfs quiet
EOF
elif [ "$FS_TYPE" = "ext4" ]; then
echo "EXT4 + LUKS konfiguráció létrehozása"
cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS GNOME Gaming 1.0 - LUKS+EXT4
linux /vmlinuz-linux-zen
$CPU_UCODE
initrd /initramfs-linux-zen.img
options cryptdevice=UUID=$CRYPTDEVICE_UUID:$CRYPTNAME root=/dev/mapper/$CRYPTNAME rw rootfstype=ext4 quiet
EOF
else
# Egyéb fájlrendszer + LUKS
cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS GNOME Gaming 1.0 - LUKS
linux /vmlinuz-linux-zen
$CPU_UCODE
initrd /initramfs-linux-zen.img
options cryptdevice=UUID=$CRYPTDEVICE_UUID:$CRYPTNAME root=/dev/mapper/$CRYPTNAME rw quiet
EOF
fi
# Az alapértelmezett bejegyzés beállítása
cat > /boot/loader/loader.conf << EOF
default raveos.conf
timeout 5
console-mode max
editor yes
EOF
else
# Nem titkosított rendszer esetén
if [ "$FS_TYPE" = "btrfs" ]; then
echo "BTRFS konfiguráció létrehozása (nem titkosított)"
# Ellenőrizzük a btrfs subvolume-ot
SUBVOL=$(findmnt -n -o OPTIONS / 2>/dev/null | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
if [ -z "$SUBVOL" ]; then
SUBVOL=$(grep -E '^[^#].+\s/\s' /etc/fstab | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
fi
if [ -z "$SUBVOL" ]; then
SUBVOL="@"
fi
cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS GNOME Gaming 1.0
linux /vmlinuz-linux-zen
$CPU_UCODE
initrd /initramfs-linux-zen.img
options root=UUID=$ROOT_UUID rootflags=subvol=$SUBVOL rw rootfstype=btrfs quiet
EOF
else
echo "Alapértelmezett konfiguráció létrehozása (nem titkosított)"
cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS GNOME Gaming 1.0
linux /vmlinuz-linux-zen
$CPU_UCODE
initrd /initramfs-linux-zen.img
options root=UUID=$ROOT_UUID rw quiet
EOF
fi
# Az alapértelmezett bejegyzés beállítása
cat > /boot/loader/loader.conf << EOF
default raveos.conf
timeout 5
console-mode max
editor yes
EOF
fi
# EFI partíció és a partíció száma
EFI_DISK=$(findmnt -n -o SOURCE /boot | sed 's/[0-9]*$//')
EFI_PART=$(findmnt -n -o SOURCE /boot | grep -o '[0-9]*$')
# Bootentry létrehozása
echo "Bootentry létrehozása az EFI firmware-ben: $EFI_DISK, partíció: $EFI_PART"
efibootmgr --create --disk "$EFI_DISK" --part "$EFI_PART" \
--loader /EFI/systemd/systemd-bootx64.efi --label "RaveOS GNOME Gaming" \
--verbose
echo "Systemd-boot telepítése sikeres"
else
# BIOS rendszer
echo "BIOS rendszer észlelve, GRUB telepítése..."
# LUKS titkosítás ellenőrzése
LUKS_DEVICE=""
CRYPTDEVICE_UUID=""
CRYPTNAME="cryptroot"
if blkid -t TYPE=crypto_LUKS -o device | grep -q .; then
LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1)
CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE")
echo "LUKS titkosítás észlelve: $LUKS_DEVICE (UUID: $CRYPTDEVICE_UUID)"
# A fájlrendszer típusának ellenőrzése
FS_TYPE=$(lsblk -no FSTYPE /dev/mapper/$CRYPTNAME 2>/dev/null || echo "")
if [ -z "$FS_TYPE" ]; then
# Ha még nincs megnyitva a titkosított eszköz, feltételezzük, hogy btrfs
echo "Nem sikerült meghatározni a fájlrendszer típusát, btrfs-t feltételezünk"
FS_TYPE="btrfs"
fi
echo "Fájlrendszer típusa: $FS_TYPE"
# Modulok és hook-ok hozzáadása a mkinitcpio.conf-hoz
if [ "$FS_TYPE" = "btrfs" ] && ! grep -q "btrfs" <<< "$(grep "^MODULES=" /etc/mkinitcpio.conf)"; then
echo "BTRFS modul hozzáadása"
sed -i 's/MODULES=(/MODULES=(btrfs /' /etc/mkinitcpio.conf
fi
if ! grep -q "dm[-_]crypt" <<< "$(grep "^MODULES=" /etc/mkinitcpio.conf)"; then
echo "dm-crypt modul hozzáadása"
sed -i 's/MODULES=(/MODULES=(dm-crypt /' /etc/mkinitcpio.conf
fi
if ! grep -q "crypto" <<< "$(grep "^MODULES=" /etc/mkinitcpio.conf)"; then
echo "crypto modul hozzáadása"
sed -i 's/MODULES=(/MODULES=(crypto /' /etc/mkinitcpio.conf
fi
# Használjuk a hagyományos encrypt hookot GRUB esetén
if ! grep -q "encrypt" <<< "$(grep "^HOOKS=" /etc/mkinitcpio.conf)"; then
echo "encrypt hook hozzáadása"
sed -i 's/\(HOOKS=.*\)block/\1block encrypt/' /etc/mkinitcpio.conf
fi
# Biztosítsuk, hogy keyboard és keymap is legyen
if ! grep -q "keyboard" <<< "$(grep "^HOOKS=" /etc/mkinitcpio.conf)"; then
echo "keyboard hook hozzáadása"
sed -i 's/\(HOOKS=.*\)block/\1keyboard block/' /etc/mkinitcpio.conf
fi
if ! grep -q "keymap" <<< "$(grep "^HOOKS=" /etc/mkinitcpio.conf)"; then
echo "keymap hook hozzáadása"
sed -i 's/\(HOOKS=.*keyboard\)/\1 keymap/' /etc/mkinitcpio.conf
fi
# Crypttab létrehozása
echo "$CRYPTNAME UUID=$CRYPTDEVICE_UUID none luks,discard" > /etc/crypttab
echo "Crypttab létrehozva: $CRYPTNAME UUID=$CRYPTDEVICE_UUID"
# Regeneráljuk az initramfs-t
echo "Initramfs újragenerálása..."
mkinitcpio -P
# GRUB konfiguráció módosítása
if [ "$FS_TYPE" = "btrfs" ]; then
# Ellenőrizzük a btrfs subvolume-ot
SUBVOL=$(findmnt -n -o OPTIONS / 2>/dev/null | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
# Ha nem sikerült, próbáljuk az fstabot
if [ -z "$SUBVOL" ]; then
SUBVOL=$(grep -E '^[^#].+\s/\s' /etc/fstab | grep -o 'subvol=[^ ,]*' | cut -d'=' -f2 || echo "")
fi
# Ha még mindig nincs, használjuk az alapértelmezett értéket
if [ -z "$SUBVOL" ]; then
echo "Nem sikerült meghatározni a subvolume-ot, '@' vagy 'root' használata"
if [ -d "/@ " ] || grep -q "subvol=@" /etc/fstab; then
SUBVOL="@"
else
SUBVOL="root"
fi
fi
# BTRFS esetén rd.luks formátumot használunk
echo "GRUB konfiguráció frissítése BTRFS+LUKS beállításokkal"
sed -i "s|^GRUB_CMDLINE_LINUX=\"\"|GRUB_CMDLINE_LINUX=\"rd.luks.name=$CRYPTDEVICE_UUID=$CRYPTNAME root=/dev/mapper/$CRYPTNAME rootflags=subvol=$SUBVOL rd.luks.options=discard rootfstype=btrfs\"|" /etc/default/grub
else
# EXT4 vagy más fájlrendszer esetén a hagyományos cryptdevice formátumot használjuk
echo "GRUB konfiguráció frissítése alapértelmezett LUKS beállításokkal"
sed -i "s|^GRUB_CMDLINE_LINUX=\"\"|GRUB_CMDLINE_LINUX=\"cryptdevice=UUID=$CRYPTDEVICE_UUID:$CRYPTNAME root=/dev/mapper/$CRYPTNAME\"|" /etc/default/grub
fi
fi
# GRUB telepítése és konfiguráció generálása
echo "GRUB telepítése..."
pacman -S grub --noconfirm
grub-install --target=i386-pc --recheck /dev/sda
sed -i 's/GRUB_DISTRIBUTOR=.*$/GRUB_DISTRIBUTOR="RaveOS GNOME Gaming Linux"/' /etc/default/grub
# GRUB konfiguráció generálása
echo "GRUB konfiguráció generálása..."
grub-mkconfig -o /boot/grub/grub.cfg
echo "GRUB telepítése sikeres"
fi
# Calamares eltávolítása
echo "Calamares eltávolítása..."
pacman -Rs calamares --noconfirm
echo "Telepítés befejezve!"