Files
shell_boot-to-windows/boot-to-windows.sh
2025-02-20 20:49:49 +01:00

79 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# Überprüfen, ob das Skript mit Root-Rechten läuft
if [ "$EUID" -ne 0 ]; then
# Root Rechte anfordern und neu starten
exec sudo "$0" "$@"
fi
# Ermitteln, ob grub oder grub2 verwendet wird
if [[ -d "/boot/grub2" ]]; then
GRUB_DIR="/boot/grub2"
GRUB_CFG="/boot/grub2/grub.cfg" # Setze den richtigen Pfad zu grub.cfg
GRUB_VERSION="grub2" # Setze die Version auf grub2
elif [[ -d "/boot/grub" ]]; then
GRUB_DIR="/boot/grub"
GRUB_CFG="/boot/grub/grub.cfg" # Setze den richtigen Pfad zu grub.cfg
GRUB_VERSION="grub" # Setze die Version auf grub
else
echo "Weder grub noch grub2-Konfigurationsordner gefunden!"
exit 1
fi
# Überprüfen, ob die GRUB-Konfigurationsdatei existiert
if [[ ! -f "$GRUB_CFG" ]]; then
echo "GRUB-Konfigurationsdatei nicht gefunden!"
exit 1
fi
# Suche nach dem Windows Boot Manager Eintrag und bereinige den Eintrag
WINDOWS_ENTRY=$(grep -i "menuentry 'Windows Boot Manager" "$GRUB_CFG" | head -n 1 | sed "s/^menuentry '//" | sed "s/'$//" | cut -d"'" -f1)
# Überprüfen, ob der Eintrag gefunden wurde
if [[ -z "$WINDOWS_ENTRY" ]]; then
echo "Windows Boot Manager nicht gefunden!"
exit 1
fi
# Gebe den gefundenen Eintrag aus
echo "Gefundener Windows-Eintrag: $WINDOWS_ENTRY"
# Erste Abfrage: Soll beim nächsten Start nach Windows gebootet werden?
while true; do
read -p "Soll beim nächsten Start nach Windows gebootet werden? [Y/N] " user_input
user_input=${user_input:-Y} # Wenn leer (Enter), dann "Y" als Default-Wert
if [[ "$user_input" =~ ^[Yy]$ ]]; then
if [[ "$GRUB_VERSION" == "grub" ]]; then
# Für GRUB (grub1) verwenden wir grub-reboot
sudo grub-reboot "$WINDOWS_ENTRY"
echo "GRUB wird beim nächsten Neustart in die Windows-Partition booten."
elif [[ "$GRUB_VERSION" == "grub2" ]]; then
# Für GRUB2 verwenden wir grub2-set-default
sudo grub2-reboot "$WINDOWS_ENTRY"
echo "GRUB wird beim nächsten Neustart in die Windows-Partition booten."
fi
break
elif [[ "$user_input" =~ ^[Nn]$ ]]; then
echo "Abgebrochen. Script wird beendet."
exit 0
else
echo "Ungültige Eingabe. Bitte Y oder N eingeben."
fi
done
# Zweite Abfrage: Sofort nach Windows booten oder nur den GRUB Eintrag setzen?
while true; do
read -p "Jetzt sofort nach Windows booten? [Y/N] " user_input
user_input=${user_input:-Y} # Wenn leer (Enter), dann "Y" als Default-Wert
if [[ "$user_input" =~ ^[Yy]$ ]]; then
echo "Das System wird jetzt nach Windows neu gestartet..."
sudo reboot
break
elif [[ "$user_input" =~ ^[Nn]$ ]]; then
echo "Nur den GRUB Eintrag gesetzt. Script wird beendet."
exit 0
else
echo "Ungültige Eingabe. Bitte Y oder N eingeben."
fi
done