web-dev-qa-db-fra.com

Le serveur démarre à l'invite après le redémarrage

Ubuntu Server 10.04.4 LTS
Aucun autre système d'exploitation installé
RAID matériel (3Ware 9650SE)
Partition unique (/ dev/sda2) plus swap (/ dev/sda3)
Version Grub: GNU GRUB 1.98-1ubuntu13

Depuis l'application d'une mise à jour récente du noyau, le serveur démarre toujours à l'invite grub après un redémarrage.
Il n'y a pas de menu de démarrage ou de message d'erreur - juste un grub > Invite.
Je peux démarrer le système comme suit:

set root=(hd0,2)
linux /vmlinuz root=/dev/sda2 ro
initrd /initrd.img
boot

Une fois que c'est terminé, j'ai essayé de faire update-grub mais le problème ne disparaît pas.
J'ai aussi essayé grub-install --recheck /dev/sda mais cela n'aide pas non plus.

Pour une raison quelconque, il démarre toujours à l’invite grub.

Mon /boot/grub/grub.cfg:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  set saved_entry=${prev_saved_entry}
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
insmod ext2
set root='(hd0,2)'
search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
set locale_dir=($root)/boot/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-40-server' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux   /boot/vmlinuz-2.6.32-40-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro   quiet
    initrd  /boot/initrd.img-2.6.32-40-server
}
menuentry 'Ubuntu, with Linux 2.6.32-40-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    echo    'Loading Linux 2.6.32-40-server ...'
    linux   /boot/vmlinuz-2.6.32-40-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-2.6.32-40-server
}
menuentry 'Ubuntu, with Linux 2.6.32-33-server' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux   /boot/vmlinuz-2.6.32-33-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro   quiet
    initrd  /boot/initrd.img-2.6.32-33-server
}
menuentry 'Ubuntu, with Linux 2.6.32-33-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    echo    'Loading Linux 2.6.32-33-server ...'
    linux   /boot/vmlinuz-2.6.32-33-server root=UUID=1044722d-a8c7-4983-b6a4-f9faa3d4e79f ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-2.6.32-33-server
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod ext2
    set root='(hd0,2)'
    search --no-floppy --fs-uuid --set 1044722d-a8c7-4983-b6a4-f9faa3d4e79f
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
if [ ${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

Je n'ai pas sciemment modifié les fichiers dans /etc/grub.d ou/etc/default/grub.

J'ai lu beaucoup de messages sur le grub ces derniers jours et la plupart semblent prétendre que l'exécution de update-grub résoudra le problème, mais cela n'a pas fonctionné pour moi.

De plus, j'aimerais que cela ne se produise pas si possible dans la prochaine mise à jour du noyau.

Finalement; le serveur réside dans un centre de données distant - j’ai un accès à distance KVM, mais il est difficile de le démarrer à partir d’un CD live, de sorte que les solutions qui n’impliquent pas cette solution sont préférées. :-)

4
Darren Greaves

J'ai compris celui-ci maintenant.

La solution ici l'a fait pour moi: https://serverfault.com/questions/243343/headless-ubuntu-server-machine-somfois-stuck-at-grub-men

J'ai changé mon /etc/grub.d/00_header et modifié la section recordfail en:

 if [\ $ {recordfail} = 1]; puis 
 set timeout = $ {GRUB_TIMEOUT} 
 sinon 
 set timeout = $ {GRUB_TIMEOUT} 
 f 
 EOF 

Ran Sudo update-grub, redémarré et démarré directement dans Ubuntu. Yipee!

5
Darren Greaves

De https://serverfault.com/a/482020/158759 :

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

Par exemple, si vous souhaitez un délai d'expiration de 2 secondes (évitant ainsi les blocages pour les redémarrages sans surveillance), ajoutez simplement la ligne suivante dans /etc/default/grub:

GRUB_RECORDFAIL_TIMEOUT=2

N'oubliez pas de lancer update-grub après cela ...

1
Alastair Irvine

Je viens de mettre à niveau un serveur d'Ubuntu 10.04 à 12.04, et la solution (ainsi que plusieurs autres dispersées autour des internets) ne fonctionnait pas du tout pour moi. Je suis toujours retourné au menu grub> au redémarrage.

Enfin, cependant, j'ai réussi à faire fonctionner les choses. Je devais faire deux choses:

Sudo apt-get install grub2 
Sudo grub-install /dev/sda

J'ai fait l'installation de grub2 car dpkg -l | grep grub n'affichait rien d'autre que grub2-common - il manquait les composants grub2 que apt-cache search grub renvoyait. C’était peut-être facultatif, mais en fonction des rapports de bogues et des solutions de contournement que j’étais en train de constater, j’ai poursuivi l’installation du paquet grub2 disponible dans les référentiels système mis à jour 12.04.

Pour le grub-install, j'ai choisi le disque sur lequel je chargeais (ceci peut être trouvé avec fdisk -l ou df, par exemple). Le numéro de la partition n’était pas nécessaire (c’est-à-dire que j’ai choisi le disque sda au lieu de disque + partition sda1).

Je n'ai pas exécuté grub-update; cela a fonctionné immédiatement au redémarrage.

Afin d'exécuter les commandes, j'ai dû démarrer sur mon système, avec seulement de légères variations par rapport à l'exemple du PO:

En supposant que/dev/sda1 soit la cible:

grub>
root (hd0,1)  # "1" matches the partition number
linux /vmlinuz root=/dev/sda1 ro  #again, modify for the drive/partition 
initrd /initrd.img
boot

La complétion automatique du menu grub était utile pour ces options. Je ne crois pas que cela vous permettra de spécifier une partition non existante avec la directive root, par exemple.

0
belacqua