Wie starte ich von einer auf der Festplatte gespeicherten ISO-Datei?

12

Ich weiß, dass ich bootfähige CD / DVD oder Live-USB erstellen / brennen und von dort booten / installieren kann. Angenommen, ich verwende derzeit GNU / Linux und habe eine ISO-Datei eines anderen GNU / Linux, das ich auf meiner Festplatte installieren möchte. Kann ich dann direkt von ISO von der Festplatte booten und versuchen, dieses GNU / Linux-Betriebssystem zu installieren? ?

Pandya
quelle

Antworten:

15

Ja, Sie können dies erreichen, indem Sie dem GRUBBootloader-Menü einen Menüeintrag hinzufügen .

Sie können einen benutzerdefinierten GRUB-Menüeintrag hinzufügen, indem Sie Folgendes bearbeiten /etc/grub.d/40_custom:

Beispiel für einen benutzerdefinierten Menüeintrag :

 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
}

Anleitung & Erklärung:

  1. Der Befehl setwird hier zum Speichern des Pfads der ISO-Datei in einer Variablen verwendet isofile.

  2. loopbackwird verwendet, um ein Gerät aus einem Dateisystem-Image zu erstellen. Dazu müssen das Gerät und die Image-Datei angegeben werden. Hier haben wir verwendet, (hd0,5)$isofilein dem (hd0,5)die fünfte Partition der Festplatte darstellt.

    • Punkte zu beachten: In (hd0,5),
      1 st Ziffer steht für die Gerätenummer , die aus startet 0(hier: 0 = 1 st Gerät) und
      2 nd Ziffer steht für die Partitionsnummer , die aus startet 1(hier 5 = 5 - ten Partition).
      Das bedeutet/dev/sda5
    • Und Variable $isofilehat den Pfad der ISO-Datei. So wird es endlich (hd0,5)/Operating_Systems/Trisquel_7.0_i686/trisquel_7.0_i686.iso.
    • Weitere Informationen finden Sie unter: Festlegen von Geräten und Dateien .

  3. linuxBefehl wird verwendet, um den Linux-Kernel ( vmlinuz ) aus der Datei zu laden . Fügen Sie den Pfad des Linux-Kernels in die ISO ein.

    • Lesen / extrahieren Sie den Inhalt von ISO, um den Pfad des Kernel-Beispiels zu erhalten:

       $ 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
      

      also /casper/vmlinuzwurde hier verwendet.

  4. initrd Mit dem Befehl wird eine erste Ramdisk für ein Linux-Kernel-Image geladen und die entsprechenden Parameter im Linux-Setup-Bereich im Speicher festgelegt.

    • initrd ist ein Schema zum Laden eines temporären Root-Dateisystems in den Speicher. Geben Sie den Pfad initrdin die ISO ein.
    • Lesen / extrahieren Sie den Inhalt von ISO, um den Pfad von 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. Die zusätzlichen Parameter boot=casper iso-scan/filename=$isofile noprompt noejectkönnen spezifisch für eine GNU / Linux-Distribution sein und für eine andere Linux-Familie variieren. Sie können einige Konfigurationen für verschiedene Familien / Verteilung finden hier .

    Hinweis: Einige Distributionen verwenden initrd.gzoder initrd.lzhängen vom verwendeten Algorithmus / der verwendeten Komprimierung ab.

Nach der Bearbeitung /etc/grub.d/40_custommuss GRUB per update-grub2Befehl aktualisiert werden . Nach dem Neustart finden Sie den benutzerdefinierten Menüeintrag, den Sie hinzugefügt haben, auf dem GRUB-Bildschirm. Sie können auch die Live-Umgebung einer GNU / Linux-Distribution verwenden.

Um die Installation über ISO durchzuführen, muss das Installationsprogramm möglicherweise alle bereitgestellten Partitionen aushängen. Das heißt, ein anderes System ist an montiert /isodevice, dann können Sie umount -l /isodevice.

Pandya
quelle
Wow, ich bin beeindruckt ... Ich hätte gedacht, dass dies unmöglich ist, da bei der Installation eines neuen Betriebssystems häufig Partitionen neu formatiert werden müssen, einschließlich der Partition, auf der Ihre ISO-Datei gespeichert ist.
Wildcard
Ihre Proben verwenden GRUB2. Centos 6 verwendet GRUB1 (Grub Legacy) und die obigen Beispiele funktionieren nicht.
Ikrom