grub: avvio da ISO


41

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


quale versione di grub?
Quack Quixote,

1
La stessa domanda ha risposto qui .
dma_k,


Risposte:


55

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

GRUB può leggere immagini ISO9660 ("iso"). Ad esempio, può caricare i primi settori e avviarlo. Ma la maggior parte delle persone non si rende conto che "cosa allora?". Cosa farebbe il sistema operativo caricato? Molto probabilmente cercherà un CD-ROM, che non troverà, e fallirà.

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

L'avvio da un file ISO su bare metal è molto più difficile. Il modo in cui lo fai dipende dalla versione di Grub che stai utilizzando e i risultati possono differire a seconda dell'ISO che stai utilizzando e da come è stato configurato per l'avvio. Questo è il motivo per cui la maggior parte degli strumenti ISO di avvio da USB (Unetbootin, WinToFlash, ecc.) Di solito estrae i contenuti ISO sull'unità, perché in questo modo è possibile accedervi direttamente, senza confondere il sistema operativo avviato.


Grub 1

... non sono sicuro. Se possibile, le voci di menu probabilmente assomigliano molto a Grub4DOS, anche se penso che il comando "map --hook" sia un miglioramento di Grub4DOS. Tra i lati positivi, Grub ha un supporto file system più ampio rispetto a Grub4DOS.

Una nota su Grub con reiserfs (non confermata) indica che "devi montare la tua partizione notailper farlo funzionare".

Memdisk è un'opzione; vedi sotto.


GRUB4DOS

Grub4DOS offre alcune "emulazioni CD" sperimentali che funzionano con alcuni ISO. Sfortunatamente, Grub4DOS legge solo filesystem FAT32 / NTFS. Scarica Grub4DOS.

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 l'ISO Win7 può essere avviato 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

Puoi anche usare un configuratore di menu come MultiBootISOs.exe da PenDriveLinux . Posizionare ISO sull'unità flash ed eseguire 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 Grub2. chainloader al momento non funziona per avviare un ISO, quindi queste voci devono (1) utilizzare il loopback per "montare" l'ISO e (2) aggiungere qualcosa come iso-scan o findiso alla riga di linux che specifica il file ISO.

Sfortunatamente, non esiste un modo generico per farlo. Ogni voce di avvio diversa deve essere personalizzata in base al contenuto ISO di destinazione. La maggior parte dei LiveCD di Linux utilizza ISOLINUX come bootloader; trova isolinux.cfg ed esamina quella voce di avvio per vedere cosa si 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 provando ad avviare un LiveCD non Linux, potresti essere sfortunato. Ancora una volta, Memdisk può aiutare :

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}

@albert: sto usando Grub2 su un'unità flash e sono stato frustrato dalle stesse cose, quindi non è stato difficile mettere insieme. sto esaminando la tua altra domanda, ma non ho mai provato a "masterizzare" un ISO su una partizione prima, quindi potrebbe essere ... interessante.
Quack Quixote,

Ovviamente posso avviarlo all'interno di VMware (e l'ho già fatto) ma questo non mi aiuta molto perché è Windows e quando lo installo tramite VMware sul mio disco, non si avvierà più tardi (stupido Windows ...).
Albert,

Puoi darmi un suggerimento quale opzione dovrei provare prima, ad esempio Grub1, Grub2 o Grub4DOS? Posso semplicemente installare tutto ciò che è necessario, che non sarà davvero il problema.
Albert,

@alberto: stai chiedendo in riferimento alla tua domanda precedente? credo che la soluzione migliore sia utilizzare il metodo di estrazione; il programma di installazione di Windows è uno di quegli ISO che hanno problemi quando non vengono avviati dall'hardware. puoi provare memtest, ma non ne so molto. probabilmente vorrai ottenere un'unità flash e usarla; vedi superuser.com/questions/66948/… o superuser.com/questions/62193/install-win7-from-usb
quack quixote

1
@quackquixote, Per quanto riguarda le tue parole in grassetto "Cosa farebbe il sistema operativo caricato? Molto probabilmente cercherà un CD-ROM, che non troverà, e fallirà" , Perché il sistema operativo deve cercare un CD-ROM? È già un file ISO perfetto e tutto ciò che è necessario per caricare il sistema operativo è già all'interno del file ISO, quindi perché non può saltare alla ricerca di CDROM?
Pacerier,

1

È possibile utilizzare dd dal terminale per scrivere un file ISO in una partizione. Fai solo attenzione, se usi erroneamente puoi cancellare tutto. Dovrebbe essere simile a questo: dd if = Desktop / LinuxCDFile.iso di = / Path / To / Partition


Ma la partizione deve essere primaria per poter essere avviata da Caricatore di Windows.
Firelord,

Funziona solo occasionalmente, generalmente il risultato non è avviabile.
David Tonhofer,

1
@Firelord: Beh, non usare Windows Loader. Usa Grub. Sì, se necessario, avvia anche Windows.
Evi1M4chine,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.