#!/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!"