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. :-)
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!
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 ...
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.