Ubuntu Server 10.04.4 LTS
他のオペレーティングシステムはインストールされていません
ハードウェアRAID(3Ware 9650SE)
単一パーティション(/ dev/sda2)とスワップ(/ dev/sda3)
Grubバージョン:GNU GRUB 1.98-1ubuntu13
最近のカーネル更新を適用するため、サーバーは再起動後に常にgrubプロンプトで起動します。
ブートメニューやエラーメッセージはありません。grub >
プロンプトだけです。
次のようにしてシステムを起動できます。
set root=(hd0,2)
linux /vmlinuz root=/dev/sda2 ro
initrd /initrd.img
boot
いったん起動したら、update-grub
を試しましたが、問題は解決しません。
私もgrub-install --recheck /dev/sda
を試しましたが、助けにもなりません。
何らかの理由で、常にgrubプロンプトから起動します。
私の/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 ###
/etc/grub.dまたは/ etc/default/grubのファイルを故意に編集したことはありません。
ここ数日、多くのgrub関連の投稿を読みましたが、ほとんどがupdate-grub
を実行すると問題が解決すると主張しているようですが、それはうまくいきませんでした。
また、可能であれば次のカーネル更新が行われないようにしたいと思います。
最後に;サーバーはリモートデータセンターに存在します。リモートKVMアクセスがありますが、ライブCDからブートするのは難しいため、それを含まないソリューションが優先されます。 :-)
私は今これを見つけました。
ここの解決策は私のためにそれをしました: https://serverfault.com/questions/243343/headless-ubuntu-server-machine-sometimes-stuck-at-grub-men
/etc/grub.d/00_headerを変更し、recordfailセクションを次のように編集しました:
if [\ $ {recordfail} = 1]; then set timeout = $ {GRUB_TIMEOUT} else set timeout = $ {GRUB_TIMEOUT} fi EOF
Sudo update-grub
を実行して再起動し、Ubuntuを直接起動しました。ヤッピー!
https://serverfault.com/a/482020/158759 から:
Ubuntu 12.04 LTSには、/etc/default/grub
で設定できる特定のオプションがあります。
たとえば、2秒のタイムアウト(無人の再起動によるハングを回避する)が必要な場合は、/etc/default/grub
に次の行を追加するだけです。
GRUB_RECORDFAIL_TIMEOUT=2
その後update-grub
を実行することを忘れないでください...
サーバーをUbuntu 10.04から12.04にアップグレードしたところ、ソリューション(およびインターネットに散在する他のいくつかのソリューション)がまったく機能しませんでした。再起動時に常にgrub>
メニューに戻りました。
最後に、しかし、私は物事が機能するようになった。私は2つのことをしなければなりませんでした:
Sudo apt-get install grub2
Sudo grub-install /dev/sda
dpkg -l | grep grub
にはgrub2-common
以外は何も表示されなかったため、grub2をインストールしました-apt-cache search grub
が返したgrub2コンポーネントが欠落していました。これはオプションかもしれませんが、バグレポートと回避策に基づいて、更新された12.04システムリポジトリからgrub2パッケージをインストールしました。
grub-install
には、ロード元のディスクを選択しました(これは、たとえばfdisk -l
またはdf
で見つけることができます)。パーティション番号は必要ありませんでした(つまり、disk + partition sda1
の代わりにdisk sda
を選択しました)。
grub-update
を実行しませんでした。これは再起動時にすぐに機能しました。
コマンドを実行するために、OPの例とわずかに異なるだけで、システムを起動する必要がありました。
/ dev/sda1をターゲットとして想定:
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
Grubメニューのオートコンプリートは、これらのオプションに役立ちました。たとえば、root
ディレクティブで存在しないパーティションを指定できるとは思わない。