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

grub: avvio da ISO

Come posso avviare un file ISO in GRUB? Il file ISO è su una partizione reiserfs e GRUB può accedervi (già testato).

Risposte (2)

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

Il più grande problema con l'avvio di un file ISO è che le ISO che sono progettate per essere avviate sono quasi sempre progettate per essere avviate da un CD. Come spiegato sul blog di Marco riguardo a Grub 2 (enfasi mia):

GRUB può leggere immagini ISO9660 (“iso”). Può per esempio caricare i primi settori e avviarle. Ma la maggior parte della gente non si rende conto del “e poi? Cosa farebbe il sistema operativo caricato? Molto probabilmente cercherà un CDROM, che non troverà, e fallirà.

Quindi il modo più semplice per avviare da un file ISO casuale è caricarlo in una macchina virtuale (VirtualBox, VMware, o Virtual PC) come un CD virtuale e avviarlo lì. Questo dovrebbe funzionare quasi sempre, perché per la VM non è un file ISO, ma un vero CD su un vero hardware.

Avviare da un file ISO su bare metal è molto più difficile. Come si fa dipende da quale versione di Grub si sta usando, e i risultati possono essere diversi a seconda della ISO che si sta usando e di come è stata configurata per l'avvio. Questo è il motivo per cui la maggior parte degli strumenti di boot-ISO-from-USB (Unetbootin, WinToFlash, ecc.) di solito estraggono il contenuto della ISO sul disco – perché in questo modo si può accedere direttamente, senza confondere il sistema operativo che viene avviato.


Grub 1

… non sono sicuro. Se possibile, le voci di menu probabilmente assomiglieranno molto a Grub4DOS, anche se penso che il comando "map –hook” sia un miglioramento di Grub4DOS. Il lato positivo è che Grub ha un più ampio supporto per il filesystem rispetto a Grub4DOS.

Una nota su Grub con reiserfs (non confermata) indica che “devi montare la tua partizione con notail perché funzioni”.

Memdisk è un'opzione; vedi sotto.


Grub4DOS

Grub4DOS offre una “emulazione CD” sperimentale che funziona con alcune ISO. Sfortunatamente, Grub4DOS legge solo i filesystem FAT32/NTFS. Scarica Grub4DOS. ](http://sourceforge.net/projects/grub4dos/files/)

Ecco una voce di esempio 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

Presumibilmente la ISO di Win7 può essere avviata con questa voce :

title Windows 7
  map (hd0,0)/win7.iso (hd32)
  map --hook
  chainloader (hd32)

Altre ISO possono essere avviate con Memdisk :

title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
  kernel /memdisk iso
  initrd /hdt.iso

Si può anche usare un configuratore di menu come MultiBootISOs.exe di PenDriveLinux . Mettete le ISO sulla chiavetta, ed eseguite l'utilità per installare il bootloader e configurare il menu di avvio.

Ecco un episodio di Hak5 sull'installazione di Grub4DOS.


Grub 2

Ecco un paio di esempi di voci di Grub2. chainloader non funziona attualmente per avviare una ISO, quindi queste voci devono (1) usare loopback per “montare” la ISO, e (2) aggiungere qualcosa come iso-scan o findiso alla linea linux che specifica il file ISO.

Sfortunatamente, non c'è un modo generico per farlo. Ogni diversa voce di avvio deve essere personalizzata in base al contenuto della ISO di destinazione. La maggior parte dei LiveCD Linux usa ISOLINUX come bootloader; trovare il isolinux.cfg ed esaminare quella voce di boot per vedere cosa avvia di solito.

Voci di esempio 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 stai cercando di avviare un LiveCD non-Linux, potresti essere sfortunato. Di nuovo, Memdisk può aiutare :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}
1
1
1
2014-09-03 13:55:11 +0000

Potete usare dd dal terminale per scrivere un file iso su una partizione. Fate solo attenzione, se usate dd nel modo sbagliato potete cancellare tutto. Dovrebbe essere qualcosa del genere: dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition