Caros amigos, aqui vai uma demonstração prática de como eu corrigi os erros do GRUB na instalação de um terceiro sistema em um computador com 2 HDs. Agradeço ao amigo SelvaKing pela orientação.
Vamos aos fatos: computador com 2 HDs (sda e sdb), sendo que no sda tenho instalado o Windows XP e o Ubuntu 9.04 e em sdb o Big
Linux 4.2.
Primeiramente XP e Ubuntu rodando perfeitamente (Grub do Ubuntu gerenciando o boot - até então dual boot - e ambos instalados no sda). Ocorreu que na instalação do terceiro sistema (Big Linux), por razão de espaço, a instalação foi no sdb e ao iniciar o computador apareciam os 3 sistemas no Grub gerenciado pelo Big Linux, sendo que Big e XP rodavam normalmente, mas quando optava pelo Ubuntu começavam os erros (2, 15 e 22) e eu editando fstab, menu.lst e nada, só mudava o número do erro.
Porque o Windows (estando no mesmo HD do Ubuntu) rodava sem problemas? Sistemas operacionais só "bootam" se estiverem em uma partição primária e se estiverem em partições lógicas, precisam colocar o seu código de boot numa partição primária ou no MBR (era o caso do Ubuntu funcionando normalmente com o XP, pois na instalação o Ubuntu gravou no MBR). Importante: cada HD possui o seu espaço reservado para o MBR, ou seja, cada HD tem o seu próprio MBR.
Agora com a instalação do terceiro sistema no segundo HD (sdb) o que ocorreu? O Big Linux instalou normalmente, gravou o menu.lst dele no MBR deste HD e naturalmente iria "bootar" os sistemas das partições primárias e escritas neste MBR e o Ubuntu ficou fora por não estar em uma primária e sim em uma lógica e perdeu o seu GRUB neste novo MBR.
Agora consertando a instalação - Estando no terceiro sistema (Big Linux), quais seriam os passos a serem feitos? Primeiramente devemos recuperar o Grub do Ubuntu (que foi instalado primeiro e esta no mesmo HD do XP):
sudo grub
(vai aparecer o shell do Grub)
Grub>
find /boot/grub/menu.lst
(hd0,5) (Aqui está instalado o Ubuntu = sdaX - No meu caso sda5)
(hd1,2) (Aqui está instalado o Big Linux = sdbX - No meu caso sdb3)
Ao usarmos como referência a partição com o Grub do Ubuntu, o arquivo
/boot/grub/menu.lst dele será carregado no boot. Vai ficar como era antes de instalar o BIG. Depois acrescentaremos informações do BIG ao arquivo de configuração dele.
Então lá no SHELL usaremos o comando root que diz ao sistema para usar determinada partição como referência para os próximos comandos.
Grub>
root (hd0,5)
Filesystem type is ext2fs, partition type 0x83
Agora vamos instalar o Grub no SETOR DE BOOT desta partição e depois no MBR.
Grub>
setup (hd0,5)
Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0,5)"... failed (this is not fatal) Running "embed /boot/grub/e2fs_stage1_5 (hd0,5)"... failed (this is not fatal) Running "install /boot/grub/stage1 (hd0,5) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded Done.
Agora no MBR:
Grub>
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,5)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done.
Agora vamos instalar o GRUB do segundo HD na partição do BIG. Mudamos a referência do root.
Grub>
root (hd1,2)
Filesystem type is ext2fs, partition type 0x83
Agora vamos instalar aquele GRUB no SETOR DE BOOT de sdb3.
Grub>
setup (hd1,2)
Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd1,2)"... failed (this is not fatal) Running "embed /boot/grub/e2fs_stage1_5 (hd1,2)"... failed (this is not fatal) Running "install /boot/grub/stage1 (hd1,2) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded Done.
Colocar o GRUB no MBR deste HD.
Grub>
setup (hd1)
Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 18 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd1) (hd1)1+18 p (hd1,2)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done.
Agora sair do shell.
Grub>
quit
Ao "rebootar" aparecerá o menu do GRUB que acompanha o Ubuntu. O que vamos fazer é acrescentar comandos para iniciar o BIG ao arquivo de configuração do Ubuntu.
O GRUB tem dois modos de inicializar um sistema operacional, diretamente e indiretamente. Diretamente ele usa dois e até 3 comandos, a saber: root, kernel e initrd. O initrd só se torna necessário se a distro o usa. E indiretamente ele não liga pra quem está instalado na partição, ele só carrega o código de boot encontrado no SETOR DE BOOT da partição, por isto que o Linux inicializa o Windows, mas pode também inicializar outro Linux em outro HD, os comandos usados para inicializar indiretamente são: root e chainloader.
Para iniciar diretamente teremos que copiar o código exato que está no arquivo
/boot/grub/menu.lst do BIG e acrescentar ao menu.lst do Ubuntu. Indiretamente é só fazer root (hd1,2) e depois "chainloader +1".
Bem, vamos adiante, agora (já usando o Ubuntu) vamos editar o menu.lst do Grub do Ubuntu normalmente e acrescentar as linhas referentes ao Big Linux.
# gedit /boot/grub/menu.lst
title BigLinux, kernel 2.6.24-19-generic root (hd1,2)
kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sdb3 ro resume=/dev/sda7 quiet splash
initrd /boot/initrd.img-2.6.24-19-generic
Ficando desta maneira:
### END DEBIAN AUTOMAGIC KERNELS LIST
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
title BigLinux, kernel 2.6.24-19-generic root (hd1,2)
kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sdb3 ro resume=/dev/sda7 quiet splash
initrd /boot/initrd.img-2.6.24-19-generic
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1
Pronto, agora temos os 3 sistemas rodando sem nenhum problema. Devemos observar que esta situação aplica-se ao uso de mais de um HD. Portanto na instalação de mais de um sistema em um mesmo HD não haverá problemas (raros de ocorrer), o que vai acontecer normalmente é que o Grub inicial no boot será do último sistema instalado.
Nenhum comentário foi encontrado.