So setzen Sie das GRUB-Timeout unter Ubuntu 18.04 auf 0

11

Ich habe versucht, meine Grub-Konfigurationsdatei auf das Zeitlimit 0 zu aktualisieren, damit das Betriebssystem schnell startet. Ich habe die /etc/default/grubKonfigurationsdatei auf meinem Ubuntu 18.04 geändert und dann ausgeführt:

sudo update-grub

und es hat nicht funktioniert. Ich lief auch:

sudo grub-mkconfig
sudo update-grub

aber sie haben nicht funktioniert.

Ich habe viel im Web gesucht, um dieses Problem zu lösen, aber alle Anleitungen sagen, dass der Befehl update-grub ausgeführt werden soll, um grub per /etc/default/grubKonfigurationsdatei zu aktualisieren . Ich weiß nicht, ob Ubuntu 18.04 Grub-Dateien auf andere Weise behandelt, aber ich kann mein Grub nicht mit meinen Parametern aktualisieren.

Das ist meine /etc/default/grubDatei:

# 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=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
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"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
Bob91
quelle
3
Bitte bearbeiten Sie Ihre Frage und fügen Sie Ihre geänderte Grub-Konfigurationsdatei bei. Ansonsten versuchen wir nur zu erraten, was Sie getan haben.
Bio-Marmor
Haben Sie andere Distributionen installiert (Dual Boot)?
mook765
es hat nicht funktioniert bedeutet, dass mein Grub-Timeout immer noch auf 10 Sekunden eingestellt ist, wie standardmäßig @Melebius
Bob91
Ich habe Windows in der gleichen SSD und anderen Distributionen auf einer anderen Festplatte installiert, aber letzten Monat hatte ich Fedora 27 (anstelle von Ubuntu 18) und es hat funktioniert, als ich die Grub-Konfigurationsdatei geändert habe, also denke ich, dass die anderen Distributionen nicht die Ursachen dafür sind dieses Verhalten @ mook765
Bob91
1
Könnten Sie bitte Boot-Info ausführen und Ihre Frage so bearbeiten , dass sie einen Link zum resultierenden Infoprotokoll enthält? Vielen Dank.
David Foerster

Antworten:

12

In der /boot/grub/grub.cfgDatei gibt es fast am Ende der Datei eine Bedingung, die das Zeitlimit auf 10 setzt, wenn das Zeitlimit auf 0 gesetzt ist. Mit anderen Worten, wenn Sie das Zeitlimit in Ihrem auf 0 setzen /etc/default/grubund dann grub aktualisieren, die obige Bedingung Setzen Sie es auf 10 Sekunden zurück.

if [ "${timeout}" = 0 ]; then
     set timeout=10
fi

Es handelt sich jedoch /boot/grub/grub.cfgum eine schreibgeschützte Datei, und ich kann diese Bedingung nicht entfernen. Ich habe einige Tests mit unterschiedlichen Werten für das Timeout in durchgeführt /etc/default/grub. Ich habe es mit 1 ms (0,001), 0,1 s und 1 s versucht und festgestellt, dass Werte unter 1 (wie 0,1 und 0,001) auf die gleiche Weise funktionieren und fast wie ein auf 0 gesetztes Timeout.

Bob91
quelle
work in the same way and almost like timeoutDas liegt daran, dass Mathe in Bash nur ganze Zahlen unterstützt. Die kürzeste Zeitüberschreitung, die einen Unterschied machen würde, ist 1.
Marcin Orlowski
5

In meinem Fall bestand das Problem darin, dass mein System "recordfail" nicht unterstützte, was dazu führte, dass der grub.cfg ein separater Block hinzugefügt wurde, der standardmäßig eine Zeitüberschreitung von 30 Sekunden aufweist. Der relevante Code in /etc/grub.d/00_header:

if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if lsefi; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF

Das Update besteht einfach darin, einen Wert für GRUB_RECORDFAIL_TIMEOUTin hinzuzufügen /etc/default/grubund update-gruberneut auszuführen . Beispielsweise:

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Adjusted timeout for system which doesn't support recordfail
GRUB_RECORDFAIL_TIMEOUT=2

# 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"
Alex Malinovich
quelle
3

Wie die anderen Antworten sagen, auskommentieren GRUB_HIDDEN_TIMEOUTund rennen update-grub. Dann kommentieren Sie die

if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

Abschnitt in /boot/grub/grub.cfg. In vim können Sie die schreibgeschützte Eigenschaft einfach mit einem Ausrufezeichen überschreiben :x!. Oder du kannst rennen

sudo chmod +w /boot/grub/grub.cfg
sudo vim /boot/grub/grub.cfg
sudo chmod -w /boot/grub/grub.cfg

vorübergehend Schreibberechtigung beim Bearbeiten der Datei zu haben.

asantas93
quelle
3
Sie haben Recht, aber ich denke, jedes Mal, wenn Sie grub aktualisieren (manuell oder wenn es ein Betriebssystem-Upgrade gibt), wird der /boot/grub/grub.cfgWille mit der oben genannten Bedingung neu erstellt.
Bob91
2
Das stimmt, die Datei wird beim Update überschrieben, wie ich kürzlich erfahren habe.
Asantas93
1

Sie können festlegen , GRUB_TIMEOUTauf 0.

Der Zeitüberschreitungswert für das Überschreiben von Teilen wird in der ajust_timeoutFunktion oben in geschrieben /etc/grub.d/30_os-prober.

ajust_timeout () {
...
if [ "\${timeout}" = 0]; then
  set timeout=10
fi
...
}

Sie können den Wert also festlegen, indem Sie die Datei bearbeiten und den if-Block auskommentieren.

Gast
quelle
1

Sie können festlegen , GRUB_TIMEOUTauf -1.

Ex:GRUB_TIMEOUT="-1"

Giceu Cassiano
quelle
'GRUB_TIMEOUT' Starten Sie den Standardeintrag so viele Sekunden, nachdem das Menü angezeigt wurde, es sei denn, eine Taste wird gedrückt. Der Standardwert ist '5'. Stellen Sie '0' ein, um sofort zu starten, ohne das Menü anzuzeigen, oder '-1', um unbegrenzt zu warten. vom Befehlinfo -f grub -n 'Simple configuration
Vijay
1

Kommentar entfernen GRUB_HIDDEN_TIMEOUT=0und update-gruberneut ausführen .

Hiigaran
quelle
es funktioniert nicht
Bob91
GRUB_HIDDEN_TIMEOUT = -1
kuhajeyan
1
GRUB_HIDDEN_TIMEOUT=-1arbeitete unter Ubuntu 18.10.
Manish Raj
0

Wir können einfach die Zeile hinzufügen

set timeout=0

zu /etc/grub.d/40_custom, machen die Datei ausführbar mit

chmod +x /etc/grub.d/40_custom

und Renn

sudo update-grub

um die neue /boot/grub/grub.cfg-Datei zu generieren . Der set timeoutBefehl, den wir hinzugefügt haben, ist der letzte set timeoutBefehl im Moment /boot/grub/grub.cfg, das ist es, was zählt.

mook765
quelle
-1

Die Lösung besteht darin, hinzuzufügen

GRUB_RECORDFAIL_TIMEOUT=0

zu /etc/default/grub.

Alle anderen Lösungen werden bei Grub-Updates zurückgesetzt.

Pilot6
quelle