Wie kann ich erreichen, dass mein GRUB-Menü ausgeblendet wird UND die Umschalt- oder Esc-Taste beim Ausblenden das ausgeblendete GRUB-Menü anzeigt?

10

Ich verwende Ubuntu 16.10 und versuche, mein GRUB-Menü beim Einschalten / Booten auszublenden. Ich möchte, dass das Menü nur angezeigt wird, wenn ich die Tasten Shiftoder Escdrücke.

Ich ändere die entsprechenden Optionen in /etc/default/grubund das Menü wird immer noch nicht ausgeblendet.

Als ich dies recherchierte, stellte ich fest, dass dieser Beitrag aus dem versteckten GRUB-Menü 2013 nicht funktioniert. Dies weist darauf hin, dass das Problem bereits seit einiger Zeit besteht, und schlägt eine Änderung vor, /etc/grub.d/30_os-proberdie ich lieber nicht vornehmen möchte. Dieser Code deutet darauf hin, dass er, da er mehrere Betriebssysteme gefunden hat, das GRUB_TIMEOUT=10sowieso einstellen wird.

Hier ist ein Ausschnitt von dem, was ich jetzt in /etc/default/grub... einem Menü mit einem Countdown von 10 Sekunden ...

GRUB_DEFAULT = gespeichert
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || Echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "leises Spritzen"

Wenn ich auskommentiere #GRUB_HIDDEN_TIMEOUT=0, dann sudo update-grubbesteht darauf, dass ich auch eingestellt GRUB_TIMEOUT=10habe GRUB_TIMEOUT=0. Ich mache das und sehe immer noch das GRUB-Menü.

In der terminalEingabe info -f grub -n 'Simple configuration'werden die verschiedenen Optionen beschrieben, und ganz am Ende der Informationen wird angezeigt, dass einige der aktuellen Befehle abgeschrieben wurden, und es wird vorgeschlagen, dass die neueren Ersetzungen besser sind.

Weiß jemand, wie ich mein GRUB-Menü in 16.10 ausblenden und es beim Booten erkennen Shiftoder EscSchlüssel erkennen lassen kann?

Heynnema
quelle
Ich bin froh, dass du das gefragt hast. Ich konnte meine auch nicht zum Arbeiten bringen, und dies bestätigt, dass es daran liegt, dass die Box ein Dual-Booter ist.
Bio-Marmor
1
@OrganicMarble Das Problem hat mit mehreren Betriebssystemen zu tun. Zum Testen habe ich diesen Teil des Codes in /etc/grub.d/30_os-prober geändert, und obwohl ich kein Menü erhalten habe, konnte ich beim Booten kein Menü mit Shift oder Esc erzwingen. Ich arbeite immer noch daran.
Heynnema
Ich habe in meiner Antwort weitere Informationen zu Fehlern hinzugefügt, die mit Ihren zusammenhängen. Diese können Ihnen helfen, die Art des Problems besser zu verstehen. Ich schaue auch auf Grub2-Code - versuche zu helfen :)
xtrchessreal
Versuchen Sie es mit Grub Customizer, wenn Sie dies nicht getan haben. Registerkarte "Allgemeine Einstellungen" in dieser Reihenfolge - 1 Deaktivieren Sie das Kontrollkästchen "Nach anderen Betriebssystemen suchen" und 2 Deaktivieren Sie "Menü anzeigen" und speichern Sie es. Testen Sie das und sehen Sie, ob "Shift" das Menü aufruft und was dann passiert, wenn nichts gedrückt wird.
Xtrchessreal
Ich kann verstehen, dass Sie lieber nicht modifizieren möchten, /etc/grub.d/30_os-proberaber ich sehe den Schaden wirklich nicht. Sie können eine Kopie sichern oder #Kommentieren Sie Ihre Änderungen, damit Sie sie bei Bedarf rückgängig machen können. Die Problemumgehung, die Sie gefunden haben, scheint derzeit die vernünftigste Lösung zu sein.
Elder Geek

Antworten:

7

OK Leute, hier ist die Antwort ... um ein verstecktes GRUB-Menü in Dual-Boot-Konfigurationen zu erhalten ... zwei Änderungen ... und ein sudo update-grub...

Bearbeiten Sie # 1

Um ein verstecktes GRUB-Menü in einer Multi-Boot-Konfiguration zu erhalten, müssen wir zuerst bearbeiten /etc/default/grub. Öffnen Sie diese Datei mit dem folgenden Befehl:

sudo editor /etc/default/grub

Sobald die Datei geöffnet ist, ersetzen Sie diese Zeilen

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

mit diesen:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

Dadurch zeigt GRUB einen 3-Sekunden-Countdown-Timer auf dem Bildschirm an. Auf diese Weise kann ein Benutzer die EscTaste drücken, um das Standardmenü aufzurufen. Andernfalls wird das Standardbetriebssystem gestartet.

