Anhang: Notstartsystem-grub.cfg
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #! /bin/sh # ventoy_grub.cfg --- Notstartsystem für GRUB # (c) 2023 kB @ UbuntuUsers.de # SPDX-License-Identifier: GPL-2.0-or-later # https://spdx.org/licenses/GPL-2.0-or-later.html # Diese Datei als GRUB-Konfigurationsdatei benutzen #+ oder per configfile laden #+ oder in Ventoy als F6-Menü einbinden. unset timeout function bootUUID { if test -d boot ; then DIR=/boot ; else DIR= ; fi if linux $DIR/vmlinuz root=UUID=$1 ro then echo Kernel geladen else echo kein Kernel ; return 1 fi if initrd $DIR/initrd.img then echo Initiale Ramdisk geladen else echo kein initrd.img ; return 1 fi color_normal=white/black } function grubROOT { until probe --fs-uuid $root --set=UUID probe --label $root --set=LABEL echo "Suche Kernel auf $root ($UUID $LABEL)" echo -n 'OK = Return oder Eingabe hdX,Y: ' read REPLY ; echo ; test -z "$REPLY" do root=$REPLY ; done } menuentry 'Notstartsystem beenden' --class=vtoyret VTOY_RET { echo ; } menuentry ' ' { echo ; } menuentry 'Rechner ausschalten' { halt ; } menuentry 'Rechner neu starten' { reboot ; } menuentry 'GRUB beenden, zurück zum Firmware-Bootmanager' { exit ; } for P in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 do P=hd1,$P if probe --fs $P --set=FS then probe --fs-uuid $P --set=UUID probe --label $P --set=LABEL menuentry "$P FS=$FS $UUID '$LABEL'" { setparams $1 ; root=$1 ; grubROOT ; bootUUID $3 } else true fi done |
Dies ist eine Konfigurationsdatei für GRUB, geschrieben in der Grub-Skriptsprache.
Der Shebang in der ersten Zeile aktiviert die Syntaxerkennung im Editor, ist aber ohne Bedeutung für GRUB. Das funktioniert, weil die GRUB-Skriptsprache eine kleine Untermenge der POSIX-Shell-Syntax darstellt.
Die Funktion bootUUID
sucht Linux-Kernel und dessen initrd.img auf der mit der Variablen root
angegebenen Partition und gibt dem Linux-Kernel das Root-Dateisystem mit der als erstes Argument genannten UUID an. Es ist Aufgabe des aufrufenden Programms, diese Werte richtig zu setzen.
Die Funktion grubROOT
erlaubt dem Bediener die Quelle für Linux-Kernel und initrd.img einzugeben.