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

grub : botte 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é cela).

Réponses (2)

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

Le plus gros problème du 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 des images ISO9660 (“iso”). Il peut par exemple charger les premiers secteurs et le démarrer. Mais la plupart des gens ne se rendent pas compte que c'est “et alors ? Que ferait le système d'exploitation chargé ? Il cherchera très probablement un CDROM, qu'il ne trouvera pas, et échouera.

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

Démarrer à partir d'un fichier ISO sur du métal nu est beaucoup plus difficile. La façon de le faire dépend de la version de Grub que vous utilisez, et les résultats peuvent différer selon l'ISO que vous utilisez et la façon dont il a été configuré pour démarrer. C'est pourquoi la plupart des outils d'amorçage à partir d'un fichier ISO (Unetbootin, WinToFlash, etc) extraient généralement le contenu de l'ISO vers le disque – parce que de cette façon, ils peuvent être accessibles directement, sans confondre le système d'exploitation en cours d'amorçage.


Grub 1

… pas sûr. 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. D'un autre côté, Grub a un support de système de fichiers plus large que Grub4DOS.

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

Memdisk est une option ; voir ci-dessous.


Grub4DOS

Grub4DOS offre 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é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

On suppose que l'ISO Win7 peut être démarrée avec cette entrée :

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

D'autres ISO peuvent être démarrées 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 comme MultiBootISOs.exe de PenDriveLinux . Placez les ISO sur la clé USB, et lancez 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. Le chainloader ne fonctionne pas pour l'instant pour démarrer une ISO, donc ces entrées doivent (1) utiliser loopback pour “monter” l'ISO, et (2) ajouter quelque chose comme iso-scan ou findiso à la ligne linux qui spécifie le fichier ISO.

Malheureusement, il n'y a pas de moyen générique de faire cela. 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 comme chargeur de démarrage ; trouvez le fichier 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 peut-être pas de chance. Encore une fois, Memdisk peut vous aider :

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

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