Add CPU vendor detection and dynamic kernel parameter updates
Implement logic to detect CPU vendor (Intel/AMD) and append appropriate pstate parameters to GRUB configuration. Improve localization, enhance idempotency when setting parameters, and include backup creation and theme update handling.
This commit is contained in:
+49
-2
@@ -4,30 +4,77 @@ GRUB_CFG="/etc/default/grub"
|
|||||||
|
|
||||||
GRUB_TIMEOUT=0
|
GRUB_TIMEOUT=0
|
||||||
GRUB_TIMEOUT_STYLE=hidden
|
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_CMDLINE_LINUX="rcutree.rcu_idle_gp_delay=1"
|
||||||
|
|
||||||
GRUB_THEME_DIR="/usr/share/debian-gaming/grub/grub2-themes"
|
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
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Backup erstellen
|
||||||
cp "$GRUB_CFG" "$GRUB_CFG.bak"
|
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=.*|GRUB_TIMEOUT=$GRUB_TIMEOUT|" "$GRUB_CFG"
|
||||||
sed -i "s|^GRUB_TIMEOUT_STYLE=.*|GRUB_TIMEOUT_STYLE=$GRUB_TIMEOUT_STYLE|" "$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_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"
|
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=' "$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_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_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"
|
grep -q '^GRUB_CMDLINE_LINUX=' "$GRUB_CFG" || echo "GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX\"" >> "$GRUB_CFG"
|
||||||
|
|
||||||
|
# GRUB-Theme installieren
|
||||||
mkdir -p "$GRUB_THEME_DIR"
|
mkdir -p "$GRUB_THEME_DIR"
|
||||||
|
if [ ! -d "$GRUB_THEME_DIR/.git" ]; then
|
||||||
git clone https://github.com/vinceliuice/grub2-themes.git "$GRUB_THEME_DIR"
|
git clone https://github.com/vinceliuice/grub2-themes.git "$GRUB_THEME_DIR"
|
||||||
"$GRUB_THEME_DIR/install.sh" -b -t vimix
|
"$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
|
sudo update-grub
|
||||||
|
|
||||||
|
echo "✅ GRUB-Konfiguration aktualisiert!"
|
||||||
|
echo "📝 Neue Kernel-Parameter: $GRUB_CMDLINE_LINUX_DEFAULT"
|
||||||
Reference in New Issue
Block a user