quarta-feira, 1 de abril de 2015

Como recuperar o boot do Linux?

O computador tem o Windows 7 e o cara instala o Ubuntu (ou qualquer outra distribuição Linux) em dual-boot. Aparece aquele menuzinho básico na hora de iniciar o computador perguntando qual sistema você quer iniciar. Tudo funciona até que usuário resolve instalar o Windows 8. Aí o menu de inicialização (o Grub) some. Não dá mais prá carregar o Linux. O que fazer?

Já vi várias pessoas com esse tipo de problema. O que ocorre é que na instalação do Linux o sistema de boot (geralmente o Grub) detecta os sistemas operacionais instalados no computador e cria o menu de opções. Quando você instala uma nova versão do Windows este acha que você só vai usar Windows e simplesmente ignora o Linux.

Para resolver isso é simples. Primeiro dê o boot no computador com um live-cd da mesma forma que você faria se fosse instalar o Linux. Em um terminal texto digite o comando abaixo como root.

# fdisk -l
Disk /dev/sda: 21 GB, 21467980800 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391    7  HPFS/NTFS
Warning: Partition 1 does not end on cylinder boundary.
/dev/sda2              17        1337    10602900    7  HPFS/NTFS
Warning: Partition 2 does not end on cylinder boundary.
/dev/sda3            1337        2611    10233405    5  Extended
Warning: Partition 3 does not end on cylinder boundary.
/dev/sda5            1337        2548     9727357   83  LinuxWarning: Partition 5 does not end on cylinder boundary.
/dev/sda6            2548        2611      506047   82  Linux swap
Warning: Partition 6 does not end on cylinder boundary.
Warning: Unable to open /dev/sr0 read-write (Sistema de arquivos somente para leitura).  /dev/sr0 has been opened read-only.
Error: /dev/sr0: unrecognised disk label
Error: /dev/zram0: unrecognised disk label

Reparem na linha em negrito. A partição /dev/sda5 contém o drive raiz do Linux. Crie uma pasta para podermos montar o disco.

# mkdir /mnt/disco

Monte a partição do Linux na pasta criada.

# mount /dev/sda5 /mnt/disco

É necessário montar o drive virtual /dev dentro do /mnt/disco

# mount -o bind /dev/ /mnt/disco/dev/

Agora devemos usar o drive /mnt/disco como nosso drive raiz

# chroot /mnt/disco

Agora basta reinstalar o grub.

# grub-install /dev/sda 
Installation finished. No error reported.

Pront! Agora basta reiniciar o equipamento e testar.