Baseado em fato real.
Configuração do Grub para dar boot em 3 sistemas e dois HDs diferentes (SATA1 [Debian Etch 4.0 r3 e Windows XP Professional] e IDE [Windows 7 Ultimate (BETA)]).
Dois HDs: SATA1 e IDE.
O hd SATA1 de 300Gb (sda) está particionado em 4 partições: (sda1) 1Gb Swap, (sda2) 50Gb ext3 (Debian Etch 4.0 r3), (sda3) 50Gb ntfs (Windows XP Professional), (sda4) 200Gb ext3 (backup).
O hd IDE de 40Gb (hda) está instalado em (hda2) ntfs (Windows 7 Ultimate (BETA)).
Como tenho tudo sobre controle no meu hd SATA1 (sda) onde está meu sistema principal, o Debian Etch 4.0 r3, e o mais valioso, a partição de "BACKUP", resolvi testar o sistema "BETA" da Microsoft o Windows 7 Ultimate (BETA) no IDE (hda). Desconectei o hd SATA1 (sda) e conectei o IDE (hda) para executar a instalação do BETA da Microsoft no IDE (hda), por precaução de não fazer nenhuma M... rsrsrs... no SATA1 (sda).
Depois da instalação do Windows 7 com sucesso no IDE (hda), desliguei o PC e reconectei o SATA1 (sda) junto com o IDE (hda) é claro! De início foi tudo como manda o figurino, liguei o PC e veio a tela do grub, então iniciei o Debian (sda2). Na configuração do grub em "/boot/grub/menu.lst, incluí o Windows 7, mas de início já estava conformado do boot do Windows 7 que não iria para frente, pois tinha instalado o sistema em um único hd conectado e depois reconectei o outro hd que esta com o grub "gerenciador de boot" instalado. Como o Windows só consegue dar boot quando em "primário", o gerenciador de boot gravado na mbr do hd IDE (hda) não iria subir pois com o SATA1 (sda) ligado, o IDE (hda) fica como secundário.
Então a configuração do grub ficou desta forma.
Exemplo de um Sistema Debian Etch 4.0 r3:
splashimage=(hd0,1)/boot/grub/caveira.xpm.gz
default 0
timeout 12
## ## End Default Options ##
title Debian
GNU/Linux, kernel 2.6.18-6-486
root (hd0,1)-----(sda2)
kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/sda2 ro
initrd /boot/initrd.img-2.6.18-6-486
savedefault
title Debian GNU/Linux, kernel 2.6.18-6-486 (single-user mode)
root (hd0,1)-----(sda2)
kernel /boot/vmlinuz-2.6.18-6-486 root=/dev/sda2 ro single
initrd /boot/initrd.img-2.6.18-6-486
savedefault
### END DEBIAN AUTOMAGIC KERNELS LIST
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda3
title Microsoft Windows XP Professional
rootnoverify (hd0,2)-----(sda3)
savedefault
makeactive
chainloader +1
# on /dev/hda2
title Microsoft Windows 7 BETA
rootnoverify (hd1,0)-----(hda2)
makeactive
map (hd1,0) (hd0,1)
chainloader +1
O grande segredo foi adicionar na configuração a opção "map (hd1,0) (hd0,1)" que o grub engana o bootloader do Windows dizendo que o hd IDE (hda) seja primário.
Resumo dos parâmetros
O "
rootnoverify" ao invés de root na segunda linha, pois a montagem de partição não se aplica ao Windows. O rootnoverify é usado porque esse parâmetro não tenta fazer nenhuma montagem.
O "
makeactive" tem a função de definir a partição em questão como ativa.
O "
map" que permite o carregamento do Windows quando este não está instalado no primeiro HD (regra obrigatória no Windows 9x, por exemplo). Sua utilização é feita da seguinte forma (supondo que o Windows esteja no segundo disco):
map (hd0) (hd1)
map (hd1) (hd0)
O "
chainloader +1", "chama" o carregador de boot do Windows, deixando a esse a tarefa de iniciar o sistema.
Então é isso, só quem mexe aprende, hehehe...
Agradecimento a minha esposa Daniela que tem muita paciência comigo rsrsrs...
Até a próxima.
Boa noite.
Eu acabei de instalar outro distrito Linux em meu HD (sda), eu possui o 7, Debian, Arch(agora).
Quando instalar o Arch ele pede para instalar o Grub, mais como já tenho ele detectou e falou para não instalar, mais um problema! ele não colocou a partição do Arch no Grub para pode iniciar.
Queria saber como irei colocar?
# fdisk -l
Disk /dev/sda: 250.0 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0xe77ce77c
Dispositivo Boot Start End Blocks Id System
/dev/sda1 1 13 102400 7 HPFS ou NTFS
Partition 1 does not end on cylinder boundary.
/dev/sda2 13 10199 81817600 7 HPFS ou NTFS
/dev/sda3 10200 22894 101972587+ 5 Estendida
/dev/sda5 * 10200 16306 49054446 83 Linux
/dev/sda6 16307 16572 2136613+ 82 Linux swap / Solaris
*****/dev/sda7 16573 22894 50781433+ 83 Linux
Disk /dev/sdb: 1000.2 GB, 1000203804160 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0xe30d664e
Dispositivo Boot Start End Blocks Id System
/dev/sdb1 1 121601 976760001 42 SFS
obs.: ***** É a nova partição.
Obrigado.