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"
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.
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"
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.
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.
Décommentez GRUB_HIDDEN_TIMEOUT = 0 et exécutez update-grub à nouveau.
Vous pouvez définir GRUB_TIMEOUT
sur -1
.
Ex:
GRUB_TIMEOUT="-1"