Usando o GRUB4DOS para carregar o Windows XP e o Parted Magic do HD
AVISO: mexer com o MBR, bem como o uso do
(fonte)
O instalador do Windows XP usa exatamente o mesmo layout, colocando o início da primeira partição no setor 63.
Então, pressupondo uma instalação com uma partição apenas, o particionamento consistirá em:
- MBR: primeiro setor (512 bytes) contendo 440 bytes de código booteável, 4 bytes de assinatura de disco, 2 bytes vazios, 64 bytes da tabela de partiçoes, 2 bytes de assinatura de boot (AA55h).
- 62 setores vazios.
- Começo da primeira partição no setor 63.
O mecanismo de boot do Windows é simples, pois não envolve código variável. O código booteável do MBR procura pela partição ativa do disco. Ao achá-la, faz um chain load do VBR (Volume Boot Record) nela presente, ou seja, carrega o código booteável existente no início (primeiro setor) desta partição. Este, por sua vez, assume o comando, carrega o NTLDR e acabou, o Windows XP estará sendo iniciado.
Para usarmos o GRUB4DOS, existem algumas possibilidades. Podemos disfarçá-lo de NTLDR, ou colocá-lo no lugar do VBR da partição (equivale a "instalar na partição"), mas eu prefiro deixar a partição intacta e só trocar o código de boot do MBR.
Para isso, precisamos de um live CD Linux.
Com algum live CD carregado, para fins de demonstração, podemos apagar os primeiros 440 bytes do disco. Isso não apagará a tabela de partição, apenas excluirá o código booteável que o Windows colocou lá. A estrutura do particionamento continuará intacta. Considerarei daqui para frente o HD como
Como medida de saneamento, podemos limpar os 62 setores não usados para nos certificarmos que estarão zerados:
Depois destes dois comandos, a máquina não dará mais boot. O BIOS ou ficará parado após o POST, ou (em caso de BIOS mais novos) emitirá um aviso que o HD não é booteável.
Para instalar o GRUB4DOS, baixe a versão mais recente e descompacte-a.
Dê permissão de execução ao binário
As opções do bootlace.com são estas:
Agora, monte a partição e copie o arquivo
Este é um arquivo de configuração básico. Leia o arquivo
Desmonte a partição e pronto. Ao reiniciar, o código de boot presente no MBR agora é do GRUB4DOS. Ele ocupa, além dos primeiros 440 bytes do MBR, parte dos 62 setores antes não usados. Esse código entende a estrutura do sistema de arquivos[1] e carrega o grldr, que é a parte principal. Então ele interpreta o arquivo de configuração, procurando em todas as partições do disco (find --set-root) um arquivo chamado "ntldr", o boot loader do Windows XP. Achando-o, "executa-o" (chain load) e ele assume o controle. Caso o arquivo exista em mais de uma partição, ele para de procurar no momento que acha o primeiro deles.
A partir de agora, você pode adicionar sistemas Linux, como o Parted Magic, que pode ser carregado a partir de partições NTFS. Baixe o ISO e extraia a pasta pmagic para a raiz da partição do Windows XP. Depois, edite o
Assim, a menos que o sistema de arquivos NTFS esteja completamente demolido, em caso de problemas com o Windows, você tem o Parted Magic para emergências. Seria possível ter também uma partição separada (e até mesmo oculta) só para o Parted Magic, pois daí mesmo com a partição do Windows inacessível, você conseguirá carregá-lo.
MIÚDOS
- O particionamento feito a partir do Windows Vista é um pouco diferente. A parte relevante aqui é que ficam 2047 setores não usados antes da primeira partição. Como o GRUB4DOS suporta carregar via chain load o bootmgr (que substitui o ntldr) usado a partir do Vista, em teoria, o post se aplica da mesma forma; não testei, contudo.
[1] os sistemas de arquivos suportados pelo GRUB4DOS são: EXT2/3/4, FAT12/16/32, NTFS, ISO9660 (Rock Ridge), exFAT
dd
aqui comentado, é um procedimento arriscado, que pode ocasionar perda de dados. Tome cuidado e faça backup antes de prosseguir.(fonte)
O instalador do Windows XP usa exatamente o mesmo layout, colocando o início da primeira partição no setor 63.
Então, pressupondo uma instalação com uma partição apenas, o particionamento consistirá em:
- MBR: primeiro setor (512 bytes) contendo 440 bytes de código booteável, 4 bytes de assinatura de disco, 2 bytes vazios, 64 bytes da tabela de partiçoes, 2 bytes de assinatura de boot (AA55h).
- 62 setores vazios.
- Começo da primeira partição no setor 63.
O mecanismo de boot do Windows é simples, pois não envolve código variável. O código booteável do MBR procura pela partição ativa do disco. Ao achá-la, faz um chain load do VBR (Volume Boot Record) nela presente, ou seja, carrega o código booteável existente no início (primeiro setor) desta partição. Este, por sua vez, assume o comando, carrega o NTLDR e acabou, o Windows XP estará sendo iniciado.
Para usarmos o GRUB4DOS, existem algumas possibilidades. Podemos disfarçá-lo de NTLDR, ou colocá-lo no lugar do VBR da partição (equivale a "instalar na partição"), mas eu prefiro deixar a partição intacta e só trocar o código de boot do MBR.
Para isso, precisamos de um live CD Linux.
Com algum live CD carregado, para fins de demonstração, podemos apagar os primeiros 440 bytes do disco. Isso não apagará a tabela de partição, apenas excluirá o código booteável que o Windows colocou lá. A estrutura do particionamento continuará intacta. Considerarei daqui para frente o HD como
/dev/sda
-- adapte caso necessário.# dd if=/dev/zero of=/dev/sda bs=440 count=1
Como medida de saneamento, podemos limpar os 62 setores não usados para nos certificarmos que estarão zerados:
# dd if=/dev/zero of=/dev/sda bs=512 seek=1 count=62
Depois destes dois comandos, a máquina não dará mais boot. O BIOS ou ficará parado após o POST, ou (em caso de BIOS mais novos) emitirá um aviso que o HD não é booteável.
Para instalar o GRUB4DOS, baixe a versão mais recente e descompacte-a.
Dê permissão de execução ao binário
grub4dos-0.4.5c/bootlace.com
caso necessário -- apesar de ter a extensão ".com", é um binário híbrido, que roda sobre DOS e Linux (não funciona sobre Windows). Então, rode:# ./bootlace.com --no-backup-mbr --mbr-no-bpb --mbr-disable-floppy --time-out=0 /dev/sda
As opções do bootlace.com são estas:
BOOTLACE writes GRLDR BOOT RECORD to MBR or to the boot area of a file system. Usage: bootlace.com [OPTIONS] DEVICE_OR_FILE Options: --read-only, --floppy[=N], --boot-prevmbr-first, --boot-prevmbr-last, --no-backup-mbr, --force-backup-mbr, --mbr-enable-floppy, --mbr-disable-floppy, --mbr-enable-osbr, --mbr-disable-osbr, --duce, --time-out=T, --hot-key=K, --preferred-drive=D, --preferred-partition=P, --sectors-per-track=S, --heads=H, --start-sector=B, --total-sectors=C, --install-partition=I, --lba, --chs, --fat12, --fat16, --fat32, --vfat, --ntfs, --ext2, --serial-number=SN, --restore-mbr, --mbr-no-bpb, --chs-no-tune DEVICE_OR_FILE: Filename of the device or image. For DOS, a BIOS drive number (in hex 0xHH or decimal DDD format)can be used to access the drive.
Agora, monte a partição e copie o arquivo
grub4dos-0.4.5c/grldr
para a sua raiz. Ainda na raiz, crie um arquivo de texto chamado menu.lst
com o conteúdo:color white/blue green/blue default 0 timeout 20 title Windows XP find --set-root /ntldr chainloader /ntldr
Este é um arquivo de configuração básico. Leia o arquivo
grub4dos-0.4.5c/README_GRUB4DOS.txt
para obter mais informações.Desmonte a partição e pronto. Ao reiniciar, o código de boot presente no MBR agora é do GRUB4DOS. Ele ocupa, além dos primeiros 440 bytes do MBR, parte dos 62 setores antes não usados. Esse código entende a estrutura do sistema de arquivos[1] e carrega o grldr, que é a parte principal. Então ele interpreta o arquivo de configuração, procurando em todas as partições do disco (find --set-root) um arquivo chamado "ntldr", o boot loader do Windows XP. Achando-o, "executa-o" (chain load) e ele assume o controle. Caso o arquivo exista em mais de uma partição, ele para de procurar no momento que acha o primeiro deles.
A partir de agora, você pode adicionar sistemas Linux, como o Parted Magic, que pode ser carregado a partir de partições NTFS. Baixe o ISO e extraia a pasta pmagic para a raiz da partição do Windows XP. Depois, edite o
menu.lst
de acordo. No arquivo boot/syslinux/syslinux.cfg
estão as opções usadas por cada entrada do menu do CD do Parted Magic. Abaixo, adicionei ao nosso menu.lst
uma entrada baseada na opção "Default settings (Runs from RAM)" da versão 6.7.color white/blue green/blue default 0 timeout 20 title Windows XP find --set-root /ntldr chainloader /ntldr title Parted Magic find --set-root /pmagic/bzImage kernel /pmagic/bzImage edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 vmalloc=256MiB keymap=br-abnt2 pt_BR initrd /pmagic/initramfs
GRUB4DOS para carregar o Windows XP e o Parted Magic |
Assim, a menos que o sistema de arquivos NTFS esteja completamente demolido, em caso de problemas com o Windows, você tem o Parted Magic para emergências. Seria possível ter também uma partição separada (e até mesmo oculta) só para o Parted Magic, pois daí mesmo com a partição do Windows inacessível, você conseguirá carregá-lo.
MIÚDOS
- O particionamento feito a partir do Windows Vista é um pouco diferente. A parte relevante aqui é que ficam 2047 setores não usados antes da primeira partição. Como o GRUB4DOS suporta carregar via chain load o bootmgr (que substitui o ntldr) usado a partir do Vista, em teoria, o post se aplica da mesma forma; não testei, contudo.
[1] os sistemas de arquivos suportados pelo GRUB4DOS são: EXT2/3/4, FAT12/16/32, NTFS, ISO9660 (Rock Ridge), exFAT
Comentários
Postar um comentário