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 +1title 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!
Abraços, fui