Autor Tópico: Corrigindo instalação de 3 Sistemas em mais de um HD.(Erro: 2 – 15 – 22)  (Lida 3465 vezes)

Offline Rsrocha

  • Usuário Ubuntu
  • *
  • Mensagens: 124
  • "O conhecimento só é útil se for compartilhado"
    • Ver perfil
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.

Offline Tobimax

  • Usuário Ubuntu
  • *
  • Mensagens: 25
    • Ver perfil
    • Naruto Arena Br
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

Offline Rsrocha

  • Usuário Ubuntu
  • *
  • Mensagens: 124
  • "O conhecimento só é útil se for compartilhado"
    • Ver perfil
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.

Offline Tobimax

  • Usuário Ubuntu
  • *
  • Mensagens: 25
    • Ver perfil
    • Naruto Arena Br
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...

Offline Rsrocha

  • Usuário Ubuntu
  • *
  • Mensagens: 124
  • "O conhecimento só é útil se for compartilhado"
    • Ver perfil
setup (hd1).

Offline Tobimax

  • Usuário Ubuntu
  • *
  • Mensagens: 25
    • Ver perfil
    • Naruto Arena Br
mesma coisa...

Offline Rsrocha

  • Usuário Ubuntu
  • *
  • Mensagens: 124
  • "O conhecimento só é útil se for compartilhado"
    • Ver perfil
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.

Offline Tobimax

  • Usuário Ubuntu
  • *
  • Mensagens: 25
    • Ver perfil
    • Naruto Arena Br
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

Offline Rsrocha

  • Usuário Ubuntu
  • *
  • Mensagens: 124
  • "O conhecimento só é útil se for compartilhado"
    • Ver perfil
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.