Veja minha resposta em sua pergunta de inicialização de arquivos ISO . Usando isso como ponto de partida, fiz alguns testes com um disco rígido antigo. Eu anteriormente configurei o Grub2 para inicializar um flash drive multi-ISO , então o que eu fiz foi:
-
Crie algumas partições em um disco rígido antigo. Isso foi feito usando um adaptador USB para IDE, então a unidade aparece como / dev / sdb.
- Partição 1: FAT32, ~ 2GB de tamanho
- Partição 2: não formatada
-
Montou a primeira partição para / mnt e instalou uma cópia do Grub do meu sistema na unidade:
sudo grub-install --no-floppy --root-directory=/mnt /dev/sdb
-
"Gravou" um ISO na segunda partição:
sudo dd if=avg.iso /dev/sdb2
-
Este é um ISO do scanner de vírus AVG; no meu flash drive multi-ISO, eu uso isso para inicializar o ISO diretamente:
menuentry "AVG Rescue CD" { loopback loop /iso/avg.iso linux (loop)/isolinux/vmlinuz max_loop=255 vga=791 init=linuxrc iso-scan/filename=/iso/avg.iso initrd (loop)/isolinux/initrd.lzm }
Para fazer este trabalho a partir de uma partição do disco rígido, precisamos nix o comando loopback e definir o dispositivo raiz e tal. Minhas tentativas de fazer com que o Grub2 descobrisse o dispositivo root automaticamente falharam, então eu apontei para a partição diretamente. Isso funciona, mas cuidado com a enumeração de dispositivos do Grub; a unidade que você está tentando inicializar pode não ser (hd0). Aqui está uma entrada de trabalho para a partição ISO:
menuentry "AVG Rescue CD" { linux (hd0,2)/isolinux/vmlinuz max_loop=255 vga=791 init=linuxrc initrd (hd0,2)/isolinux/initrd.lzm }
Isso resulta em uma partição ISO inicializável.
Isso funciona porque o Grub2 pode ler sistemas de arquivos ISO9660, porque esse ISO específico está carregando um SO que pode lidar com um ISO em uma partição, e porque praticamente tudo que o kernel carrega está no initrd . / p>
Se você estiver usando o Grub4DOS ou o Grub 1, você pode conseguir um truque semelhante com o chainloader. Presumindo que isso funcione para inicializar o ISO do Win7 diretamente ( source ):
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
Você pode ter sorte com essa modificação (supondo que você "queimou" o ISO na segunda partição primária, (hd0,1); caso contrário, substitua a partição correta):
title Windows 7
map (hd0,1) (hd32)
map --hook
chainloader (hd32)
Você também pode se safar disso:
title Windows 7
chainloader (hd0,1)
No entanto, o ISO não está realmente configurado para inicializar a partir de uma unidade, portanto, você pode encontrar outros problemas.