quarta-feira, 27 de outubro de 2010

Linux: Como resolver o Erro 18 do Grub nas instalações dual boot

Já faz um bom tempo que buscava uma solução para esse problema. Li diversos tutoriais, testei diversas soluções em várias Distros, mas não obtive sucesso, porém, hoje, usando o Debian... O meu caso é o seguinte possuo um hd de 160 GiB, em uma placa mãe que só enxerga até os 137.5 GiB, a famigerada #m810. Instalações de distros Linux no final do disco, ou as vezes nem tão no final assim sempre resultam em erro no #grub.

Obs.: Segundo Morimoto, o erro já ocorre em placas antigas a partir de 7.88 GiB.

Provavelmente o erro 18 (18 : "Invalid or unsupported executable format") está entre os que causam mais ódio entre as pessoas que o encontram após uma modificação na tabela de partição do hdd ou então após instalar uma distro, no final do hdd, em casos como o meu. Já perdi a conta de quantas vezes tive de utilizar o /fixmbr do console de recuperação do windows xp e depois reinstalar o linux para voltar ao tux.

Busquei várias soluções mas todas se mostraram ineficazes. Até que hoje usando o modo de recuperação do Debian 5.0.3 Lenny, e usando comandos já conhecidos, consegui restaurar o grub corretamente. Embora até o momento desse post não tenha testado o próprio Debian ainda.

Basicamente, os passos foram esses:

  • Coloque o dvd 1 do Debian Lenny, escolha Opções Avançadas (Advanced Options) > Modo de recuperação gráfico (Graphical rescue mode). 
  • Escolha a partição onde está o seu Debian ou distro linux equivalente.
  • Espere o sistema carregar, daí entãová respondendo as perguntas, até que ele inicie por completo.
  • A primeira opção, permite que abrimos uma janela do terminal, é nela que iremos fazer alterações necessárias. A terceira opção permite reinstalar o Grub, mas clicar nela agora é inútil, já que as configurações do grub, por algum motivo se tornaram inválidas. A última opção permite reinicializar o sistema.
  • Entre na primeira opção. Digite sudo fdisk -lu para ver a tabela de partição do hdd, isso lhe permitirá saber onde está seu Windows ou Linux, com base no sistema de arquivos dos mesmos, já que o Windows usa NTFS/FAT32 e Linux Ext3/ReiserFS.
    No meu caso foi algo desse tipo:
    /dev/hda1 - HPFS/NTFS
    /dev/hda2 - Ext3
    E assim por diante.
  • De posse dessa informação, abra o menu de configuração do grub. /boot/grub/menu.lst Aqui eu usei: vim /boot/grub/menu.lstEm alguns tutoriais eu vejo a recomendação de usar o comando update grub para detectar automáticamente as partições e grub install para atualizar, confesso que pra mim essa dupla nunca deu certo. Então já com o arquivo aberto, procure as linhas referentes aos sistemas que não estão comentadas, ou seja, não possuem # no começo da linha. O Debian usa o padrão de separar os outros sistemas do seu.
  • A entrada é algo do tipo:
    title Microsoft Windows XP Professional (hda1)
    root (hd0,0)
    makeactive
    chainloader +1
    title Debian GNU/Linux (testing/unstable) (hda5)
    root (hd0,4)
    kernel /boot/vmlinuz-2.6.18 ro quiet vga=791
    initrd /boot/initrd.img-2.6.18

  •  Como no meu caso a partição do Windows é a primeira,e  lembrando que o grub começa a contar por zero  para mim ficou root (hd0,0) E como Debian é a segunda, ficou root(hd0,1). O hd0 é o primeiro hdd (master). Altere a linha correspondende pressionando a tecla Insert, até aparecer na tela Replace, posicione no lugar e altere.
  • Depois é só salvar, pressione Esc, depois digite :save /boot/grub/menu.lst No Vim, os comandos são precedidos de 2 pontos (:), e só são aceitos se a tecla Esc for pressionada antes, indicando a saída do modo de edição.
  • Digite :q para sair do vim.
  • Entre novamente, para ver se as alterações foram salvas. vim /boot/grub/menu.lst Se tudo está ok, pressione Esc, depois digite :q para sair.
  • Saia do terminal
  • Na tela inicial, agora vá na terceira opção e restaure o grub.
  • O grub install irá perguntar onde deverá salvá-lo, escolha a mbr /dev/hda ou hd0.
  • Volte e escolha a quinta opção, reiniciar o sistema. Após reiniciar retire o dvd do Debian para poder dar o boot normalmente e ver se o grub está ok. Se estiver, tente entrar nos sistemas se entrar sem erros, sucesso! Caso não tenha conseguido, talvez você tenha colocado a partição errada no menu.lst ou não o tenha atualizado na instalação ou a causa do seu problema seja outra. 
  • De qualquer forma, boa sorte!
Links úteis:
Abraços, fui

Postagens populares