Corrigindo instalação de 3 Sistemas em mais de um HD.(Erro: 2 – 15 – 22)

Iniciado por Rsrocha, 23 de Maio de 2009, 22:35

tópico anterior - próximo tópico

Rsrocha

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.

Tobimax

Olá.
Belo tópico.

Eu estou com o mesmo problema, porém só um pouco diferente, vou te explicar.
Eu tenho 2 hds, e o Winxp e o Ubuntu estão ambos no 2° HD (no primeiro hd há mais um WinXP que não roda e esta com problemas, e se eu retiro esse hd o winxp do hd 2 não roda -.-"), quando eu rodo o ubuntu pelo grub vai normal, contudo quando entro pelo winxp e depois que eu reinicio aparece o error 22 no grub, ai eu faço o seguinte:
- Entro pelo live cd do ubuntu
- Abro o terminal e faço:
Citar
sudo grub
root (hd1,5) que é a partição do ubuntu
setup (hd0)

ai arruma o grub, mas se eu entro no windows denovo ocorre o mesmo erro denovo, sabe o que posso fazer para resolver, ou o que estou fazendo de errado?

desconfio de que preciso fazer setup (hd1,5) como voce fez na sua explicação

Se poder acompanhar meu tópico também por favor: http://ubuntuforum-br.org/index.php/topic,50615.0.html

Obrigado

Rsrocha

Notei que no seu menu.lst a disposição inicial da root que o Grub ordena está dessa maneira:

## default grub root device
## e.g. groot=(hd0,0)
# groot=cd58b457-1b0f-4535-b4a5-67f6bc4b7c10

E deveria estar com ##e.g groot=(hd1,5) que é onde está o Ubuntu, uma vez com o Ubuntu rodando você deve entrar no shell do Grub, use o comando find /boot/grub/menu.lst e lhe será mostrado as opções de root, feito isto use o comando root (hd1,5) (Que deve ter aparecido no comando anterior) e vai aparacer a mensagem "Filesystem type is ext2fs, partition type 0x83" agora arme o boot com o comando setup (hd1,5). Feito isto verifique se ocorreu a mudança no menu.lst de groot (hd0,0) por groot (hd1,5). Note que por estar no 2º Hd o Grub do Ubuntu vai disputar sempre com o Windows (Que está no hd0,0) a inicialização do computador, por isso a necessidade de armar o grub pelo MBR do hd do Ubuntu.

Tobimax

Executei o setup (hd1,5) e não alterou em nada:
## default grub root device
## e.g. groot=(hd0,0)
# groot=cd58b457-1b0f-4535-b4a5-67f6bc4b7c10

continua (hd0,0) como voce pode ver...

Rsrocha



Rsrocha

Cara, depois destes procedimentos você tentou reinstalar o Grub via LiveCD?
# groot=cd58b457-1b0f-4535-b4a5-67f6bc4b7c10 - Esta UUID está correta?
Com o comando sudo fdisk /dev/sda aparece a configuração do hd, e a letra "m" mostra opções, com a "p" você verá as partições, o "a" deve alternar as opções de inicialização, que no seu caso deve ocorrer com o sdb, então tente o fdisk /dev/sdb e escolher a partição que irá inicializar.

Tobimax

Não entendi direito o que você quer que eu faça...
executo sudo fdisk /dev/sdb e depois aperto executo a?
e depois escolho o número da partição?

Não tentei reinstalar o grub porque simplesmente não sei

Rsrocha

Veja bem, neste seu primeiro hd (Que deve ser "master") o computador sempre vai buscar as informações de inicialização neste seu hd, pois deve estar estabelecido na Bios (Na hora do boot) como sendo o seu "Mestre", e o 2º hd deve estar definido como "slave"(Escravo).Eu não se você sabe mas você pode trocar estas "ordens" de inicialização fazendo a troca do 1º hd para slave e o 2º para master, quando for iniciar a máquina(Aparecer o logotipo da sua placa) pressione "delete" (Vai aparecer tudo em inglês) http://br.geocities.com/helppc2004/3.html - Este tutorial vai esclarecer onde encontrar a opção de substituir  "master" por "slave". Mas antes de mais nada tente as dicas deste tutorial de como recuperar o grub - http://ubuntuforum-br.org/index.php/topic,14614.0.html. Eu particularmente recomendo o uso do Super Grub.