GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS/RHEL 5,6 で GRUB (破損したブート パーティション) を回復する方法

問題

以下に示すように、システムは 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


Cent OS
  1. CentOS/RHEL 5,6 で破損したルート パーティションをレスキュー モードから回復する方法

  2. CentOS/RHEL/OEL 7 の MSDOS パーティション タイプで GRUB を再構築する方法

  3. CentOS/RHEL 7 で破損または空の /etc/mtab ファイルから回復する方法

  1. CentOS / RHEL 5,6 :レスキュー モードから GRUB ローダーを再インストールする方法

  2. CentOS / RHEL で新しい /boot パーティションを作成する方法

  3. CentOS/RHEL 7 および 8 で systemd ブート プロセスをデバッグする方法

  1. RHEL 8 / CentOS8Linuxで起動時にサービスを開始する方法

  2. Centos /RHEL8でスワップパーティションを作成して有効にする方法

  3. CentOS/RHEL で DM-Multipath 疑似デバイスを分割する方法