From 139f09f83cdace4f68be964120927fcaea653154 Mon Sep 17 00:00:00 2001 From: airmancooma Date: Fri, 28 Mar 2025 17:59:03 +0100 Subject: [PATCH] =?UTF-8?q?base-install=20script=20jav=C3=ADtva?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- releng/airootfs/usr/local/bin/base-install | 163 +++++++++++++++++++-- 1 file changed, 149 insertions(+), 14 deletions(-) diff --git a/releng/airootfs/usr/local/bin/base-install b/releng/airootfs/usr/local/bin/base-install index dc77a5e..0b6a428 100755 --- a/releng/airootfs/usr/local/bin/base-install +++ b/releng/airootfs/usr/local/bin/base-install @@ -29,15 +29,20 @@ if [ -d "/sys/firmware/efi" ]; then echo "UEFI rendszer észlelve, systemd-boot telepítése..." # LUKS titkosítás ellenőrzése + ROOT_DEVICE=$(findmnt -n -o SOURCE /) 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 + if [[ "$ROOT_DEVICE" == "/dev/mapper/"* ]]; then ENCRYPTED=true - LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1) - CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE") + #LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1) + #CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE") + + LUKS_DEVICE="/dev/$(sudo dmsetup deps -o devname cryptroot | grep -o '(.*)'| tr -d '()')" + CRYPTDEVICE_UUID=$(echo "$ROOT_DEVICE" | sed 's|/dev/mapper/luks-||') + echo "LUKS titkosítás észlelve: $LUKS_DEVICE (UUID: $CRYPTDEVICE_UUID)" # A fájlrendszer típusának ellenőrzése @@ -111,10 +116,10 @@ if [ -d "/sys/firmware/efi" ]; then CPU=$(lscpu | grep "AMD" -c) if [[ $CPU -gt 0 ]]; then CPU_UCODE="initrd /amd-ucode.img" - pacman -S amd-ucode --noconfirm + pacman -Rs intel-ucode --noconfirm elif [[ $(lscpu | grep "Intel" -c) -gt 0 ]]; then CPU_UCODE="initrd /intel-ucode.img" - pacman -S intel-ucode --noconfirm + pacman -Rs amd-ucode --noconfirm else CPU_UCODE="" fi @@ -137,7 +142,7 @@ EOF # Nem kezeljük a BTRFS + LUKS kombinációt, áttérünk a nem titkosított btrfs kezelésre cat > /boot/loader/entries/raveos.conf << EOF -title RaveOS KDE Gaming Beta +title RaveOS GNOME Gaming 1.0 linux /vmlinuz-linux-zen $CPU_UCODE initrd /initramfs-linux-zen.img @@ -147,7 +152,7 @@ EOF # Ez csak ext4 vagy más fájlrendszer + LUKS esetén fut le echo "EXT4 + LUKS konfiguráció létrehozása" cat > /boot/loader/entries/raveos.conf << EOF -title RaveOS KDE Gaming Beta - LUKS+EXT4 +title RaveOS GNOME Gaming 1.0 - LUKS+EXT4 linux /vmlinuz-linux-zen $CPU_UCODE initrd /initramfs-linux-zen.img @@ -159,7 +164,7 @@ EOF if [ "$FS_TYPE" = "btrfs" ]; then echo "BTRFS konfiguráció létrehozása (nem titkosított)" cat > /boot/loader/entries/raveos.conf << EOF -title RaveOS KDE Gaming Beta +title RaveOS GNOME Gaming 1.0 linux /vmlinuz-linux-zen $CPU_UCODE initrd /initramfs-linux-zen.img @@ -168,7 +173,7 @@ EOF else echo "Alapértelmezett konfiguráció létrehozása (nem titkosított)" cat > /boot/loader/entries/raveos.conf << EOF -title RaveOS KDE Gaming Beta +title RaveOS GNOME Gaming 1.0 linux /vmlinuz-linux-zen $CPU_UCODE initrd /initramfs-linux-zen.img @@ -184,7 +189,7 @@ EOF # 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 KDE Gaming" \ + --loader /EFI/systemd/systemd-bootx64.efi --label "RaveOS GNOME Gaming" \ --verbose echo "Systemd-boot telepítése sikeres" @@ -193,13 +198,18 @@ else echo "BIOS rendszer észlelve, GRUB telepítése..." # LUKS titkosítás ellenőrzése + ROOT_DEVICE=$(findmnt -n -o SOURCE /) 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") + if [[ "$ROOT_DEVICE" == "/dev/mapper/"* ]]; then + #LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1) + #CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE") + + LUKS_DEVICE="/dev/$(sudo dmsetup deps -o devname cryptroot | grep -o '(.*)'| tr -d '()')" + CRYPTDEVICE_UUID=$(echo "$ROOT_DEVICE" | sed 's|/dev/mapper/luks-||') + echo "LUKS titkosítás észlelve: $LUKS_DEVICE (UUID: $CRYPTDEVICE_UUID)" # A fájlrendszer típusának ellenőrzése @@ -269,7 +279,7 @@ else 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 KDE Gaming Linux"/' /etc/default/grub + 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..." @@ -278,6 +288,131 @@ else echo "GRUB telepítése sikeres" fi +# /boot ellenőrzés és javítás függvény +check_boot_directory() { + echo "A /boot mappa tartalmának ellenőrzése..." + + # Ellenőrizzük, hogy a /boot mappa tartalmazza-e a szükséges fájlokat + if [ -z "$(ls -A /boot)" ] || ! ls /boot/vmlinuz-linux-zen &> /dev/null || ! ls /boot/initramfs-linux-zen.img &> /dev/null; then + echo "HIBA: A /boot mappa üres vagy hiányoznak a kernel fájlok!" + + # Ellenőrizzük, hogy a fájlok léteznek-e a rendszeren + if [ -f /usr/lib/modules/*/vmlinuz ]; then + echo "Kernel fájl megtalálva, másolás a /boot mappába..." + cp /usr/lib/modules/*/vmlinuz /boot/vmlinuz-linux-zen + else + echo "KRITIKUS HIBA: Kernel fájl nem található a rendszeren!" + echo "Próbáljuk telepíteni a linux-zen csomagot..." + pacman -S linux-zen --noconfirm + fi + + # Regeneráljuk a initramfs-t, ha szükséges + echo "Initramfs újragenerálása..." + mkinitcpio -p linux-zen + + # Ellenőrizzük, hogy a CPU microcode telepítve van-e + if [ -f /boot/amd-ucode.img ] || [ -f /boot/intel-ucode.img ]; then + echo "CPU microcode már telepítve." + else + # Ha nincs, akkor telepítsük újra a megfelelőt + if [[ $(lscpu | grep "AMD" -c) -gt 0 ]]; then + echo "AMD CPU észlelve, microcode telepítése..." + pacman -S amd-ucode --noconfirm + elif [[ $(lscpu | grep "Intel" -c) -gt 0 ]]; then + echo "Intel CPU észlelve, microcode telepítése..." + pacman -S intel-ucode --noconfirm + fi + fi + + # UEFI esetén próbáljuk újratelepíteni a bootloader-t + if [ -d "/sys/firmware/efi" ]; then + echo "UEFI rendszer, systemd-boot újratelepítése..." + bootctl install + + # Ellenőrizzük, hogy a kernelt és initramfs-t kimásoltuk-e + if [ ! -f /boot/vmlinuz-linux-zen ]; then + echo "Kernel másolása a /boot mappába..." + find /usr/lib/modules/ -name "vmlinuz*" -exec cp {} /boot/vmlinuz-linux-zen \; + fi + + if [ ! -f /boot/initramfs-linux-zen.img ]; then + echo "Initramfs újragenerálása..." + mkinitcpio -p linux-zen + fi + + # EFI partíció ellenőrzése + EFI_PART=$(findmnt -n -o SOURCE /boot) + if [ -z "$EFI_PART" ]; then + echo "KRITIKUS HIBA: EFI partíció nem található!" + echo "Próbáljuk megkeresni a megfelelő EFI partíciót..." + + # Keressük az EFI partíciót, ha nincs csatolva + EFI_PART=$(lsblk -o NAME,FSTYPE | grep vfat | head -n1 | awk '{print $1}') + + if [ -n "$EFI_PART" ]; then + echo "EFI partíció található: $EFI_PART, csatolás a /boot könyvtárhoz..." + mount /dev/$EFI_PART /boot + + # Újra próbáljuk a bootloader telepítését + bootctl install + + # A fstab bejegyzést is frissítsük, hogy újraindításkor is megmaradjon + if ! grep -q "/boot" /etc/fstab; then + UUID=$(blkid -s UUID -o value /dev/$EFI_PART) + echo "UUID=$UUID /boot vfat defaults 0 2" >> /etc/fstab + fi + fi + fi + fi + + # Ellenőrizzük újra, hogy minden szükséges fájl megvan-e + if [ -z "$(ls -A /boot)" ] || ! ls /boot/vmlinuz-linux-zen &> /dev/null || ! ls /boot/initramfs-linux-zen.img &> /dev/null; then + echo "KRITIKUS HIBA: Nem sikerült helyreállítani a /boot mappát!" + return 1 + else + echo "A /boot mappa sikeresen helyreállítva." + fi + else + echo "A /boot mappa rendben van." + fi + + return 0 +} + +echo "CPU microcode külön ellenőrzése és telepítése..." +if [[ $(lscpu | grep "AMD" -c) -gt 0 ]]; then + echo "AMD CPU észlelve, microcode telepítése és ellenőrzése..." + pacman -S amd-ucode --noconfirm + # Ellenőrizzük, hogy az ucode fájl létezik-e a /boot mappában + if [ ! -f /boot/amd-ucode.img ]; then + echo "amd-ucode.img másolása a /boot mappába..." + cp /usr/lib/firmware/amd-ucode.img /boot/ 2>/dev/null || echo "FIGYELEM: Nem sikerült az amd-ucode.img másolása" + # Ha nem sikerült másolni, próbáljuk újratelepíteni + if [ ! -f /boot/amd-ucode.img ]; then + echo "amd-ucode újratelepítése és másolása a /boot mappába..." + pacman -S amd-ucode --noconfirm + cp /usr/lib/firmware/amd-ucode.img /boot/ 2>/dev/null || echo "HIBA: Nem sikerült az amd-ucode.img másolása" + fi + fi +elif [[ $(lscpu | grep "Intel" -c) -gt 0 ]]; then + echo "Intel CPU észlelve, microcode telepítése és ellenőrzése..." + pacman -S intel-ucode --noconfirm + # Ellenőrizzük, hogy az ucode fájl létezik-e a /boot mappában + if [ ! -f /boot/intel-ucode.img ]; then + echo "intel-ucode.img másolása a /boot mappába..." + cp /usr/lib/firmware/intel-ucode.img /boot/ 2>/dev/null || echo "FIGYELEM: Nem sikerült az intel-ucode.img másolása" + # Ha nem sikerült másolni, próbáljuk újratelepíteni + if [ ! -f /boot/intel-ucode.img ]; then + echo "intel-ucode újratelepítése és másolása a /boot mappába..." + pacman -S intel-ucode --noconfirm + cp /usr/lib/firmware/intel-ucode.img /boot/ 2>/dev/null || echo "HIBA: Nem sikerült az intel-ucode.img másolása" + fi + fi +fi + +# Hívjuk meg az ellenőrző függvényt a bootloader telepítése után +check_boot_directory || echo "FIGYELMEZTETÉS: A /boot helyreállítása sikertelen. A rendszer talán nem tud majd elindulni." + # Calamares eltávolítása echo "Calamares eltávolítása..." pacman -Rs calamares --noconfirm