Caros amigos aqui uma demonstração prática como eu corrigi(Agradeço ao amigo SelvaKing pela orientação) os erros do Grub na instalação de um 3º sistema em um computador com 2 Hds.
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 3º 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 3º sistema no 2º Hd(Sdb) o quê ocorreu? - O Big Linux instalou normalmente e 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 3º sistema (Big Linux), qual 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 pra usar determinada partição como referência para os próximos comandos.
#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 2° 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” vai aparecer o Menu do GRUB que acompanha o Ubuntu. O que nós vamos fazer e 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 usa ele, 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 tabé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, se, 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.