web-dev-qa-db-fra.com

Comment définir le délai d'attente GRUB sur 0 sous Ubuntu 18.04

J'ai essayé de mettre à jour mon fichier de configuration grub avec un délai d'expiration égal à 0, de sorte que le système d'exploitation démarre rapidement. J'ai modifié le fichier de configuration /etc/default/grub sur mon Ubuntu 18.04 puis exécuté:

Sudo update-grub

et ça n'a pas marché. J'ai aussi couru:

Sudo grub-mkconfig
Sudo update-grub

mais ils ne travaillaient pas.

J'ai cherché beaucoup sur le Web pour résoudre ce problème, mais tous les guides disent d'exécuter la commande update-grub pour mettre à jour grub avec le fichier de configuration /etc/default/grub. Je ne sais pas si c'est Ubuntu 18.04 qui gère les fichiers grub différemment, mais je ne peux pas mettre à jour mon fichier grub avec mes paramètres.

Ceci est mon fichier /etc/default/grub:

# 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"
8
Bob91

Dans le fichier /boot/grub/grub.cfg, il existe une condition, presque à la fin du fichier, qui définit le délai d’expiration sur 10 si le délai est défini sur 0. En d’autres termes, si vous définissez le délai d’expiration sur 0 dans votre /etc/default/grub et que vous mettez à jour grub, condition ci-dessus réinitialiser à 10 secondes.

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

Cependant, /boot/grub/grub.cfg est un fichier en lecture seule et je ne peux pas supprimer cette condition. J'ai fait des tests avec différentes valeurs du délai d'attente dans /etc/default/grub. J'ai essayé avec 1ms (0.001), 0.1s et 1s et j'ai découvert que les valeurs inférieures à 1 (comme 0.1 et 0.001) fonctionnent de la même manière et presque comme timeout défini sur 0.

9
Bob91

Dans mon cas, le problème était que mon système ne supportait pas "recordfail", ce qui entraînait l'ajout d'un bloc séparé au fichier grub.cfg dont le délai par défaut était de 30 secondes. Le code correspondant dans /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

Le correctif consiste simplement à ajouter une valeur pour GRUB_RECORDFAIL_TIMEOUT dans /etc/default/grub et à réexécuter update-grub. Par exemple:

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

Comme le disent les autres réponses, retirez les commentaires de GRUB_HIDDEN_TIMEOUT et exécutez update-grub. Puis commentez le

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

section dans /boot/grub/grub.cfg. Dans vim, vous pouvez simplement remplacer la propriété en lecture seule par un point d'exclamation :x!. Ou tu peux courir

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

d'avoir temporairement l'autorisation d'écriture lors de l'édition du fichier.

3
asantas93

Vous pouvez définir GRUB_TIMEOUT à 0.

La valeur du délai d’écrasement partiel est écrite dans la fonction ajust_timeout en haut de /etc/grub.d/30_os-prober.

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

Vous pouvez donc définir la valeur en modifiant le fichier et en commentant if-block.

1
guest

Décommentez GRUB_HIDDEN_TIMEOUT = 0 et exécutez update-grub à nouveau.

1
hiigaran

Vous pouvez définir GRUB_TIMEOUT sur -1.

Ex: GRUB_TIMEOUT="-1"

1
Giceu Cassiano