ブートパーティションを変更した後、MBRにgrubを再インストールする必要がありますか?

ブートパーティションを変更した後、MBRにgrubを再インストールする必要がありますか?

クラウド環境にCentos 6サーバーがあり、ルートパーティションを既存のハードドライブから別のハードドライブに移動したいと思います。

/var元のハードドライブ(/dev/xvda1)には、 、 のような他のフォルダがありますが、これらを移動したくなくて/usr既存ddのハードドライブ全体を新しいハードドライブ(/dev/xvdh1)。

これで、上記以外のrsyncすべての内容を別のハードドライブ(/dev/xvdg)に保存しました。新しいUUIDを使用するために、新しいハードドライブで次のファイルを修正しました。//dev/xvdh1/var /usr

  • /etc/fstab
  • /boot/grub/grub.conf

出力は次のとおりですblkid

/dev/xvdh1: UUID="9b84e28c-5a12-4889-804a-753e56645333" TYPE="ext4"

/etc/fstabインストールを実行する行/

UUID="9b84e28c-5a12-4889-804a-753e56645333" /   ext4    defaults        1 1

/boot/grub/grub.conf:

default=0
timeout=1
title CentOS 6 (2.6.32-573.18.1.el6.x86_64)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.32-573.18.1.el6.x86_64 ro root=UUID=9b84e28c-5a12-4889-804a-753e56645333 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD console=ttyS0,115200 crashkernel=auto SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
        initrd /boot/initramfs-2.6.32-573.18.1.el6.x86_64.img

また、次のddブートセクタコードもあります。/dev/xvda/dev/xvdh1

dd if=/dev/xvda of=/dev/xvdh bs=446 count=1

2つのハードディスクメタデータ出力:

# file -s /dev/xvda
/dev/xvda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8cc500, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 16775168 sectors, code offset 0x48

# file -s /dev/xvda1
/dev/xvda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)

# file -s /dev/xvdh
/dev/xvdh: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, boot drive 0x80, 1st sector stage2 0x8cc500, GRUB version 0.94; partition 1: ID=0x83, active, starthead 32, startsector 2048, 4192256 sectors, code offset 0x48

# file -s /dev/xvdh1
/dev/xvdh1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (large files) (huge files)

上記のすべての手順を完了した後、既存のHDDを取り外し、新しいHDDを取り付けて/dev/xvda1起動しました。ただし、マシンを起動すると grub エラーが発生します。

Booting from Hard Disk... 
Geom Error

/dev/xvda1サイズが異なるので、/dev/xvdh1明らかにUUIDも異なります。だから私の質問例:ブートセクタコードにgrub-install修正を書き込むには、何が必要ですか?grub.confそれとも、ブートコードが同じで、ルートパーティション情報がそこに保存されず、追加のgrub.confステップなしでブートコードを読み取って情報を取得できるので、これは必要ありませんか?

grubにサーバーを起動させるために別のファイルを変更する必要がある場合は、説明してください。ありがとうございます。 (グラブバージョン:0.94)

ベストアンサー1

grub-installはい、場所(以下の説明を参照)は、手順2を含むファイルシステムによって異なるため、実行する必要があると思います。

以前のディスク(/dev/xvda)のブートセクタを/dev/xvdh1新しいディスク()の最初のパーティションにコピーしたと言いました。パーティションではなく新しいディスクの最初のセクタにコードを配置する必要はありませんか?

提案したように、最初のステップには、この回答のグラフに示されている2番目のステップへのポインタが含まれています。https://unix.stackexchange.com/a/258867/216116

さらに、Debianは定期的なソフトウェアアップデート中に実行されるように設定されているため、ソリューションを必要に応じて動作させるgrub-installことは問題ではありません(もちろん、適切なパラメータを使用して)。grub-install

おすすめ記事