sábado, 21 de novembro de 2009

GRUB - Recuperação após instalação do Windows

Neste artigo vou mostrar como se recuperar de um "incidente" muito comum entre usuários novatos do Linux: Recuperar o Grub depois da instalação do Windows!

Mas este artigo serve também para qualquer outra situação em que o Grub tenha "desaparecido!"

Vou mostrar duas maneiras de como fazer isto: a maneira "assistida", onde será utilizada a opção de "Reparar o sistema instalado" do DVD do openSUSE; e a maneira "manual", onde será utilizada a opção "Sistema de recuperação".

Mas antes de prosseguir-mos, memorize esta informação: as configurações do GRUB ficam dentro de um arquivo chamado menu.lst, que fica dentro da pasta /boot/grub/.

A não ser que tenha acontecido um "desastre" dos grandes, este arquivo continua lá, embora você não esteja podendo dar boot pelo Linux.


Modo "assistido"

ATENÇÃO: Se você estiver usando o DVD da versão igual ou superior à versão 11.4 do OpenSuSE, não irá encontrar as opções de modo "assistido". Então pule para a seção Modo manual.

ATENÇÃO(2): Se você estiver usando a versão 12.2 ou superior, saiba que por default é instalado o GRUB2, ao invés do velho e conhecido GRUB. Em breve plubicarei uma atualização do Blog, tratando melhor deste assunto.


Ok, coloque o DVD de instalação do openSUSE na unidade e reinicie o computador, para dar boot pelo DVD. Quando parar na tela inicial, mude o idioma para "Português do Brasil" e selecione a resolução de sua preferência. Após isto, selecione a opção "Reparar o sistema instalado".

Existem três métodos de reparo. Como já sabemos qual é o problema, vamos selecionar o terceiro método. Veja a figura abaixo, para esclarecimentos.

Selecionando o método de reparo

Na tela seguinte, você seleciona a opção "Instalar Novo Carregador de Inicialização". O sistema irá detectar as partições por você e depois mostrará outra tela, já com algumas configurações. Clique na aba "Instalação do carregador de inicialização", para fazer-mos mais uma coisa. Verifique a figura abaixo.

Configurando um novo menu de inicialização para o GRUB

Por vias das dúvidas, selecione também a opção "Inicializar da MBR (Master Boot Record)"!

Quando terminar, clique em Ok. Será exibida uma mensagem de que a operação foi realizada com sucesso. Veja a figura a seguir.

Operação realizada com sucesso!


Para prosseguir, aperte o botão RESET! Isso mesmo: RESET!

Após alguns instantes, você verá o novo menu do Grub, como mostrado na figura abaixo.

GRUB recuperado!


Este método é eficaz. Mas você deve ter percebido que as coisas não voltaram a ser como antes. Em primeiro lugar, a tela "bonitinha" de splash já não aparece mais e o boot é feito no modo verbose, ou seja, você vê "coisas" acontecendo na tela.

Tecnicamente não há nada de errado com o novo menu. O mecanismo de recuperação criou um novo arquivo menu.lst, contendo instruções simplificadas para o boot. Mas, como estamos falando de Linux, pode ter certeza ele fez a "gentileza" de fazer um backup do menu.lst original. Sabendo disto, podemos recuperar o menu original do GRUB!


Recuperando o menu original do GRUB

Faça login no openSUSE e abra um terminal. Feito isto, digite

ls -l /boot/grub

Será mostrada uma listagem parecida com a da figura abaixo.

Listagem da pasta /boot/grub/


Como podemos ver na figura acima, o mecanismo de recuperação criou um novo arquivo menu.lst, mas fez uma cópia do antigo, com o nome menu.lst.old. Apenas para confirmar, vamos dar uma olhada em seu conteúdo. Digite agora o seguinte comando:

sudo cat /boot/grub/menu.lst.old

O conteúdo de menu.lst.old será exibido. Você verá algo parecido com o mostrado na figura abaixo.

menu.lst.old -- o menu.lst original!

Hmmm, interessante, não?!

Finalmente, para recuperar o menu.lst original, primeiro devemos fazer uma cópia do atual (habitue-se a fazer cópias de coisas que você vai alterar), para depois recuperar o original. Execute agora os dois seguintes comandos:

sudo mv /boot/grub/menu.lst /boot/grub/menu.lst.new
sudo cp /boot/grub/menu.lst.old /boot/grub/menu.lst

Pronto! Reinicie o computador, para ver como as coisas voltaram a ser como eram antes.


Modo "manual"

Este modo de recuperação é, certamente, o mais eficiente. Embora os inciantes no Linux fiquem geralmente "apavorados" em lidar com a linha de comando, se quiserem ter um futuro no Linux, é melhor habituarem-se a isto.

