Grub-Menü kann nicht auf Timeout gesetzt werden (oder kann nicht mehr verwendet werden)

18

Ich verwende Ubuntu 12.04.

Ich kann nicht für mein ganzes Leben die Mehlspeisekarte (mit Optionen) zum Verschwinden bringen.

Ich möchte, dass es automatisch in die erste Option hochfährt. Ich habe / etc / default / grub so bearbeitet , dass es wie folgt aussieht:

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

Danach habe ich sudo update-grub ausgeführt . Dann wurde mir klar, dass ich grub 2 hatte, und ich ließ sudo update-grub2 laufen (beide lassen es so aussehen, als ob sie die Datei grub.cfg erfolgreich erstellt hätten).

Ich starte meinen Computer neu und er kehrt zum Grub-Menü zurück und sitzt dort, bis ich eine Wahl getroffen habe. Das ist nicht wünschenswert, wenn der Strom ausfällt ... :-)

Ich habe auch versucht, grub mit sudo grub-install / dev / sda neu zu installieren - ebenfalls erfolglos

Eric
quelle
Haben Sie zufällig eine andere Partition, auf der Sie Ubuntu installiert haben, nachdem Sie die aktuelle Partition eingerichtet haben, auf der Sie jetzt automatisch booten möchten?
Fabricator4
Ich bin mir nicht sicher, was du meinst, ich bin ein bisschen neu in Linux. Ich habe über eine frühere Ubuntu-Installation installiert, aber kein Upgrade durchgeführt. Neuinstallation. Ich habe vielleicht etwas in Bezug auf die Partition durcheinander gebracht ... ist das möglich?
Eric
sudo update-grubund sudo update-grub2führt den gleichen Befehl aus. Also mach dir keine Sorgen um diesen Teil.
Saji89
Bitte poste die Ausgabe von cat /boot/grub/grub.cfg via Pastebin und teile den Link hier. Hier sehen Sie die tatsächlich grub.cfgerzeugten.
Saji89
Hier ist die Pastebin: pastebin.com/xxe2rLhg von grub.cfg. Danke für deine Hilfe!
Eric

Antworten:

22

Wie andere Antworten zeigen, sind Sie möglicherweise ein Opfer der Rekordfehlersituation . Eine /boot/grub/grub.cfgmanuelle Bearbeitung sollte nicht in Frage kommen, da sie automatisch generiert wird. Ein weiterer Vorschlag, der hier zu sehen ist, besteht darin, das zu bearbeiten, /etc/grub.d/00_headeraber dann könnte der Benutzer aufgefordert werden, bei Updates einzugreifen.

Die einfachste Lösung besteht darin, die undokumentierte GRUB_RECORDFAIL_TIMEOUT Variable in zu definieren /etc/default/grub. Beispielsweise:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

Bearbeiten

Weitere Informationen finden Sie in dieser Antwort .

C2H5OH
quelle
Vielen Dank, genau das habe ich gesucht!
Avio
Führen Sie update-grubnach der Änderung auch den Befehl aus , um die aktualisierte /boot/grub/grub.cfgDatei zu generieren
Colt,
Beende nicht die Funktionalität von recordfail! Sie möchten eine längere Zeitüberschreitung, wenn beim Booten ein Fehler aufgetreten ist. Um manuell klar, alles , was Sie brauchen , ist @ sniffski Antwort: grub-editenv create. Es kann jedoch auch einen anderen Grund geben recordfail,
warum das Spiel
6

Verwenden:

grub-editenv create

Dadurch wird die Grub-Umgebungsdatei gelöscht und sollte beim nächsten Mal klar gestartet werden.

sniffski
quelle
Vielen Dank für das Teilen. Dies funktionierte über SSH, was meinen Tag für einen auf Grub Headless Server stecken ließ.
Geppettvs D'Constanzo
grub-editenv - unset recordfailFunktioniert auch und hat keine Auswirkungen auf andere möglicherweise eingestellte
Umgebungen
2

Ändern Sie den GRUB_TIMEOUT=10Wert auf Null

Dies ist meine Konfigurationsdatei:

GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#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=""

Schreiben Sie zuerst den Namen des Betriebssystems, mit dem Sie direkt booten möchten. Meins ist Ubuntu. Du wirst es also so schreiben wie in derGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

