問題
以下に示すように、システムは grub> プロンプトで停止します。
このような状況から回復する方法。
解決策
上記のエラーが発生した場合、ほとんどの場合、ブート パーティションが破損しています。
1. 問題を修正するには、grub コマンドラインから実行します:
grub> find /grub/stage1 find /grub/stage1 (hd0,0)
上記のコマンドは、ステージ 1 を検索します (ステージ 1 は MBR に配置され、後で BIOS によって読み取られます)。これにより、ブート パーティションが存在する正確な場所が一覧表示されます。この場合は hd0,0 です。
2. 上記の find コマンドの例のように、hd0,0 (最初のディスクの最初のパーティション) にブート パーティションを復元します。
grub> root (hd0,0) Filesystem type is ext4fs, partition type 0x83
3. 次に、最初のディスク (hd0) に grub をセットアップします。上記の例のように、ブート ステージ 1 は hd0 にあります。
grub>setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /boot/grub/stage1 d (hd0) (hd0)1+15 p (hd0,1)/boot/grub/stage 2 /boot/grub/menu.lst"... succeeded Done.
4. コマンドが成功したら、サーバーを再起動します。
grub> reboot
システムが問題なく起動するかどうかを確認してください。
さらなるトラブルシューティング
問題が解決せず、grub コマンド ラインで再びシステムが停止する場合は、grub.conf が存在し、適切な値を保持しているかどうかを確認します。
grub> find (hd0,0)/grub/grub.conf find (hd0,0)/grub/grub.conf (hd0,0)
grub> cat (hd0,0)/grub/grub.conf cat (hd0,0)/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/vg_lnxovmsan2076-lv_root # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Oracle Linux Server Unbreakable Enterprise Kernel (3.8.13-16.2.1.el6uek.x86_64) root (hd0,0) kernel /vmlinuz-3.8.13-16.2.1.el6uek.x86_64 ro root=/dev/mapper/vg_root-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=uk LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_root/lv_root rd_LVM_LV=vg_root/lv_swap rd_NO_DM rhgb quiet crashkernel=256M@64M initrd /initramfs-3.8.13-16.2.1.el6uek.x86_64.img [Hit return to continue]
カーネル ブート パラメータに問題が見つかった場合は、カーネル ブート文字列を手動で指定できます:
grub> linux /boot/vmlinuz-3.8.13-16.2.1.el6uek.x86_64 ro root=/dev/mapper/vg_root-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=uk grub> boot
それでも解決しない場合、またはたとえば grub.conf ファイルが見つからない場合、または grub.conf で cat を実行しているときに、たとえば以下の出力が得られる場合:
grub> cat (hd0,0)/grub/grub.conf cat (hd0,0)/grub/grub.conf ???????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????
システムをレスキュー モードで起動し、何が起こっているかを確認する必要があります。上記の「???」付きの出力は、root-fs の破損を示しています。 grub.conf ファイルを復元した後でも grub がまだ機能しない場合、ブート イメージに関する grub エラーが引き続き発生する場合は、システムを再インストールする必要があります。
UEFI ブートのみ
UEFI ブートで Grub を復元するには、以下のコマンドを実行します:
# efibootmgr -v
その後実行:grub-install
# grub-install /dev/sda