Como corrigir o UUID no Grub após a restauração de outra máquina?

20

Eu quero restaurar um backup tar completo do Ubuntu 12.04 com todas as minhas personalizações, documentos, software instalado, etc. para uma máquina diferente.

Eu fiz o backup com os seguintes comandos:

sudo su
cd /
tar cvpzf ububackup.tgz --exclude=/ububackup.tgz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/tmp --exclude=/media /

No novo computador, fiz uma nova instalação do Ubuntu 12.04, movi o arquivo de backup para ele e, em seguida, restaurei o arquivo de backup com o seguinte:

tar xvpfz backup.tgz -C /

Como esperado (veja a resposta de Mike Whatever para esta pergunta: Copiar distro do Ubuntu com todas as configurações de um computador para um diferente ) isso quebrou o grub. Quando ligo o computador, recebo um erro:

error: no such device: ...

press any key to continue ...

Acredito que o motivo pelo qual o Grub está quebrado é que o UUID está procurando por correspondências no disco rígido antigo que não estejam no disco rígido do computador.

Como posso consertar meu grub para reconhecer o novo disco rígido? Procurei ajuda on-line "Corrigir o GRUB UUID", mas as etapas pareciam desatualizadas ou complexas. A resposta de Mike I vinculada ao acima me dá esperança de que há uma maneira bastante simples de consertar isso.

    
por snowguy 03.08.2012 / 09:59

4 respostas

18

Para resolver seu problema atual, você terá que mudar o (s) UUID (s) em "/ etc / fstab" e "/boot/grub/grub.cfg" (muito complicado).

Você pode usar o CD de instalação do Ubuntu para obter os UUIDs com o gparted (basta clicar com o botão direito do mouse na partição para a qual deseja obter o UUID e clicar em "Informações", selecionar UUID e copiá-lo com CTRL + C) ou linha de comando ( sudo blkid ).

Então você tem que editar "/ etc / fstab" no volume certo com gedit, nano ou outro.

Em um terminal, digite:

gksudo gedit /etc/fstab

e substitua os UUIDs antigos pelos novos.

IMPORTANTE: Claro, se você usar um CD de boot para fazer isso você terá que adicionar "/ media / xxxxx" antes de "/ etc / fstab": "/ media / xxxxx / etc / fstab". Você também pode usar gksudo gedit e abrir o arquivo para editar a si mesmo.

AVISO: Modificar "/boot/grub/grub.cfg" é muito complicado. Normalmente, deve ser gerado com o comando sudo update-grub .

Substitua os UUIDs antigos pelos novos em "/boot/grub/grub.cfg" inserindo o seguinte em um terminal:

gksudo gedit /boot/grub/grub.cfg

IMPORTANTE: Claro, se você usar um CD de boot para fazer isso você terá que adicionar "/ media / xxxxx" antes de "/boot/grub/grub.cfg": "/ media / xxxxx / boot / grub /grub.cfg ". Você também pode usar gksudo gedit e abrir o arquivo para editar a si mesmo.

Se você usar a solução complicada, recomendo que execute o sudo update-grub depois de inicializar o sistema com êxito.

Uma maneira mais simples, mas limpa, de reconfigurar o grub corretamente pode ser usar um disco de reparo de inicialização como o "Disco de Reparo de Inicialização": link

Espero que isso ajude você a resolver seu problema.

No entanto, você pode considerar o uso do Clonezilla para replicar o computador antigo no novo, conforme indicado no meu comentário.

    
por Golboth 03.08.2012 / 11:41
2

Presumivelmente, isso significa que o grub é iniciado e exibe uma opção para inicializar no Ubuntu, mas quando você seleciona que ele não inicializa?

Existem duas opções, penso:

  1. Use o editor de linha do GRUB para modificar a opção de inicialização do linux para carregar corretamente o linux (e depois execute o grub-install como root para definir permanentemente a configuração correta).
  2. Inicialize a partir de um pendrive do Ubuntu, monte a partição de disco do ubuntu, faça o chroot e execute o grub-install.

O primeiro caso deve ser mais fácil se você tiver apenas o Ubuntu e tiver apenas um único disco rígido; nesse caso, selecione a opção "Recuperação do Ubuntu" e pressione "e" para editar:

A entrada deve ser algo como:

insmod gzio
insmod part_msdos
insmod ext2
set root=('hd0,msdos0')
search --no-floppy --fs-uuid --set=root XXXXXX
linux /boot/vmlinuz-YYYYY root=UUID=XXXXXX ro recovery nomodeset
initrd /boot/initrd.img-YYYYY

Remova a linha "search" e substitua "root = UUID = XXXXX" na linha "linux" por "root = / dev / sda1". Experimente e inicialize isso e esperamos que, após um curto período de tempo, ele forneça o menu de recuperação do Ubuntu, que deve ter uma opção do grub, que deve reinstalar o grub corretamente.

Caso contrário, ou se você preferir não mexer com o grub diretamente (o que deve conter um aviso de saúde, use um CD / USB stick conforme documentado em link

    
por chronitis 03.08.2012 / 11:00
0

No meu caso, o UUID que o grub instalou era diferente do meu UUID atual ( sudo blkid ) para minha partição do Windows (confirmado no grub.cfg). Eu tentei vários métodos sem sucesso. Por fim, montei a partição do Windows com o gerenciador de arquivos e executei update-grub novamente, e o UUID foi atualizado com êxito no grub.cfg.

    
por Tavo 09.05.2013 / 07:50
0

O que eu fiz em vez de editar fstab e grub:

  1. eu fiz backup desses arquivos na nova instalação do Ubuntu ( tar -cvf /somedir/boot.tar /etc/fstab /boot/grub/grub.cfg )
  2. Restaurado do backup ( tar -xvpf /mnt/remotebk/full.tar )
  3. copia o arquivo fstab restaurado ( cp /etc/fstab /somedir/fstab.restored )
  4. restaura meus arquivos de inicialização de instalação recentes ( tar -xvpf /somedir/boot.tar -C / )
  5. Reiniciado e funcionou.

Estou usando máquinas virtuais vmware, eu fiz este processo para mover um servidor linux de um host para outro host.

    
por Roberto Dimas 19.11.2014 / 23:53