Zeitsteuerung in GRUB einrichten
By zefanja
GRUB 2 hat viele Funkionen in Module ausgelagert. Dadurch ist es möglich, dass man nur die benötigten Funktionen lädt und damit kleinere Core-Images möglich sind. Man kann diese Module aber auch nutzen, um GRUB zu erweitern, z.B. um eine Zeitsteuerung in GRUB einzubauen. Damit ist es möglich ein bestimmtes Betriebssystem zu einer festgelegten Zeit zu starten.
Eine Liste aller vorhandenen Module erhält man mit
$ ls /boot/grub/i386-pc/
Zeitsteuerung in GRUB konfigurieren
Für die Zeitsteuerung in GRUB braucht man das Module datehook
. Damit können in GRUB auf folgende Variablen zugreifen:
- DAY
- HOUR
- MINUTE
- SECOND
- MONTH
- WEEKDAY
- YEAR
Alle diese Werte basieren auf der Uhrzeit und dem Datum, das im BIOS eingestellt wurde (i.d.R. die Hardwareuhr des Mainboards). Das muss man im Hinterkopf behalten, wenn man die Zeitsteuerung in GRUB einrichtet.
Mit dem folgenden Befehl erhält man eine Liste mit allen Menü-Punkten des GRUB-Menüs:
$ grep -E '^menuentry|^submenu' /boot/grub/grub.cfg | cut -d '"' -f2 | cut -d "'" -f2
Der erste Eintrag hat die Nummer 0, der zweite die Nummer 1 usw.
Als nächstes öffnet man die Datei /boot/grub/grub.cfg und fügt folgende Zeilen relativ am Anfang der Datei ein:
insmod datehook
# Eine extra Null beo Minute 0-9 hinzufügen, sodass MINUTE immer zweistellig ist
if [ $MINUTE -lt 10 ]; then PADDING="0"; else PADDING=""; fi
TIME=$HOUR$PADDING$MINUTE
# Standardmäßig Ubuntu starten
set default=0
# Starte "Windows 10" von 17 bis 23 Uhr
if [ $TIME -ge 1700 -a $TIME -lt 2300 ]; then
set default=3
fi
Am Anfang fügt man eine extra Null bei Minuten kleiner als 10 ein, sodass die Minutenzahl immer zweistellig ist. Dann konstruiert man eine neue Variable TIME, die die aktuelle Uhrzeit mit dem Format HHMM hat. Diese kann man nun nutzen, um die Zeitsteuerung in GRUB zu implementieren.
Ubuntu soll standardmäßig gestartet werden, aber am Abend bekommt Windows 10 den Vorrang. Eventuell muss man die Uhrzeiten noch anpassen, da im BIOS oft die Zeitzone UTC eingerichtet ist.
Fazit
Die Änderungen oben gelten nur solange bis zum nächsten Mal update-grub
ausgeführt wird. Damit die Änderungen dauerhaft in GRUB erhalten bleiben, sollte man ein Template mit diesem Code unter /etc/grub.d/ anlegen.
Wir nutzen diese Option, um unsere Rechner in der Schule besser verwalten zu können. Am Tag wird standardmäßig Ubuntu gestartet, aber während der Nacht lassen wir Linbo booten, damit die Rechner dann z.B. aktualisiert oder mit einem neuen Image versorgt werden können.