Wenn Sie möchten, dass das Standardbetriebssystem auf das zuletzt gestartete Betriebssystem eingestellt wird, fügen Sie die beiden folgenden Zeilen unter "GRUB_TIMEOUT = 3" hinzu:

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

Bearbeiten Sie # 2

Als Nächstes muss der Betriebssystem-Prober aktualisiert werden, um die Funktion quick_boot zu deaktivieren. Um dies zu tun, öffnen Sie /etc/grub.d/30_os-proberin Ihrem bevorzugten Editor und ändern Sie das unterhalb der Linie (Linie 23 in 17,04) durch das Ersetzen 1mit einem 0:

quick_boot="1"

Wenn Sie fertig sind, sollte die Zeile wie folgt lauten:

quick_boot="0"

Speichern Sie die Dateien und führen Sie den folgenden Befehl aus, um den Bootloader neu zu konfigurieren und Ihre Änderungen zu übernehmen:

sudo update-grub
Heynnema
quelle
Das hat es geschafft! +1.
Bio-Marmor
Sieht nach einer guten Lösung aus :) Jetzt habe ich eine einfache Frage dazu. Wenn Sie GRUB_TIMEOUT von "3" auf "1" ändern, werden Sie schneller booten. Und können Sie gegebenenfalls Links bereitstellen, über die Sie lesen können, wie dieser Code funktioniert? Ich möchte verstehen, was dieser Code tut und wie viele Funktionsaufrufe usw. ablaufen. Sehr geschätzt. Es ist schön, wenn Sie Ihre eigenen Fragen lösen können - gute Arbeit dabei.
Xtrchessreal
@xtrchessreal ja, das Ändern der 3 in eine 1 macht es 2 Sekunden kürzer. Ich nahm an, dass 3 Sekunden genug Zeit waren, um meine Hand auf die Esc-Taste zu legen, wenn ich wollte. Sie können info -f grub -n 'Simple configuration'für weitere Informationen suchen .
Heynnema
+1 für Q und +1 für A. In den letzten zwei Nächten habe ich dies mit allen Arten von Modifikationen an 30_os-richtig gegoogelt, 31_blah_blah erstellt und 40_custom erstellt, alles ohne Erfolg. Dies ist in AU, ArchLinux, Fedora und vielen anderen Orten. Wenn Sie mehr Stimmen wünschen, würde ich vorschlagen, alle falschen Antworten hier in AU aufzuspüren (es gibt viele) und abzustimmen, um sie als Duplikate dieser zu schließen, und mich dann anzupingen ( @ me) im allgemeinen Chatroom der AU mit einem Link zum Duplikat und ich werde auch darüber abstimmen. Vielen Dank für diese großartige Forschungs- und Arbeitslösung! :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix danke für den netten Kommentar und die Stimmen! Ich selbst habe viel recherchiert, bevor ich herausfand, dass niemand eine elegante oder gar keine Lösung hatte ... aber ich war entschlossen :-)
heynnema
3

Ich glaube, dieses Problem kann auf mehrere Betriebssysteme zurückzuführen sein, wie aus diesem Auszug aus dem Grub2-Wiki hervorgeht :

Wenn kein anderes Betriebssystem erkannt wird, startet GRUB 2 direkt mit dem Standardbetriebssystem und es wird kein Menü angezeigt. Wenn ein anderes Betriebssystem , das GRUB 2 Menü erkannt wird wird angezeigt.

UND

Das Speichern eines Betriebssystems kann durch Ausführen von sudo grub-set-default erreicht werden, wenn GRUB_DEFAULT = saved in / etc / default / grub festgelegt ist. Es kann auch gespeichert werden, wenn GRUB_SAVEDEFAULT = true auch in / etc / default / grub festgelegt ist. In diesem Fall bleibt das Standardbetriebssystem so lange bestehen, bis ein neues Betriebssystem manuell aus dem GRUB 2-Menü ausgewählt oder der Befehl grub-set-default ausgeführt wird.

Im Grub2-Wiki heißt es außerdem: Hinweis: Es gibt einen seit langem bestätigten Fehler in der Funktion für versteckte Menüs in GRUB 1.97 bis GRUB 1.99. Das Menü wird möglicherweise nicht ausgeblendet, wie in der Beschreibung auf dieser Seite angegeben. Während das Bearbeiten des 30_os-prober-Skripts dieses Problem beheben kann, liegt es außerhalb des Bereichs dieser Seite.

Als Workaround können Sie das einstellen GRUB_TIMEOUT="1"und Sie sehen das Menü nur für 1 Sekunde. Wenn ich zu einem anderen Betriebssystem wechseln muss, drücke ich einfach innerhalb dieser Sekunde die Pfeiltaste nach unten und das Menü wird angezeigt, bis ich eine Auswahl getroffen habe.

