54 votes

Machine serveur Ubuntu sans tête parfois bloquée au menu Grub.

J'ai Ubuntu 10.10 Server installé sur une machine monocarte dans un environnement semi-intégré ; pas de clavier ni d'écran, juste un accès SSH.

Donc c'est realmente frustrant lorsqu'il démarre occasionnellement et reste bloqué sur le menu Grub, attendant une frappe pour sélectionner la première option.

Comment configurer Grub pour qu'il n'attende en aucun cas la frappe d'une touche ?

Mise à jour #1 : Il n'y a pas de menu.lst, puisque c'est Grub 2. Mais j'ai un /etc/default/Grub qui est comme ça :

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

Mise à jour n°2 : J'ai trouvé la solution. Lors des démarrages qui suivent des démarrages infructueux, Grub désactive son propre timeout. Puisque l'affichage du menu fait échouer un démarrage, c'est une boucle inéluctable. Ce comportement peut être désactivé en éditant le fichier /etc/Grub.d/00_header, et en modifiant la fonction make_timeout :

make_timeout ()
{
    echo "set timeout=0"
}

Maintenant, quittez et exécutez à nouveau le Grubmise à jour de la configuration Grub :

sudo update-grub2

Je trouve illogique que ce comportement soit le comportement par défaut d'Ubuntu Server, un produit destiné aux machines accessibles par console.

41voto

Andrea Barcellona Points 426

Pour Ubuntu 12.04 LTS, il existe une option spécifique qui peut être définie dans le fichier /etc/default/grub .

Par exemple, si vous voulez avoir un délai d'attente de 2 secondes (évitant ainsi les blocages lors de redémarrages sans surveillance), ajoutez simplement la ligne suivante dans le fichier /etc/default/grub :

GRUB_RECORDFAIL_TIMEOUT=2

N'oubliez pas d'exécuter update-grub après ça...

18voto

user84592 Points 771

Voici les instructions pour Ubuntu 10.10, qui sont légèrement différentes des versions précédentes. Dans le fichier /etc/Grub.d/00_header commentez la stupide vérification d'un échec de démarrage antérieur :

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

Ensuite, mettez à jour :

sudo update-grub

Sachez que si un deuxième disque avec Linux est attaché, grub2 le trouvera et vous demandera au démarrage lequel vous voulez. Retirez tous les disques supplémentaires avant d'exécuter "update-Grub".

Voir aussi https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/797544

6voto

GNTC Points 61

Je suis tombé sur cette erreur de conception profondément désagréable avec Ubuntu Server 9.10. Votre correctif m'a énormément aidé. Je voulais juste signaler que la correction nécessaire pour 9.10 est différente car il n'y a pas de fonction "make_timeout ()" dans le même fichier.

Pour Ubuntu 9.10, allez à la fin du même fichier (00_header) et changez ce qui suit :

if \[ \\${recordfail} = 1 \]; then
  set timeout=-1
else
  set timeout=${GRUB\_TIMEOUT}
fi
EOF

à

if \[ \\${recordfail} = 1 \]; then
  set timeout=${GRUB\_TIMEOUT}
else
  set timeout=${GRUB\_TIMEOUT}
fi
EOF

Comme avant, puis courir :

sudo update-grub2

1voto

blahblah Points 1

Configurez Grub pour l'accès série (et votre bootloader, tant que vous y êtes) et gardez un port série ouvert, un câble null-modem et un convertisseur USB vers RS232 à portée de main pour ces cas. Je fais tourner un serveur headless et un Guruplug et je ne voudrais pas qu'il en soit autrement.

1voto

Gaute Lund Points 11

Je viens de mettre un long délai pour le recordfail :

if [ "\${recordfail}" = 1 ]; then
  set timeout=30
else
  set timeout=${2}

Cela signifie que vous obtenez un délai de 30 secondes lors du démarrage, si le démarrage précédent a échoué. (Un peu comme cet autre système d'exploitation le fait...)

Cela pourrait (et IMHO devrait) même être un paramètre juste là dans /etc/default/Grub.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X