47 votes

Grub : démarrage à partir de l'ISO

Comment démarrer un fichier ISO dans Grub ? Le fichier ISO est sur une partition reiserfs et Grub peut y accéder (déjà testé).

60voto

user12786 Points 454

Le plus gros problème avec le démarrage d'un fichier ISO est que les ISO qui sont 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 (souligné par moi) :

Grub peut lire les images ISO9660 ("iso"). Il peut par exemple charger les premiers secteurs et les démarrer. Mais la plupart des gens ne se rendent pas compte de ce qui se passe ensuite. Que ferait le système d'exploitation chargé ? Il chercherait probablement un CDROM, qu'il ne trouverait pas, et échouerait.

Donc la manière la plus simple pour démarrer à partir d'un fichier ISO aléatoire est de le charger dans une machine virtuelle (VirtualBox, VMware ou Virtual PC) sous la forme d'un CD virtuel et de le démarrer à partir de là. Cela devrait presque toujours fonctionner, car pour la machine virtuelle, il ne s'agit pas d'un fichier ISO, mais d'un vrai CD sur un vrai matériel de CD.

Le démarrage à partir d'un fichier ISO sur du métal nu est beaucoup plus difficile. La façon de procéder dépend de la version de Grub que vous utilisez, et les résultats peuvent varier en fonction de l'ISO que vous utilisez et de la façon dont il a été configuré pour démarrer. C'est pourquoi la plupart des outils de démarrage d'ISO à partir d'un USB (Unetbootin, WinToFlash, etc.) utilisent en général extraire le contenu de l'ISO sur le disque -- parce que de cette façon, il est possible d'y accéder directement, sans perturber le démarrage du système d'exploitation.


Grub 1

... pas sûr. Si possible, les entrées de menu ressembleront probablement beaucoup à Grub4DOS, bien que je pense que les entrées de menu de Grub4DOS ne seront pas les mêmes. "map --hook" est une amélioration de Grub4DOS. En revanche, Grub prend en charge un plus grand nombre de systèmes de fichiers que Grub4DOS.

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

Memdisk est une option ; voir ci-dessous.


Grub4DOS

Grub4DOS offre une "émulation de CD" expérimentale qui fonctionne avec certains ISO. Malheureusement, Grub4DOS ne lit que les systèmes de fichiers FAT32/NTFS. Télécharger 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

Il est supposé que 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 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 de Hak5 sur l'installation de Grub4DOS.


Grub 2

Voici quelques exemples d'entrées Grub2. chargeur de chaîne ne fonctionne pas pour démarrer une ISO pour le moment, donc ces entrées doivent (1) utiliser bouclage pour "monter" l'ISO, et (2) ajouter quelque chose comme iso-scan o findiso à la linux qui spécifie le fichier ISO.

Malheureusement, il n'existe pas de méthode générique pour le faire. Chaque entrée de démarrage doit être adaptée au contenu de l'ISO cible. La plupart des LiveCD Linux utilisent ISOLINUX comme chargeur de démarrage. isolinux.cfg et examinez cette entrée de démarrage pour voir ce qu'il démarre habituellement.

Exemples 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'avez pas de chance. Encore une fois, Memdisk peut aider :

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

1voto

Naos parth Points 11

Vous pouvez utiliser dd à partir du terminal pour écrire un fichier iso sur une partition. Attention, si vous utilisez mal dd, vous risquez de tout effacer. Le fichier devrait ressembler à ceci : dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition

0voto

Hank W Points 1

Il y a de beaux exemples ainsi que des tweaks pour de nombreux systèmes d'exploitation populaires. Grub 2 iso boot

menuentry "Focal Desktop iso" {
   set isofile="/iso/focal-desktop-amd64.iso"
   rmmod tpm // For GPT only
   loopback loop (hd0,5)$isofile
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X