Möglicherweise liegt ein potenzielles Syntaxproblem im Zusammenhang mit dem Fehler vor. Ich bin kein Grub2-Experte, aber in meiner Grub-Datei endet jede Befehlszeile mit = "einige Einstellungen in Anführungszeichen". Ich erinnere mich aus meinen Codierungstagen, dass "Anführungszeichen" eine Zeichenfolge übergeben sollten, bei der Nicht-Anführungszeichen einfache numerische Werte an die Variablen übergeben. Ich bin nicht UP in neuen Codetechniken. zB Hier sind einige meiner Grub-Ausgaben:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="1"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

Ich schaue in diesen Grubbug :) für weitere Informationen sowie diesen Bug. Beide sind Grub2-bezogene 2 Jahre alt. Ein Teil davon könnte mit dem MBR-Code vor der Übergabe an Grub2 zusammenhängen

xtrchessreal
quelle
Vielen Dank für Ihre Antwort. Ich verwende bereits die SAVEDEFAULT-Methode. TIMEOUT = 1 verkürzt sicherlich die Anzeigezeit des Menüs. Das Problem hat mit mehreren Betriebssystemen zu tun. Zum Testen habe ich diesen Teil des Codes in geändert /etc/grub.d/30_os-prober, und obwohl ich kein Menü bekam, konnte ich beim Booten kein Menü mit Shift oder Esc erzwingen.
Heynnema
Die von Ihnen verlinkten Fehler scheinen nicht relevant zu sein oder fehlt mir etwas?
Elder Geek
@ElderGeek in Bezug auf Fehler # 1401318 Die Person, der der Fehler TJ zugewiesen ist, erklärt Grub das Verhalten vom MBR, indem er "sleep --interruptable $ timeout" usw. angibt. Wenn Sie alle seine Aussagen in den Fehlerkommentaren lesen, denke ich Sie werden sehen, was zumindest ein Teil des Problems ist. Er ist auch dem Fehler # 425979 zugeordnet, der in Problemen ähnlich ist. Beide Fehler betreffen das Halten der Umschalttaste, damit das Grub-Menü NICHT funktioniert, wenn es ausgeblendet ist. Dies versucht auch das OP herauszufinden. Ich hoffe, dies verdeutlicht, warum die Links in meiner geposteten Antwort enthalten sind.
Xtrchessreal
Verzeihen Sie meine Verwirrung. Ich las die Frage mit den Worten "Wie kann ich mein GRUB-Menü ausblenden lassen?". Vielen Dank für die Klarstellung. Ich muss diesen Kommentar verpasst haben.
Elder Geek
@ElderGeek lautet die Frage: "Wie kann ich mein GRUB-Menü ausblenden lassen und die Umschalt- oder Esc-Taste das ausgeblendete GRUB-Menü beim Booten anzeigen lassen? " Ich habe es zum Verstecken gebracht. Ich habe die Schicht- oder Esc-Schlüssel nicht zum Arbeiten gebracht. Anscheinend geht dieses Problem auf das Jahr 2013 oder früher zurück und betrifft nur Multi-Boot-Konfigurationen.
Heynnema
3
  1. Ich denke, Sie möchten "alles" ausprobieren, was über verfügbar ist /etc/default/grub. Hast du diesen Link gelesen,

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. Ich schlage vor, dass Sie versuchen, die folgenden Zeilen aus zu entfernen /boot/grub/grub.cfg:

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    Ja, ich weiß, Sie müssten es jedes Mal tun, wenn es update-grubausgeführt wurde, aber Sie können ein Skript dafür erstellen.

Sudodus
quelle
Vielen Dank für Ihre Antwort. Ich werde mir diesen Link ansehen. Ich hatte auch eine Möglichkeit gefunden, /etc/grub.d/30_os-prober so zu ändern, dass ich grub.cfg nicht jedes Mal bearbeiten musste.
Heynnema
Dies ist für mich sinnvoll, da es in einem Multiboot-System so aussieht, als würde dieser Code das Timeout von 0 auf 10 zurücksetzen. Dies scheint HIDDEN_TIMEOUT zu besiegen ....
Elder Geek
@heynnema könntest du deine Änderungen an os-prober posten? Als ich mir den Link in Ihrer Frage angesehen und ihn mit dem Code in meinem Os-Prober verglichen habe, waren die Zeilennummern nicht sinnvoll, daher gehe ich davon aus, dass sich der Os-Prober seitdem geändert hat, und ich hatte Angst, mich damit zu beschäftigen.
Bio-Marmor
1
@OrganicMarble siehe das Update zu meiner Frage. Vielleicht kannst du einige / alle meiner Mods ausprobieren und sehen, was dir einfällt.
Heynnema
@ Sudodus bitte sehen Sie meine Antwort
heynnema