dann habe ich 1 Sekunde in der verwendet GRUB_TIMEOUT=, um mir 1 Sekunde vor der Auswahl des Standard-Betriebssystems zu geben (wenn ich zum Beispiel mit Xubuntu auf einem anderen Betriebssystem booten muss)

wie GRUB_CMDLINE_LINUX_DEFAULT=""wenn Sie entfernen quite splashwird es zeigen Ihnen anstelle des Ubuntu - Logo während des Bootvorgangs (Ich mag es auf diese Weise: P) Texte


Es gibt eine andere Lösung:

Es gibt ein Programm namens Boot-Repair, das bei der Konfiguration mit einer GUI hilft.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Wie Sie aus dem Bild sehen können. Es gibt eine Box namens Unhide boot menu. Deaktivieren Sie einfach das Kontrollkästchen und drücken Sie appy. Sie können darauf zugreifen, indem Sie auf den Pfeil für erweiterte Optionen klicken.

um die Boot-Reparatur zu installieren

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair

und dann boot-reapirentweder vom Terminal oder vom Armaturenbrett laufen .


3. Lösung:

Sie können eine einfach zu bedienende GUI-App namens grub-customizer verwenden, um Ihr Leben ein wenig einfacher zu gestalten. Wie der Name schon sagt, können Sie damit viel mehr als nur Grub-Menüeinträge neu anordnen.

Sie können es installieren, indem Sie:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

Bildbeschreibung hier eingeben

Wie Sie im Menü sehen können, gibt es eine show menuOption. Deaktivieren Sie und prüfen Sie, ob es funktioniert

Suhaib
quelle
Keine Änderung. : - / Ich dachte, GRUB_DEFAULT sollte eine numerische # laut der Liste im Menü sein? Das Ändern von GRUB_TIMEOUT auf 0 hat nicht geholfen.
Eric
@Eric Sie können zwei Möglichkeiten nutzen: Wenn Sie den Ort Ihres Betriebssystems in der Grub-Liste kennen, können Sie eine Nummer verwenden. Aber für mich habe ich 4 Linux-Distributionen und 1 Windows sowie den memTest und die Wiederherstellung. Daher fällt es mir schwer, mir ihre Plätze zu merken :), nur um sicherzugehen (ich weiß, dass du es vielleicht getan hast, aber nur um sicherzugehen: P). Hast du das grub-updatenach dem Ändern der Werte ausgeführt?
Suhaib
Ich habe grub-update ausgeführt, nachdem ich die Werte geändert habe. : - /
Eric
Ich habe die von Ihnen bereitgestellte Boot-Repair-App installiert und verwendet. Sie funktioniert beim ersten Neustart. Danach ist das GRUB-Menü wieder da und bleibt dort, bis ich eine Taste drücke. Vielen Dank für Ihre Hilfe, ich weiß das sehr zu schätzen. Ich bin mir nicht sicher, wohin ich von hier aus gehen soll ...
Eric
@Eric ok Ich habe eine dritte Lösung gefunden, überprüfe sie
Suhaib
2

GRUB_HIDDEN_TIMEOUTund GRUB_HIDDEN_TIMEOUT_QUIETOptionen sind veraltet. Kommentieren Sie diese aus.

Fügen Sie Folgendes hinzu, um das Menü zu überspringen und anzuzeigen, wenn Sie nur ESCgedrückt halten:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Probe /etc/default/grub

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

'GRUB_TIMEOUT_STYLE' : Wenn diese Option auf 'Countdown' oder 'Ausgeblendet' eingestellt ist, wartet GRUB vor dem Anzeigen des Menüs auf das Ablaufen des von 'GRUB_TIMEOUT' festgelegten Zeitlimits. Wenn während dieser Zeit ESC gedrückt wird, wird das Menü angezeigt und auf die Eingabe gewartet.

Gayan Weerakutti
quelle
es sollte , aber alles, was es tut, ist das Standardmenü für 1 Sekunde. Zumindest an einem brandneuen 16.04
Früh 22.10.17
1

Ich könnte das Problem lösen, indem ich die folgende Zeile hinzufüge /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... und dann rennen sudo update-grub.

