Como posso inicializar em um arquivo ISO no GRUB? O arquivo ISO está em uma partição reiserfs e o GRUB pode acessá-lo (já testou isso).
Como posso inicializar em um arquivo ISO no GRUB? O arquivo ISO está em uma partição reiserfs e o GRUB pode acessá-lo (já testou isso).
Respostas:
O maior problema ao inicializar um arquivo ISO é que os ISOs projetados para serem inicializados quase sempre são projetados para serem inicializados a partir de um CD . Conforme explicado no blog de Marco sobre o Grub 2 (ênfase minha):
O GRUB pode ler imagens ISO9660 ("iso"). Pode, por exemplo, carregar os primeiros setores e inicializá-lo. Mas a maioria das pessoas não percebe é "o que é então?". O que o sistema operacional carregado faria? Provavelmente, procurará um CDROM que não encontrará e falhará.
Portanto, a maneira mais simples de inicializar a partir de um arquivo ISO aleatório é carregá-lo em uma máquina virtual (VirtualBox, VMware ou Virtual PC) como um CD virtual e inicializá-lo lá. Isso quase sempre funciona, porque para a VM não é um arquivo ISO - é um CD real em hardware de CD real.
A inicialização de um arquivo ISO no bare metal é muito mais difícil. Como você faz isso depende de qual versão do Grub você está usando, e os resultados podem variar dependendo do ISO que você está usando e de como foi configurado para inicializar. É por isso que a maioria das ferramentas ISO de inicialização a partir de USB (Unetbootin, WinToFlash, etc) geralmente extrai o conteúdo ISO da unidade - porque dessa forma eles podem ser acessados diretamente, sem confundir o sistema operacional que está sendo inicializado.
... não tenho certeza. Se possível, as entradas do menu provavelmente se parecerão muito com o Grub4DOS, embora eu ache que o comando "map --hook" seja um aprimoramento do Grub4DOS. No lado positivo, o Grub tem um suporte mais amplo ao sistema de arquivos do que o Grub4DOS.
Uma observação no Grub com reiserfs (não confirmado) indica que você "precisa montar sua partição notail
para que ela funcione".
Memdisk é uma opção; ver abaixo.
O Grub4DOS oferece algumas "emulações de CD" experimentais que funcionam com algumas ISOs. Infelizmente, o Grub4DOS apenas lê sistemas de arquivos FAT32 / NTFS. Faça o download do Grub4DOS.
Aqui está uma entrada de amostra ( fonte ):
title fdfullcd.iso (0xFF)
find --set-root /fdfullcd.iso
map /fdfullcd.iso (0xFF)
map --hook
root (0xFF)
kernel /isolinux/data/memdisk
initrd /isolinux/data/fdboot.img
Supostamente, o ISO do Win7 pode ser inicializado com esta entrada :
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
Outros ISOs podem ser inicializados com o Memdisk :
title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
kernel /memdisk iso
initrd /hdt.iso
Você também pode usar um configurador de menus como o MultiBootISOs.exe do PenDriveLinux . Coloque os ISOs na unidade flash e execute o utilitário para instalar o carregador de inicialização e configurar o menu de inicialização.
Aqui está um episódio do Hak5 sobre a instalação do Grub4DOS.
Aqui estão alguns exemplos de entradas do Grub2. No momento, o chainloader não funciona para inicializar um ISO; portanto, essas entradas devem (1) usar loopback para "montar" o ISO e (2) adicionar algo como iso-scan ou findiso à linha linux que especifica o arquivo ISO.
Infelizmente, não há uma maneira genérica de fazer isso. Cada entrada de inicialização diferente deve ser personalizada para o conteúdo da ISO de destino. A maioria dos LiveCDs do Linux usa o ISOLINUX como um gerenciador de inicialização; encontre o isolinux.cfg e examine essa entrada de inicialização para ver o que normalmente inicializa.
Entradas de exemplo ( origem ):
menuentry "Ubuntu Live 9.10 32bit" {
loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
menuentry "Grml small 2009.10" {
loopback loop /boot/iso/grml-small_2009.10.iso
linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
initrd (loop)/boot/grmlsmall/initrd.gz
}
Se você está tentando inicializar um LiveCD não Linux, pode estar sem sorte. Novamente, o Memdisk pode ajudar :
menuentry "Boot Hardware Detection Tool from iso" {
linux16 /memdisk iso
initrd16 /hdt.iso
}
Você pode usar o dd do terminal para gravar um arquivo iso em uma partição. Apenas tome cuidado, se você usar dd errado, poderá limpar tudo. Deve ser algo como isto: dd if = Desktop / LinuxCDFile.iso de = / Path / To / Partition