Gibt es eine Möglichkeit, die Liste der "Menüeinträge" von GRUB abzurufen?
Ich benötige Ergebnisse in einem Format, grub-set-default
das akzeptiert wird. z.B.
"Ubuntu"
"Memory test (memtest86+)"
etc.
command-line
grub2
Madneon
quelle
quelle
Antworten:
Verwenden
awk
gibt Ihnen eine vollständige Liste aller Menüeinträge in
grub.cfg
.quelle
awk -F\' '/menuentry / {print $2}' /boot/grub/grub.cfg
awk
. : \awk -F\' '/menuentry / { print i++, $2}' /boot/grub/grub.cfg
fürgrub-set-default
Farbbildschirm (kurze Version)
Mit dem Maus - Scrollrad, Home, End, PgUp, PgDn, ↑und ↓Tasten , um das Menü zu navigieren.
Text Screenshot (lange Version)
Das Bash-Skript zeigt
whiptail
stattdessendialog
das Menü an. Ein Vorteil ist, dass Sie das Terminalbild als Text in die Zwischenablage kopieren und als Text in diese Website einfügen können. Weitere Vorteile sind:dialog
ist in Ubuntu Server oder Lubuntu nicht standardmäßig installiert.whiptail
ist standardmäßig enthalten.Hier ist ein Text-Screenshot:
Markieren Sie den Eintrag und drücken Sie die Eingabetaste
Verwenden Sie die Navigationstasten, um eine Option zu markieren, und drücken Sie Enter, um die von geladenen Pre-Kernel-Treibern
grub
und diegrub
beim Booten an den Kernel übergebenen Boot-Parameter anzuzeigen:grub-menu.sh
Bash-Skriptgrub-menu.sh
Es gibt nur eine Option zum Optimieren:Setzen Sie den Wert auf
true
(zusätzliche Einträge ausblenden) oderfalse
(alle Einträge auflisten).Das Standardformat kann überschrieben werden, wenn das Skript folgendermaßen aufgerufen wird:
oder:
Der Code:
quelle
Genau das nervt mich seit über einem Jahr - also habe ich ein schnelles und schmutziges Skript erstellt. Hoffe das hilft anderen?
Dies stapelt die Namen in einer Push / Pop-Warteschlange, aber nicht die Menüindizierung, so dass es besser sein könnte, aber ich bin so weit gegangen, wie ich gestört werden könnte.
Hier sehen Sie einen Screenshot von meiner Box, der zeigt, wie er ausgeführt wird
Wie in einem Kommentar von 2019/8 gefordert, habe ich oben erwähnt, einen "temporären Boot" zu machen. Diese Idee hat ursprünglich mein Skript gestartet, und die temporäre Bootmethode stammt von einem anderen Post und geht in etwa so
# vi /etc/default/grub
# sudo update-grub
# sudo grub-set-default 0
# sudo grub-reboot 4
Ref: https://ubuntuforums.org/showthread.php?t=1310463
quelle
push
undpop
in Ihrer Antwort. Ich wünschte, ich hätte sie gekannt, bevor ich meine Antwort schrieb.test
1. Setzen Sie GRUB_DEFAULT auf GRUB_DEFAULT = saved (/ etc / default / grub). 2. Aktualisieren Sie die grub-Konfiguration in / boot #sudo update-grub -set-default 0 4. Wenn ein anderes Betriebssystem geladen werden muss (number ist eine Menünummer des Betriebssystems wie in /boot/grub/grub.cfg), wird das andere Betriebssystem beim nächsten Neustart nur einmal geladen. Der Neustart muss manuell gestartet werden. Sudo Grub-Neustart 4Das sollte der richtige "String" sein ...
Die letzte Pipe löscht Leerzeichen am Anfang jeder Zeile und korrigiert die Nummernfolge gemäß der Eingabe der Maden-Nummer. Beispielausgabe:
Wenn Sie alle Einträge sehen möchten, können Sie auch die erweiterten verwenden
Die Zahlenfolge ist jedoch nicht für die Verwendung mit grub-set-default geeignet.
quelle
Ich habe gerade herausgefunden, dass Sie die automatische Vervollständigung (
tab
zweimal drücken ) für Befehle wiegrub-reboot
oder verwenden können,grub-set-default
und es wird Ihnen eine Liste der verfügbaren Startmenüeinträge angezeigt. Sie können dann einfach den gewünschten Titel buchstäblich kopieren, Sie müssen keine Nummer verwenden.Leider wird meine Windows 7-Installation aus irgendeinem Grund nicht so angezeigt.
quelle
Ein anderer awk Einzeiler, der Untermenüs handhabt:
Dies könnte fehlbar sein, da \ t zur Identifizierung von Untermenüeinträgen verwendet wird.
quelle
In OpenSuSE stellt grub2-once die Menü-ID bereit, die Sie dann in anderen Befehlen verwenden können. Für Ubuntu-Benutzer ist dies jedoch keine große Hilfe.
quelle