base-install script javítva

This commit is contained in:
airmancooma 2025-03-28 17:59:03 +01:00
parent 50504e9e60
commit 139f09f83c

View file

@ -29,15 +29,20 @@ if [ -d "/sys/firmware/efi" ]; then
echo "UEFI rendszer észlelve, systemd-boot telepítése..." echo "UEFI rendszer észlelve, systemd-boot telepítése..."
# LUKS titkosítás ellenőrzése # LUKS titkosítás ellenőrzése
ROOT_DEVICE=$(findmnt -n -o SOURCE /)
ENCRYPTED=false ENCRYPTED=false
CRYPTDEVICE_UUID="" CRYPTDEVICE_UUID=""
CRYPTNAME="cryptroot" CRYPTNAME="cryptroot"
# Ellenőrizzük, van-e titkosított partíció # 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 ENCRYPTED=true
LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1) #LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1)
CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE") #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)" echo "LUKS titkosítás észlelve: $LUKS_DEVICE (UUID: $CRYPTDEVICE_UUID)"
# A fájlrendszer típusának ellenőrzése # A fájlrendszer típusának ellenőrzése
@ -111,10 +116,10 @@ if [ -d "/sys/firmware/efi" ]; then
CPU=$(lscpu | grep "AMD" -c) CPU=$(lscpu | grep "AMD" -c)
if [[ $CPU -gt 0 ]]; then if [[ $CPU -gt 0 ]]; then
CPU_UCODE="initrd /amd-ucode.img" CPU_UCODE="initrd /amd-ucode.img"
pacman -S amd-ucode --noconfirm pacman -Rs intel-ucode --noconfirm
elif [[ $(lscpu | grep "Intel" -c) -gt 0 ]]; then elif [[ $(lscpu | grep "Intel" -c) -gt 0 ]]; then
CPU_UCODE="initrd /intel-ucode.img" CPU_UCODE="initrd /intel-ucode.img"
pacman -S intel-ucode --noconfirm pacman -Rs amd-ucode --noconfirm
else else
CPU_UCODE="" CPU_UCODE=""
fi 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 # 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 cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS KDE Gaming Beta title RaveOS GNOME Gaming 1.0
linux /vmlinuz-linux-zen linux /vmlinuz-linux-zen
$CPU_UCODE $CPU_UCODE
initrd /initramfs-linux-zen.img initrd /initramfs-linux-zen.img
@ -147,7 +152,7 @@ EOF
# Ez csak ext4 vagy más fájlrendszer + LUKS esetén fut le # Ez csak ext4 vagy más fájlrendszer + LUKS esetén fut le
echo "EXT4 + LUKS konfiguráció létrehozása" echo "EXT4 + LUKS konfiguráció létrehozása"
cat > /boot/loader/entries/raveos.conf << EOF 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 linux /vmlinuz-linux-zen
$CPU_UCODE $CPU_UCODE
initrd /initramfs-linux-zen.img initrd /initramfs-linux-zen.img
@ -159,7 +164,7 @@ EOF
if [ "$FS_TYPE" = "btrfs" ]; then if [ "$FS_TYPE" = "btrfs" ]; then
echo "BTRFS konfiguráció létrehozása (nem titkosított)" echo "BTRFS konfiguráció létrehozása (nem titkosított)"
cat > /boot/loader/entries/raveos.conf << EOF cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS KDE Gaming Beta title RaveOS GNOME Gaming 1.0
linux /vmlinuz-linux-zen linux /vmlinuz-linux-zen
$CPU_UCODE $CPU_UCODE
initrd /initramfs-linux-zen.img initrd /initramfs-linux-zen.img
@ -168,7 +173,7 @@ EOF
else else
echo "Alapértelmezett konfiguráció létrehozása (nem titkosított)" echo "Alapértelmezett konfiguráció létrehozása (nem titkosított)"
cat > /boot/loader/entries/raveos.conf << EOF cat > /boot/loader/entries/raveos.conf << EOF
title RaveOS KDE Gaming Beta title RaveOS GNOME Gaming 1.0
linux /vmlinuz-linux-zen linux /vmlinuz-linux-zen
$CPU_UCODE $CPU_UCODE
initrd /initramfs-linux-zen.img initrd /initramfs-linux-zen.img
@ -184,7 +189,7 @@ EOF
# Bootentry létrehozása # Bootentry létrehozása
echo "Bootentry létrehozása az EFI firmware-ben: $EFI_DISK, partíció: $EFI_PART" echo "Bootentry létrehozása az EFI firmware-ben: $EFI_DISK, partíció: $EFI_PART"
efibootmgr --create --disk "$EFI_DISK" --part "$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 --verbose
echo "Systemd-boot telepítése sikeres" echo "Systemd-boot telepítése sikeres"
@ -193,13 +198,18 @@ else
echo "BIOS rendszer észlelve, GRUB telepítése..." echo "BIOS rendszer észlelve, GRUB telepítése..."
# LUKS titkosítás ellenőrzése # LUKS titkosítás ellenőrzése
ROOT_DEVICE=$(findmnt -n -o SOURCE /)
LUKS_DEVICE="" LUKS_DEVICE=""
CRYPTDEVICE_UUID="" CRYPTDEVICE_UUID=""
CRYPTNAME="cryptroot" CRYPTNAME="cryptroot"
if blkid -t TYPE=crypto_LUKS -o device | grep -q .; then if [[ "$ROOT_DEVICE" == "/dev/mapper/"* ]]; then
LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1) #LUKS_DEVICE=$(blkid -t TYPE=crypto_LUKS -o device | head -n1)
CRYPTDEVICE_UUID=$(blkid -o value -s UUID "$LUKS_DEVICE") #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)" echo "LUKS titkosítás észlelve: $LUKS_DEVICE (UUID: $CRYPTDEVICE_UUID)"
# A fájlrendszer típusának ellenőrzése # A fájlrendszer típusának ellenőrzése
@ -269,7 +279,7 @@ else
echo "GRUB telepítése..." echo "GRUB telepítése..."
pacman -S grub --noconfirm pacman -S grub --noconfirm
grub-install --target=i386-pc --recheck /dev/sda 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 # GRUB konfiguráció generálása
echo "GRUB konfiguráció generálása..." echo "GRUB konfiguráció generálása..."
@ -278,6 +288,131 @@ else
echo "GRUB telepítése sikeres" echo "GRUB telepítése sikeres"
fi 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 # Calamares eltávolítása
echo "Calamares eltávolítása..." echo "Calamares eltávolítása..."
pacman -Rs calamares --noconfirm pacman -Rs calamares --noconfirm