2010-06-18 14:25:36 +0000 2010-06-18 14:25:36 +0000
41
41

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).

Respostas (2)

55
55
55
2010-06-18 18:30:23 +0000

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.


Grub 1

… 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

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.


Grub 2

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
}
1
1
1
2014-09-03 13:55:11 +0000

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