larva: bota da ISO
Como posso arrancar para um ficheiro ISO no GRUB? O ficheiro ISO está numa partição reiserfs e o GRUB pode aceder ao mesmo (já testado).
O maior problema em arrancar um ficheiro ISO é que as ISOs que são concebidas para serem inicializadas são quase sempre concebidas para serem inicializadas de um CD. Como explicado no blog do Marco em relação ao Grub 2 (mina de ênfase):
GRUB pode ler imagens ISO9660 (“iso”). Pode, por exemplo, carregar os primeiros sectores e arrancá-lo. Mas a maioria das pessoas não se apercebe que “o que então?”. O que faria o sistema operativo carregado? Muito provavelmente procurará um CDROM, que não encontrará, e falhará.
Então ** a forma mais simples** de arrancar a partir de algum ficheiro ISO aleatório é carregá-lo numa máquina virtual (VirtualBox, VMware, ou PC Virtual) como um CD virtual e arrancá-lo lá. Isso deve quase sempre funcionar, porque para o VM, não é um ficheiro ISO – é um CD real em hardware de CD real.
Arrancar a partir de um ficheiro ISO em metal nu é muito mais difícil. Como se faz isto depende da versão do Grub que se está a usar, e os resultados podem diferir dependendo da ISO que se está a usar e de como foi configurado para arrancar. É por isso que a maioria das ferramentas boot-ISO-from-USB (Unetbootin, WinToFlash, etc) normalmente extract o conteúdo ISO para a unidade – porque dessa forma podem ser acedidas directamente, sem confundir o SO a ser inicializado.
… não tenho a certeza. Se possível, as entradas do menu serão provavelmente muito parecidas com o Grub4DOS, embora eu pense que o comando “map –hook” é um melhoramento do Grub4DOS. No lado positivo, o Grub tem um suporte de sistema de ficheiros mais amplo do que o Grub4DOS.
Uma nota em Grub com reiserfs (não confirmado) indica que “tem de montar a sua partição com notail
para que ela funcione”.
Memdisk é uma opção; ver abaixo.
Grub4DOS oferece alguma “emulação de CD” experimental que funciona com algumas ISOs. Infelizmente, o Grub4DOS apenas lê sistemas de ficheiros FAT32/NTFS. Descarregar Grub4DOS.
Aqui está um exemplo de entrada 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 a ISO Win7 pode ser inicializada com esta entrada :
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
Outras ISOs podem ser inicializadas com Memdisk :
title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
kernel /memdisk iso
initrd /hdt.iso
Também pode usar um configurador de menu como MultiBootISOs.exe da PenDriveLinux . Coloque ISOs na unidade flash, e execute o utilitário para instalar o bootloader e configurar o menu de arranque.
Aqui está um episódio de Hak5 na instalação do Grub4DOS.
Aqui está um par de exemplos de entradas do Grub2. O chainloader não funciona actualmente para iniciar uma ISO, por isso estas entradas devem (1) usar loopback para “montar” a ISO, e (2) adicionar algo como iso-scan ou findiso à linha linux que especifica o ficheiro ISO.
Infelizmente, não há uma forma genérica de o fazer. Cada entrada de arranque diferente deve ser personalizada ao conteúdo da ISO de destino. A maioria dos LiveCDs Linux utilizam o ISOLINUX como bootloader; encontrar o isolinux.cfg e examinar essa entrada de arranque para ver o que normalmente arranca.
Exemplos de entradas fonte ):
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 estiver a tentar arrancar um LiveCD não-Linux, pode estar sem sorte. Mais uma vez, Memdisk pode ajudar :
menuentry "Boot Hardware Detection Tool from iso" {
linux16 /memdisk iso
initrd16 /hdt.iso
}
Pode utilizar o dd do terminal para escrever um ficheiro iso para uma partição. Basta ter cuidado, se usar o dd de forma errada, pode limpar tudo. Deve ser algo parecido com isto: dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition