Comment démarrer à partir d'un fichier ISO stocké sur le disque dur?

12

Je sais que je peux créer / graver un CD / DVD amorçable ou une clé USB en direct et que je peux démarrer / installer à partir de celui-ci. Mais supposons que j'exécute actuellement GNU / Linux et que j'ai un fichier ISO d'un autre GNU / Linux que je veux installer sur mon disque dur, puis-je directement démarrer à partir d'ISO à partir du disque dur et essayer / installer ce système d'exploitation GNU / Linux ?

Pandya
la source

Réponses:

15

Oui, vous pouvez accomplir cela en ajoutant une entrée de menu au GRUBmenu du chargeur de démarrage.

Vous pouvez ajouter une entrée de menu GRUB personnalisée en modifiant /etc/grub.d/40_custom,

Exemple d'entrée de menu personnalisée :

 exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.  

menuentry "Trisquel ISO" {
        set isofile="/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.iso"
        loopback loop (hd0,5)$isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet splash
        initrd (loop)/casper/initrd
}

Instruction et explication:

  1. La commande setest utilisée pour stocker le chemin du fichier ISO dans une variable, ici isofile.

  2. loopbackest utilisé pour créer un périphérique à partir d'une image de système de fichiers. Pour ce faire, il est nécessaire de spécifier le périphérique et le fichier image. Ici, nous avons utilisé (hd0,5)$isofiledans lequel (hd0,5)représente la cinquième partition du disque.

    • Points à noter: dans (hd0,5), le
      1 er chiffre représente le numéro de périphérique qui commence à partir de 0(ici: 0 = 1 er périphérique) et le
      2 ème chiffre représente le numéro de partition qui commence à partir de 1(ici 5 = 5 ème partition).
      Cela signifie/dev/sda5
    • Et la variable $isofilea le chemin du fichier ISO. Alors, finalement ça devient (hd0,5)/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.iso.
    • Pour plus d'informations, consultez: Comment spécifier des périphériques et des fichiers .

  3. linuxLa commande est utilisée pour charger le noyau Linux ( vmlinuz ) à partir du fichier. Mettez le chemin du noyau Linux dans l'ISO.

    • Lisez / extrayez le contenu d'ISO pour obtenir le chemin de l'exemple du noyau:

       $ 7z l trisquel_7.0_i686.iso | grep vmlinu
       2014-10-29 21:41:43 .....      5841680      5841680  casper/vmlinuz
       2014-11-03 00:45:09 .....      5844176      5844176  casper/vmlinuz.netinst
      

      donc, a /casper/vmlinuzété utilisé ici.

  4. initrd La commande est utilisée pour charger un disque virtuel initial pour une image du noyau Linux et définir les paramètres appropriés dans la zone de configuration Linux en mémoire.

    • initrd est un schéma pour charger un système de fichiers racine temporaire dans la mémoire. Mettez le chemin de initrdl'ISO.
    • Lire / extraire le contenu de l'ISO pour obtenir le chemin de initrd:

      $ 7z l trisquel_7.0_i686.iso | grep initrd
      2014-11-03 00:45:19 .....     16851900     16851900  casper/initrd
      2014-11-03 00:45:09 .....      9398592      9398592  casper/initrd.netinst
      
  5. Le paramètre supplémentaire tel que boot=casper iso-scan/filename=$isofile noprompt noejectpeut être spécifique à une distribution GNU / Linux et varier pour une autre famille de Linux. Vous pouvez trouver des configurations pour différentes famille / la distribution d' ici .

    Remarque: Certaines distributions utilisent initrd.gzou initrd.lzdépendent de l'algorithme / compression utilisé.

Après l'édition /etc/grub.d/40_custom, GRUB doit être mis à jour par update-grub2commande. Au redémarrage, vous trouverez l'entrée de menu personnalisée que vous avez ajoutée sur l'écran GRUB. Et vous pouvez utiliser l'environnement Live d'une distribution GNU / Linux.

Pour effectuer l'installation à partir d'ISO, l'installateur peut avoir besoin de démonter toutes les partitions montées; c'est à dire dire qu'un autre système est monté sur /isodevice, alors vous pouvez umount -l /isodevice.

Pandya
la source
Wow, je suis impressionné ... J'aurais pensé que ce serait impossible, car l'installation d'un nouveau système d'exploitation implique souvent de reformater les partitions, qui pourraient inclure la partition sur laquelle votre fichier ISO est stocké.
Wildcard
Vos échantillons utilisent GRUB2. Centos 6 utilise GRUB1 (grub legacy) et les exemples ci-dessus ne fonctionnent pas.
Ikrom