Нужно ли мне переустанавливать grub в MBR после изменения загрузочного раздела

У меня есть сервер Centos 6, расположенный в облачной среде, и я хочу переместить корневой раздел с существующего жесткого диска на другой.

На исходном жестком диске (/ dev / xvda1) есть другие папки, например / var , / usr , и я не хочу их перемещать, поэтому я не может просто dd весь старый жесткий диск на новый (/ dev / xvdh1).

Теперь у меня rsync все содержимое из / (кроме упомянутых выше) в / dev / xvdh1 и / var / usr на другой жесткий диск (/ dev / xvdg). Я изменил следующий файл на новом жестком диске, чтобы использовать новый UUID:

  • / 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

Вывод метаданных обоих жестких дисков:

# 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)

После выполнения всех вышеуказанных шагов , Я отсоединил старый жесткий диск и подключил новый жесткий диск как / dev / xvda1 , затем загрузился. Однако, когда я загружаю машину, я застрял с ошибкой на grub:

Booting from Hard Disk... 
Geom Error

Размер / dev / xvda1 и / dev / xvdh1 разные, и, очевидно, их UUID тоже отличается . Итак, мой вопрос : нужно ли мне делать grub-install , чтобы внести изменения, которые я сделал для grub.conf в код загрузочного сектора? Или в этом нет необходимости, потому что загрузочный код тот же самый, а информация о корневом разделе никогда не сохраняется там, где загрузочный код сможет прочитать grub.conf , чтобы получить информацию без дополнительных шаг нужен?

Пожалуйста, пролейте свет, если мне нужно изменить какой-либо другой файл, чтобы grub загружал сервер, спасибо. (версия grub: 0.94)

0
15.02.2017, 08:20
1 ответ

Да, я считаю, что вам следует запустить grub-install , поскольку расположение (указано ниже) зависит от файловой системы, содержащей этап 2.

Вы говорите, что скопировали загрузочный сектор со старого диска ( / dev / xvda ) в первый раздел. на новом диске ( / dev / xvdh1 ). Разве код не должен находиться в первом секторе нового диска, а не в разделе?

Начальный этап содержит указатель на второй этап, как вы предлагаете, и отмечен на рисунке в этом ответе: https: //unix.stackexchange.com / a / 258867/216116

Кроме того, Debian настроен для запуска grub-install во время регулярных обновлений программного обеспечения, поэтому выполнение grub не должно причинить вреда (в) вашем решении. -установите как хотите (конечно, с правильными аргументами).

1
28.01.2020, 02:46

Теги

Похожие вопросы