grub: démarrage de l'ISO


41

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é).


quelle version de grub?
Quack Quotote

1
La même question a répondu ici .
dma_k


Réponses:


55

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 à propos de 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 CD-ROM qu’il ne trouvera pas et échouera.

Ainsi, le moyen le plus simple de démarrer à partir d'un fichier ISO aléatoire consiste à le charger dans un ordinateur virtuel (VirtualBox, VMware ou Virtual PC) en tant que CD virtuel et à l'initialiser à cet emplacement. 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 de démarrage ISO depuis USB (Unetbootin, WinToFlash, etc.) extraient généralement le contenu de l'ISO sur le lecteur, car ils permettent ainsi d'accéder directement au disque sans créer de confusion pour le système d'exploitation démarré.


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ée) indique que vous devez "monter votre partition avec notailpour 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)

Memdisk permet d’amorcer d’autres fichiers ISO :

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

Vous pouvez également utiliser un configurateur de menus 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 de Hak5 sur l'installation de Grub4DOS.


Grub 2

Voici quelques exemples d'entrées Grub2. chainloader ne fonctionne pas pour démarrer une image ISO à l'heure actuelle, ces entrées doivent (1) utiliser le bouclage pour "monter" l'ISO et (2) ajouter quelque chose comme iso-scan ou findiso à la ligne linux spécifiant 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; recherchez le fichier isolinux.cfg et examinez cette entrée de démarrage pour voir ce qu’elle démarre habituellement.

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
}

@ albert: J'utilise Grub2 sur une clé USB et je suis frustré par les mêmes problèmes. Il n'a donc pas été difficile de tout mettre en place. Je suis en train d'examiner votre autre question, mais je n'ai jamais essayé de "graver" une image ISO sur une partition, alors c'est peut-être ... intéressant.
Quack Quotote

Ofc, je peux le démarrer dans VMware (et je l’ai déjà fait), mais cela ne m’aide pas beaucoup car c’est Windows et lorsque je l’installe via VMware sur mon disque, il ne démarre pas plus tard (stupide Windows ...).
Albert,

Pouvez-vous me suggérer quelle option je devrais essayer d’abord, par exemple Grub1, Grub2 ou Grub4DOS? Je peux simplement installer ce dont vous avez besoin, ce ne sera pas vraiment le problème.
Albert,

@ albert: demandez-vous en référence à votre question précédente? Je crois que votre meilleur pari est d'utiliser la méthode d'extraction; le programme d'installation Windows est l'un de ces ISO qui rencontrent des problèmes lorsqu'ils ne sont pas démarrés à partir du matériel. vous pouvez essayer memtest, mais je ne sais pas grand chose à ce sujet. vous voulez probablement vous procurer un lecteur flash et l'utiliser; Voir superuser.com/questions/66948/… ou superuser.com/questions/62193/install-win7-from-usb
Quack quixote

1
@quackquixote, En ce qui concerne vos mots en gras "Que ferait le système d'exploitation chargé? Il recherchera probablement un CD-ROM qu'il ne trouvera pas et échouera" , Pourquoi le système d'exploitation doit-il rechercher un CD-ROM? C'est déjà un fichier iso parfait et tout ce qui est nécessaire pour charger le système d'exploitation se trouve déjà dans le fichier iso, alors pourquoi ne pas ignorer la recherche de CD-ROM?
Pacerier

1

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


Mais la partition doit être primaire pour pouvoir être démarrée par Windows Loader.
Firelord

Cela ne fonctionne que de temps en temps, généralement le résultat n'est pas bootable.
David Tonhofer

1
@ Firelord: N'utilisez pas Windows Loader. Utilisez Grub. Oui, Windows aussi, si vous en avez vraiment besoin.
Evi1M4chine
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.