Erläuterung: Die Datei /boot/grub/grub.cfgwird generiert, update-grubindem die Dateien in /etc/grub.dund ausgeführt werden /etc/default/grub. Daher sollten Sie nicht bearbeiten grub.cfg, aber es kann hilfreich sein, herauszufinden, warum das Timeout eingestellt ist. Suchen Sie nach Zeilen, die mit beginnen, set timeout=und suchen Sie dann nach der nächsten Zeile, die mit beginnt ### END /etc/grub.d/ .... Dies kann Ihnen Hinweise geben, welches Skript das Zeitlimit festlegt. In meinem Fall war das os-prober-Skript für das Timeout verantwortlich. Es stellt sich heraus, dass es eine 10s-Zeitüberschreitung gibt, /etc/grup.d/30_os-proberdie nicht von festgelegt wird GRUB_TIMEOUT. Sie können os-prober entweder deaktivieren GRUB_DISABLE_OS_PROBER=trueoder bearbeiten /etc/grup.d/30_os-proberoder verwenden GRUB_OS_PROBER_SKIP_LIST, um einige Ihrer Festplattenpartitionen zu überspringen (30_os-prober wird verwendet, wenn irgendwo ein anderes Betriebssystem gefunden wird). Weitere Informationen finden Sie in dieser Frage und Antwort. Wie andere hervorhoben , könnte ein weiterer Grund das Rekordversagen sein , in diesem Fall eingestellt GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.

lumbric
quelle
0

Ich hatte das Problem, dass das Grub-Menü immer angezeigt wurde, nachdem ich das AUFS (unionfs) verwendet hatte, um das Root-Dateisystem schreibgeschützt zu platzieren. Ich musste nach jedem Booten die Eingabetaste am Server drücken. Ich habe die Anweisungen hier befolgt: Grub 2-Menü deaktivieren . Da hatte ich überhaupt keine Probleme.

Bearbeiten Sie die Datei /boot/grub/grub.cfg und ändern Sie Folgendes:

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

Zu

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi
Fabio Vaz
quelle
Das Vorher und Nachher in Ihrer Lösung ist genau dasselbe.
RawwrBag
set timeout=-1ist nicht dasselbe wie set timeout=1. Ersteres ist "warte für immer" und letzteres ist "warte für eine Sekunde".
Jeff McJunkin
0

Mein Ubuntu hatte immer ein Timeout von 30 Sekunden, entweder hätte ich einen Wert eingestellt oder nicht. Hier nach ist, wie ich herausgefunden habe, dass Rekordfehler der fehlende Wert war .

1. Überprüfen Sie das aktuelle Grub-Skript /boot/grub/grub.cfg

IMHO, der beste Weg zu überprüfen, was Grub tun wird, ist zu öffnen /boot/grub/grub.cfg. Hierbei handelt es sich um das Skript, das grub-mkconfigmithilfe von Vorlagen aus /etc/grub.dund Einstellungen aus automatisch generiert wird /etc/default/grub.

Um die Linie 109 herum sehen Sie etwas wie:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=30 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

In meinem Fall konnte ich mit Hilfe des generierten Skripts feststellen, dass die recordfailVariable nicht gesetzt war.

2. Wenn die recordfailVariable nicht gesetzt ist, setzen Sie sie

Öffnen Sie /etc/default/grubin Ihrem bevorzugten Texteditor (z. B. vim) und stellen Sie die Variable GRUB_RECORDFAIL_TIMEOUTauf einen bestimmten Wert ein, z. B. 5 Sekunden.

Ihre Konfigurationsdatei sollte folgendermaßen aussehen:

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

3. Aktualisieren Sie die Konfiguration, mit der ausgeführt werden soll update-grub

Aktualisieren Sie im letzten Schritt die Konfiguration, mit der ausgeführt werden soll update-grub. Im Moment verwendet GRUB2 das eingestellte Timeout. Dieser Befehl generiert die /boot/grub.cfgDatei neu.

4. Überprüfen Sie das generierte Skriptergebnis

Öffne /boot/grub.cfgund überprüfe das Ergebnis um die Linie 109:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=5 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

Beachten Sie, dass der Wert in Zeile 109 jetzt 5 statt wie zuvor 30 ist.

KeyMaker00
quelle