Restaurando o GRUB após a instalação de outro sistema operacional
Autor: Antonio | Publicado: 2010-10-17T21:10:00-03:00

No seu disco rígido estão instalados dois ou mais sistemas operacionais em dual boot? Na hora de instalar (ou reinstalar) um deles o menu de boot do GRUB sumiu? Veja nessa dica como recuperá-lo através de um LiveCD.

Os passos aqui apresentados foram executados em um computador com Windows 7 e Kubuntu 10.10 em dual boot com GRUB 2.0 instalado no disco rígido, mas os mesmos devem servir para outras distribuições Linux (como Ubuntu, por exemplo), mesmo que a versão do GRUB nelas instalada não seja a 2.0 (como Debian ou Kurumin). Para executá-los, você precisará iniciar um sistema Linux a partir de um LiveCD, que não precisa necessariamente ser da mesma distribuição instalada no computador. Após iniciá-lo, abra o terminal.

Primeiramente, devemos saber em qual partição do disco rígido está instalado o Linux. Se você não souber qual é a partição, este comando pode ajudá-lo:

<![CDATA[
# sudo fdisk -l
]]>

Ele deve retornar informações sobre os discos e suas partições. No meu computador, ele retornou isto:

<![CDATA[
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf05ada11

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       13055   104857600    7  HPFS/NTFS
/dev/sda2           13055       32636   157286400    7  HPFS/NTFS
/dev/sda3           32636       38914    50425856   83  Linux
]]>

Como você pode ver, o Linux está instalado na partição /dev/sda3. Vou utilizá-la como exemplo. Nos comandos a seguir, lembre-se de substituir essa partição pela equivalente no seu computador. Prosseguindo, vamos montá-la:

<![CDATA[
# mkdir /mnt/sda3
# mount /dev/sda3 /mnt/sda3
]]>

Para que possamos "entrar" nela através do chroot, vamos "emprestar" alguns recursos do nosso sistema para o sistema nela instalado (observe que já fizemos isso em outro artigo publicado aqui no blog do AvmLinux). Faremos isso através dos comandos a seguir:

<![CDATA[
# mount --bind /dev /mnt/sda3/dev
# mount --bind /dev/pts /mnt/sda3/dev/pts
# mount --bind /proc /mnt/sda3/proc
# mount --bind /sys /mnt/sda3/sys
]]>

Finalmente, entramos no sistema que está instalado na partição:

<![CDATA[
# chroot /mnt/sda3
]]>

O comando a seguir é na verdade opcional, mas garante que a lista de sistemas operacionais oferecidos pelo GRUB na hora do boot esteja atualizada. Eu o executei aqui no meu computador.

<![CDATA[
# update-grub
]]>

Ele procura por sistemas operacionais no disco rígido, gera o arquivo de configuração do GRUB e retorna uma mensagem dizendo que a operação foi concluída com sucesso:

<![CDATA[
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.35-22-generic
Found initrd image: /boot/initrd.img-2.6.35-22-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done
]]>

Podemos então finalmente instalar o GRUB no disco rígido. Para isso, execute o seguinte comando (lembre-se de substituir /dev/sda pelo seu disco rígido):

<![CDATA[
# grub-install /dev/sda
]]>

Se ele retornar a seguinte mensagem, tudo ocorreu perfeitamente:

<![CDATA[
Installation finished. No error reported.
]]>

Agora tudo o que temos que fazer é sair do sistema operacional instalado no disco rígido, desmontar as pastas que montamos anteriormente e reiniciar o computador. Tudo isso pode ser feito através dos seguintes comandos:

<![CDATA[
# exit
# umount /mnt/sda3/dev/pts
# umount /mnt/sda3/dev
# umount /mnt/sda3/proc
# umount /mnt/sda3/sys
# umount /mnt/sda3
# reboot
]]>

Há outra solução ainda mais prática apresentada na wiki do Ubuntu, que não abordarei aqui por não ter testado a execução desses comandos nem saber sua compatibilidade com as distribuições anteriormente citadas. No entanto, amostro a seguir quais seriam os comandos que provavelmente eu usaria no meu computador para restaurar o GRUB, segundo essa solução.

<![CDATA[
# mount /dev/sda3 /mnt/sda3
# grub-install –root-directory=/mnt/sda3/ /dev/sda3
# update-grub
# reboot
]]>

Um abraço a todos e até a próxima.

Fontes
Grub 2 - Ubuntu WikiIntrodução - Entendendo a configuração do Lilo e grub