web-dev-qa-db-fra.com

grub: démarrage de l'ISO

Comment puis-je démarrer dans un fichier ISO dans GRUB? Le fichier ISO se trouve sur une partition reiserfs et GRUB peut y accéder (déjà testé).

41
Albert

Le plus gros problème avec le démarrage d'un fichier ISO est que les ISO conçus pour être démarrés sont presque toujours conçus pour être démarrés à partir d'un CD. Comme expliqué sur le blog de Marco concernant Grub 2 (c'est moi qui souligne):

GRUB peut lire les images ISO9660 ("iso"). Il peut par exemple charger les premiers secteurs et le démarrer. Mais la plupart des gens ne réalisent pas que "quoi alors? Que ferait le système d'exploitation chargé? Il cherchera probablement un CDROM, qu’il ne trouvera pas, et échouera.

Donc le moyen le plus simple de démarrer à partir d'un fichier ISO aléatoire consiste à le charger dans une machine virtuelle (VirtualBox, VMware ou Virtual PC) en tant que CD virtuel et à démarrer c'est là. Cela devrait presque toujours fonctionner, car pour la VM, ce n'est pas un fichier ISO, c'est un vrai CD sur du matériel CD.

Démarrer à partir d'un fichier ISO sur du métal nu est beaucoup plus difficile. La procédure à suivre dépend de la version de Grub que vous utilisez et les résultats peuvent varier en fonction de l’ISO utilisé et de la configuration de celui-ci. C’est pourquoi la plupart des outils ISO de démarrage à partir de l’USB (Unetbootin, WinToFlash, etc.) utilisent généralement pour extrairele contenu ISO du lecteur. déroutant le système d'exploitation en cours de démarrage.


Grub 1

... pas certain. Si possible, les entrées de menu ressembleront probablement beaucoup à Grub4DOS, bien que je pense que la commande "map --hook"est une amélioration de Grub4DOS. Du côté positif, Grub a un support de système de fichiers plus étendu que Grub4DOS.

Une note sur Grub avec reiserfs (non confirmé) indique que vous devez "monter votre partition avec notail pour que cela fonctionne".

Memdisk est une option. voir ci-dessous.


Grub4DOS

Grub4DOS propose une "émulation de CD" expérimentale qui fonctionne avec certaines ISO. Malheureusement, Grub4DOS ne lit que les systèmes de fichiers FAT32/NTFS. Téléchargez Grub4DOS.

Voici un exemple d’entrée ( source ):

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

Soi-disant, l'ISO Win7 peut être démarré avec cette entrée :

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

D'autres ISO peuvent être démarrés avec Memdisk :

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

Vous pouvez également utiliser un configurateur de menu tel que MultiBootISOs.exe de PenDriveLinux . Placez les images ISO sur le lecteur flash et exécutez l'utilitaire pour installer le chargeur de démarrage et configurer le menu de démarrage.

Voici un épisode Hak5 sur l'installation de Grub4DOS.


Grub 2

Voici quelques exemples d'entrées Grub2. chainloaderne fonctionne pas pour démarrer une image ISO pour le moment, donc ces entrées doivent (1) utiliser loopbackpour "monter" l'ISO, et (2) ajouter quelque chose comme iso-scanou findisoà la ligne linuxspécifie le fichier ISO.

Malheureusement, il n'y a pas de moyen générique de le faire. Chaque entrée de démarrage différente doit être personnalisée en fonction du contenu de l'ISO cible. La plupart des LiveCD Linux utilisent ISOLINUX en tant que chargeur de démarrage; trouvez le isolinux.cfg et examinez l'entrée de démarrage pour voir ce qui est généralement démarré.

Exemple d'entrées ( source ):

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
}

Si vous essayez de démarrer un LiveCD non-Linux, vous n’êtes peut-être pas chanceux. Encore une fois, Memdisk peut aider :

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

Vous pouvez utiliser dd depuis le terminal pour écrire un fichier iso sur une partition. Faites attention, si vous utilisez dd mal, vous pouvez tout effacer. Cela devrait ressembler à ceci: dd if = Desktop/LinuxCDFile.iso of =/Path/To/Partition

1
Naos parth