diff --git a/04-grub.sh b/04-grub.sh index 7f77a6d..f79d27a 100755 --- a/04-grub.sh +++ b/04-grub.sh @@ -4,30 +4,77 @@ GRUB_CFG="/etc/default/grub" GRUB_TIMEOUT=0 GRUB_TIMEOUT_STYLE=hidden -GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=1 usbcore.autosuspend=-1 vt.global_cursor_default=0 loglevel=3 rd.luks.options=discard plymouth.ignore-serial-consoles threadirqs" +GRUB_CMDLINE_LINUX_DEFAULT_BASE="quiet splash apparmor=1 usbcore.autosuspend=-1 vt.global_cursor_default=0 loglevel=3 rd.luks.options=discard plymouth.ignore-serial-consoles threadirqs" GRUB_CMDLINE_LINUX="rcutree.rcu_idle_gp_delay=1" GRUB_THEME_DIR="/usr/share/debian-gaming/grub/grub2-themes" +# CPU-Treiber automatisch erkennen und hinzufügen +CPU_VENDOR=$(lscpu | grep -oP 'Vendor ID:\s*\K.*' | tr -d ' ') +CPU_MODEL=$(lscpu | grep -oP 'Model name:\s*\K.*' | head -c 20) + +echo "Erkannte CPU: $CPU_MODEL ($CPU_VENDOR)" + +case "$CPU_VENDOR" in + "AuthenticAMD") + CPU_PARAM="amd_pstate=active" + echo "AMD CPU erkannt → amd_pstate=active wird hinzugefügt" + ;; + "GenuineIntel") + CPU_PARAM="intel_pstate=active" + echo "Intel CPU erkannt → intel_pstate=active wird hinzugefügt" + ;; + *) + CPU_PARAM="" + echo "⚠️ Unbekannter CPU-Hersteller ($CPU_VENDOR) – kein pstate-Parameter" + ;; +esac + +# CPU-Parameter anhängen, falls vorhanden +if [ -n "$CPU_PARAM" ]; then + # Prüfen ob Parameter bereits existiert (idempotent machen) + if ! echo "$GRUB_CMDLINE_LINUX_DEFAULT_BASE" | grep -q "amd_pstate\|intel_pstate"; then + GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT_BASE $CPU_PARAM" + fi +else + GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT_BASE" +fi + +# Root-Check if [ "$(id -u)" -ne 0 ]; then - echo "❌ The Script has to be run as root!" + echo "❌ Das Script muss als root ausgeführt werden!" exit 1 fi +# Backup erstellen cp "$GRUB_CFG" "$GRUB_CFG.bak" +echo "✅ Backup erstellt: $GRUB_CFG.bak" +# GRUB-Parameter setzen (sed mit Exit-Code-Handling für nicht-existente Keys) sed -i "s|^GRUB_TIMEOUT=.*|GRUB_TIMEOUT=$GRUB_TIMEOUT|" "$GRUB_CFG" sed -i "s|^GRUB_TIMEOUT_STYLE=.*|GRUB_TIMEOUT_STYLE=$GRUB_TIMEOUT_STYLE|" "$GRUB_CFG" sed -i "s|^GRUB_CMDLINE_LINUX_DEFAULT=.*|GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE_LINUX_DEFAULT\"|" "$GRUB_CFG" sed -i "s|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX\"|" "$GRUB_CFG" +# Falls Parameter nicht existierten, nachhaken (falls sed nichts geändert hat) grep -q '^GRUB_TIMEOUT=' "$GRUB_CFG" || echo "GRUB_TIMEOUT=$GRUB_TIMEOUT" >> "$GRUB_CFG" grep -q '^GRUB_TIMEOUT_STYLE=' "$GRUB_CFG" || echo "GRUB_TIMEOUT_STYLE=$GRUB_TIMEOUT_STYLE" >> "$GRUB_CFG" grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=' "$GRUB_CFG" || echo "GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE_LINUX_DEFAULT\"" >> "$GRUB_CFG" grep -q '^GRUB_CMDLINE_LINUX=' "$GRUB_CFG" || echo "GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX\"" >> "$GRUB_CFG" +# GRUB-Theme installieren mkdir -p "$GRUB_THEME_DIR" -git clone https://github.com/vinceliuice/grub2-themes.git "$GRUB_THEME_DIR" -"$GRUB_THEME_DIR/install.sh" -b -t vimix +if [ ! -d "$GRUB_THEME_DIR/.git" ]; then + git clone https://github.com/vinceliuice/grub2-themes.git "$GRUB_THEME_DIR" + "$GRUB_THEME_DIR/install.sh" -b -t vimix +else + echo "✅ Theme bereits installiert, wird aktualisiert..." + cd "$GRUB_THEME_DIR" && git pull + "./install.sh" -b -t vimix +fi +# GRUB aktualisieren sudo update-grub + +echo "✅ GRUB-Konfiguration aktualisiert!" +echo "📝 Neue Kernel-Parameter: $GRUB_CMDLINE_LINUX_DEFAULT" \ No newline at end of file