Preciso reinstalar o grub no MBR depois de alterar a partição de inicialização

0

Eu tenho um servidor Centos 6 residente no ambiente de nuvem que eu quero mover a partição raiz do disco rígido existente para outro.

No disco rígido original (/ dev / xvda1), ele tem outra pasta como /var , /usr , e eu não quero movê-los, então não posso simplesmente dd todo o antigo disco rígido para um novo (/ dev / xvdh1).

Eu tenho agora rsync todo o conteúdo em / (exceto os mencionados acima) para /dev/xvdh1 e /var /usr para outro disco rígido (/ dev / xvdg). Eu modifiquei o seguinte arquivo no novo disco rígido para usar o novo UUID:

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

Aqui está a saída de blkid :

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

linha em /etc/fstab que fazem o / mount:

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

Eu também tenho dd do código do setor de inicialização de /dev/xvda para /dev/xvdh1 :

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

Saída dos dois metadados do disco rígido:

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

Quando todas as etapas acima forem feitas, desanexei o disco rígido antigo e anexei o novo disco rígido como /dev/xvda1 , depois inicializo. No entanto, quando eu inicializo a máquina eu fiquei com o erro no grub:

Booting from Hard Disk... 
Geom Error

O tamanho de /dev/xvda1 e /dev/xvdh1 é diferente e, obviamente, o UUID também é diferente. Então minha pergunta é: eu preciso fazer um grub-install para fazer a modificação que eu fiz no grub.conf entrar no código do setor de inicialização? Ou nunca é necessário fazer isso porque o código de inicialização é o mesmo e as informações da partição raiz nunca são armazenadas lá, onde o código de inicialização conseguirá ler o grub.conf para obter as informações sem precisar de etapas extras?

Por favor, tire alguma luz se eu precisar alterar qualquer outro arquivo para fazer o grub inicializar o servidor, obrigado. (versão do grub: 0.94)

    
por sylye 15.02.2017 / 06:35

1 resposta

1

Sim, acredito que você deve executar grub-install , pois o local (indicado abaixo) depende do sistema de arquivos que contém o estágio 2.

Você diz que copiou o setor de inicialização do disco antigo ( /dev/xvda ) para a primeira partição no novo disco ( /dev/xvdh1 ). O código não precisa ir no primeiro setor do novo disco, não na partição?

O estágio inicial contém um ponteiro para o segundo estágio, como você sugere, e é anotado no gráfico nesta resposta: link

Além disso, o Debian está configurado para rodar grub-install durante as atualizações regulares de software, então não deve haver nenhum dano com a (sua) solução para executar grub-install como você quiser (com os argumentos apropriados, é claro). / p>     

por 15.02.2017 / 07:10