Neste método o GRUB é recuperado fazendo ao mesmo tempo a recuperação do menu original do GRUB! Vamos lá, então...
 
Coloque o DVD de instalação do openSUSE na unidade e reinicie o computador, para dar boot pelo DVD. Quando parar na tela inicial, mude o idioma para "Português do Brasil" e selecione a resolução de sua preferência. Após isto, selecione a opção "Sistema de recuperação".

Chegará o momento de fazer login e você simplesmente digita root e aperta Enter.

Onde está meu Linux?

Para que possamos prosseguir com este método, é preciso descobrir em qual disco o Linux foi instalado e também saber qual é a partição de boot. Para isto, vamos usar o fdisk.

Identificação dos HD

Se você tem apenas um HD, ele certamente será identificado por hda ou sda. Os HD do tipo IDE (ou PATA) são geralmente identificados por hd e os HD SATA ou SCSI são identificados por sd.

O "truque" é tentar iniciar de um jeito. Se não der certo, tentamos do outro!

Descobrindo onde está o Linux usando o fdisk

Chamamos o fdisk com o seguinte comando:

fdisk /dev/hda

Se ele responder com  um "Unable to open /dev/hda", você usa então

fdisk /dev/sda


Seja como for, uma vez dentro do fdisk, você digita o comando p, para listar as partições. Veja na figura a seguir toda a sequência de comandos abordados até aqui.

As partições de sda

Observe na figura acima as partições do disco sda. Observe mais atentamente algumas coisas:

1) A partição onde o Windows foi instalado é a /dev/sda4. Deduzimos isto por causa do sistema de arquivos NTFS;
2) A partição /dev/sda1 é a partição de swap do Linux;
3) Qual é a partição de boot do Linux, /dev/sda2 ou /dev/sda3?

Com a primeira observação, temos informações suficientes para mais tarde adicionar o Windows 7 no menu do GRUB!

Com relação a qual partição é a de boot, geralmente ela é a que vem depois da partição de swap! Em caso de dúvida, o tamanho da partição é o tira-teima. O openSUSE cria a partição home separa da partição de boot. E geralmente, também, ela é maior que a partição de boot. Então podemos deduzir que a partição de boot do openSUSE é a /dev/sda2!

Montando provisoriamente a partição de boot

Agora que sabemos qual o disco e a partição de boot do Linux, vamos preparar o caminho para restaurar o GRUB. Em primeiro lugar, vamos montar a partição. Digite o seguinte comando:

mount /dev/sda2 /mnt

Agora para facilitar os próximos procedimentos, mude a raiz do sistema para a partição montada, usando os seguintes comandos:

mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev

chroot /mnt

Fazendo isto, a partição montada dentro de /mnt passa a ser mais facilmente referenciada, usando /boot/grub no lugar de /mnt/boot/grub, por exemplo!

Recuperando o menu do GRUB

Tudo o que precisamos fazer agora, para restaurar o GRUB, é o seguinte:

cd /boot/grub
grub-install

Só isto!

Algumas linhas irão surgir na tela e, no final, você poderá ver a mensagem: "...suceeded"

Reinciando o computador


Finalmente, reinicie o computador, para ver tudo normal de novo. Pode apertar o botão RESET ou digitar mais educadamente o comando

shutdown -r now

THE END





Comentem, critiquem, fiquem à vontade!




.

8 comentários:

  1. isso aqui é realmente útil para quem tiver dificuldades igual eu tive, valew

    ResponderExcluir
  2. Obrigado, eu não teria conseguido recuperar o splash sem a sua ajuda, valew!

    ResponderExcluir
  3. Muito legal a tua iniciativa! Parabéns!

    ResponderExcluir
  4. Muito obrigado, você me ajudou a solucionar um problema que eu tinha com o OpenSUSE.

    ResponderExcluir
  5. No opensuse 12.2:

    Não deu certo, pois na pasta grub do sistema instalado não encontrei a pasta menu.lst.
    O comando grub-install deu erro devido a falta do arquivo grub.conf

    ResponderExcluir
    Respostas
    1. Amigo, no caso das versões 12.2 ou superior, no meu caso 12.3, o que muda é apenas o último comando.

      Ao invés de...

      grub-install

      Use este...

      grub2-install --recheck /dev/sda


      Um outro tutorial que segui para esta versão também não funcionou. E esse também não. Mas esse último comando eu peguei de lá e resolvel meu problema.

      Boa sorte.

      Excluir
  6. O opensuse 12.2 instala por padrão o GRUB2 e não o GRUB. Este é o problema!

    Neste caso, o diretório que você deve entrar é o /boot/grub2. Dentro dele deve existir o arquivo grub.cfg. Ao digitar grub-install, o yast é chamado automaticamente, permitindo as configurações do boot loader.

    ResponderExcluir