Multiboot über USB: nur ein Stick für Windows und Linux

Um den Boot-Stick auf Linux-Betriebssysteme zu erweitern ist etwas mehr Erfahrung erforderlich. Wer eine einfache Multi-Boot-Lösung für Linux sucht, sollte YUMI oder ein ähnliches Tool einsetzen. Die hier beschriebene Methode ist für alle sinnvoll, die Linux- und Windows-Betriebssysteme von einem einzigen Stick starten möchten.

Möglich ist das mit GNU Grub, oft auch als Grub 2 bezeichnet. Die offizielle Versionsnummer ist allerdings derzeit 1.99. Die Installation von Grub nimmt man am besten unter einem Betriebssystem vor, das Grub 2 (nicht Grub 1 oder Legacy Grub) als Standard-Boot-Manager verwendet, etwa Ubuntu oder Linux Mint. Wer eine solche Distribution nicht zur Hand hat, kann das Rettungssystem Parted Magic von CD oder einem zweiten USB-Stick starten und von dort installieren.

Zunächst gibt man aber seinem Boot-Stick einen Namen, da einige Linux-Distributionen, etwa Fedora, das Boot-Medium am Namen erkennen. Das erledigt man unter Windows mit dem Befehl label G:ZDNET-BOOT.

Danach wird der Stick in einen Linux-Rechner mit Grub 2 eingesteckt. Normalerweise wird der Stick automatisch gemountet. Der Mount-Point heißt meist /media/ZDNET-BOOT. Mit dem Befehl cat /proc/mounts stellt man anschließend den Posix-Devicenamen des Sticks fest, siehe Bild unten. Bei einem System mit zwei Festplatten wird meist /dev/sdc1 angezeigt. Das bezeichnet die Partition. Zur Installation von Grub 2 wird nicht Partition sondern der ganze Stick benötigt. Aus /dev/sdc1 wird daher /dev/sdc (die "1" wird weggelassen).

Anschließend installiert man Grub mit dem Befehl

sudo grub-install --root-directory=/mnt/ZDNET-BOOT /dev/sdc

Als nächstes muss eine Konfigurationsdatei /boot/grub/grub.cfg auf dem Stick angelegt werden. Das lässt sich wahlweise unter Linux oder Windows erledigen. Es ist egal, ob es sich um eine Unix- oder Windows-Textdatei handelt. Idealerweise benutzt man einen Editor, der mit beiden Textformaten zurechtkommt.

Zunächst erstellt man einen Eintrag für die Windows Betriebssysteme, der wie folgt aussieht:

menuentry "Windows Installer starten" {
 echo "Lade Windows-Boot-Manager (bootmgr) ..."
 ntldr /bootmgr
 echo "Starte Windows-Boot-Manager (bootmgr) ..."
}

Grub 2 hat die Möglichkeit, Kernel und Initrd aus einer ISO-Datei zu extrahieren und zu booten. Das heißt, man muss lediglich die ISO-Datei einer Distribution auf den Stick kopieren und einen weiteren Menüeintrag in /boot/grub/grub.cfg hinzufügen. Allerdings funktioniert das nur mit Distributionen, die das explizit unterstützen, beispielsweise Ubuntu.

Andere Distributionen, etwa Fedora, verlangen, dass die ISO-Datei vorher ausgepackt und auf den Stick kopiert wird. Das Booten klappt damit genau so gut. Allerdings ist eine ISO-Datei praktischer. Man kann sie schnell mal einem Freund geben oder in einer virtuellen Maschine booten.

Einige wenige Distributionen, zum Beispiel OpenSUSE, kommen nicht damit zurecht, wenn sie nicht im Root-Verzeichnis des Sticks installiert sind, was in einer Multiboot-Umgebung nicht geht. Diese Distributionen müssen angepasst werden. Das geht allerdings über den Umfang dieses Artikels hinaus. Man kann sich jedoch behelfen, indem man eine Netinstall-Version des OS auf den Stick packt. Dann kann man booten und die eigentliche Installation über das Intra- oder Internet ausführen.

Bei Distributionen, die als ISO-Datei auf den Stick gelegt werden können, lässt sich die ISO-Datei in ein beliebiges Verzeichnis des Sticks kopieren, beispielsweise in /linux.

Um etwa Ubuntu 11.10 64-Bit auf den Stick zu bringen, lädt man die Datei ubuntu-11.10-desktop-amd64.iso herunter und kopiert sie ins Verzeichnis /linux auf den Stick. Danach fügt man Folgendes zur Datei /boot/grub/grub.cfg hinzu:

menuentry "Ubuntu 11.10 (Oneiric Ocelot) 64-Bit Live-CD vom Stick starten" {
    echo "Binde Ubuntu-ISO-Image ein ..."
    loopback loop /linux/ubuntu-11.10-desktop-amd64.iso
    set root='(loop)'
    echo "Lade den Ubuntu-11.10-Kernel ..."
    linux /casper/vmlinuz boot=casper file=/cdrom/preseed/ubuntu.seed iso-scan/filename=/linux/ubuntu-11.10-desktop-amd64.iso noeject noprompt --
    echo "Lade das Ubuntu-11.10-Initialisierungsdateisystem ..."
    initrd /casper/initrd.lz
    echo "Starte Kernel ..."
}

menuentry "Ubuntu 11.10 (Oneiric Ocelot) 64-Bit installieren" {
    echo "Binde Ubuntu-ISO-Image ein ..."
    loopback loop /linux/ubuntu-11.10-desktop-amd64.iso
    set root='(loop)'
    echo "Lade den Ubuntu-11.10-Kernel ..."
    linux /casper/vmlinuz only-ubiquity boot=casper file=/cdrom/preseed/ubuntu.seed iso-scan/filename=/linux/ubuntu-11.10-desktop-amd64.iso noeject noprompt --
    echo "Lade das Ubuntu-11.10-Initialisierungsdateisystem ..."
    initrd /casper/initrd.lz
    echo "Starte Kernel ..."
}

Zu beachten ist, dass die beiden Zeilen, die mit "linux" beginnen, aus layouttechnischen Gründen umgebrochen sind, die jeweils folgende Zeile gehört noch dazu.

Um herauszufinden, welche Parameter dem Linux-Kernel übergeben werden müssen, kann man in der Original-ISO-Datei nach den Dateien syslinux.cfg und isolinux.cfg und dort nachschauen. Sie sind für jede Distribution unterschiedlich und es gibt keine allgemeingültige Vorgehensweise. Im Zweifel muss man sie wissen oder googlen.

Die beiden Beispiele oben beziehen sich auf dieselbe Ubuntu-Live-CD. Der Unterschied besteht im Parameter "only-ubiquity", der bewirkt, dass das Installationsprogramm gestartet wird. Lässt man ihn weg, wird die Live-CD-Oberfläche gebootet.

Nachfolgend sind Beispiele für weitere Distributionen aufgeführt, die sich als ISO-Datei auf den Stick kopieren lassen. Man findet weitere Konfigurationen bei panticz.de und bei paranoids.at. Nur wenige Distributionen, etwa Grml, haben die Kernel-Parameter sauber dokumentiert.

Distributionen, die nicht als ISO-Datei gebootet werden können, werden einfach auf dem Stick in Verzeichnis ausgepackt. Es eignet sich in der Regel ein Unterverzeichnis von /linux, etwa /linux/Fedora-x64. In dieses Verzeichnis wird gesamte Inhalt der Original-CD oder ISO-Datei kopiert. Nachfolgend sind wieder einige Beispiele aufgeführt:

Wenn man anschließend vom Stick bootet, erscheint Folgendes auf dem Bildschirm:

Wer "Windows Installer starten" auswählt, landet im Auswahlmenü für die Windows-Installation. Jede andere Auswahl führt dazu, dass die entsprechende Linux-Live- oder Installations-CD gebootet wird.

Themenseiten: Betriebssystem, Linux, Microsoft, Mint, Open Source, USB, Windows

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

7 Kommentare zu Multiboot über USB: nur ein Stick für Windows und Linux

Kommentar hinzufügen
  • Am 7. Mai 2012 um 9:49 von Sebastian

    Vergleich NTFS / FAT32 Geschwindigkeit
    NTFS langsamer auf FAT32? Das kann ich so nicht bestätigen. Ich nutze den "Ultimate Boot Stick" mit NTFS und damit läuft eine XP Installation in 15-20 Minuten, während es über 1 Stunde gedauert hat, als ich noch FAT32 auf dem USB Stick genutzt habe!

  • Am 9. Dezember 2012 um 17:39 von Martin

    Hallo,

    ich scheitere bei BCDedit Befehlszeilen:
    ich habe das ganze mit Windows 8 versucht.
    Mein Problem:
    ich habe auf dem Stick den Ordner Win-8 erstellt und den Ordner sources da hineinkopiert.
    Wenn ich nun den befehl:
    bcdedit /store G:bootbcd /set {default} device „ramdisk=[boot]Win-8sourcesboot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}“

    eingebe, sagt mir das Programm:
    „Der Speicher für die Startkonfiguration konnte nicht geöffnet werden
    Das System kann die angegebene Datei nicht finden“
    der Buchstabe des Sticks ist auch G, also daher kein Fehler.
    Irgendeine Idee woran das noch liegen kann?

    Ich wollte zunächst das ganze nur mit einem OS testen, daher habe ich noch kein zweites OS mit auf den Stick gepackt.

    Danke für die Hilfe.

    • Am 28. Dezember 2012 um 12:02 von folkarus

      „Für Linux gibt es ein paar sehr gute Tools, um mehrere Distributionen gleichzeitig auf einen Stick zu bringen, etwa YUMI.“

      Wo finde ich Yumi für Linux?? Möchte einen Multi-Stick unter Linux erstellen. Der vom Autor verfasste Link zeigt zu Yumi for Windows ?

    • Am 17. Januar 2013 um 13:41 von uman

      Sind zu viele Fehler in dem Beitrag.

      Ich habe auf einem Stick = F:\Windows7\ mit Windows 7 und \Windows8\ mit Windows 8. Windows7 soll Standard werden. Dazu sind folgende Anweisungen auszuführen:
      (habt ihr andere Ordner Namen sind natürlich die nachfolgenden Angaben
      entsprechend zu modifizieren)

      bcdedit /store f:\boot\bcd /set {default} osdevice „ramdisk=[boot]\Windows7\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}“

      bcdedit /store f:\boot\bcd /set {default} description „Windows7“

      C:\WINDOWS\system32>bcdedit /store f:\boot\bcd /copy {default} /D „Windows8“
      Der Eintrag wurde erfolgreich in {a9e77c14-609f-11e2-afa6-00e04c00dd76} kopiert.

      — der Eintrag {a9e77c14-609f-11e2-afa6-00e04c00dd76} ist natürlich bei jedem
      anders. Diesen kopieren und in die nächsten 2 Anweisungen einsetzen —

      bcdedit /store f:\boot\bcd /set {a9e77c14-609f-11e2-afa6-00e04c00dd76} device „ramdisk=[boot]\Windows8\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}“

      bcdedit /store f:\boot\bcd /set {a9e77c14-609f-11e2-afa6-00e04c00dd76} osdevice „ramdisk=[boot]\Windows8\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}“

      • Am 16. August 2013 um 7:47 von Bastian

        also wenn ich den ersten bcdedit Befehl wie in der Anleitung beschrieben (natürlich angepasst) diesen Fehler:

        “Der Speicher für die Startkonfiguration konnte nicht geöffnet werden
        Das System kann die angegebene Datei nicht finden”

        Wenn ich dann „uman“ seinen Befehl eingebe (angepasst):
        bcdedit /store H:\boot\bcd /set {default} osdevice “ramdisk=[boot]Windows-Server-2008-R2\sources\boot.wim,{eec5ad98-8080-425f-922a-dabf3de3f69a}”

        bringt er mir diesen Fehler:
        Das Gerät ist in der angegebenen Form ungültig.

        Kann mir jemand helfen?

        • Am 17. September 2013 um 22:28 von Robert

          Ich habe genau das gleiche Problem
          In sämtlichen Variationen (/, \ oder leerzeichen) kommt immer wieder:
          „Der Speicher für die Startkonfiguration konnte nicht geöffnet werden.
          Das System kann die angegebene Datei nicht finden.“

          Jemand eine Idee wo der Fehler liegt?
          E:\>bcdedit /store E:bootbcd /set {default} device „ramdisk=[boot]Windows7-Ultimate-32-bit\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}

          • Am 3. Februar 2014 um 6:53 von Gilliearnie

            Du hast beim Eintrag „E:bootbcd“ die \ vergessen. Der Eintrag muss wie folgt aussehen: E:\>bcdedit /store E:\boot\bcd /set {default} device “ramdisk=[boot]Windows7-Ultimate-32-bit\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}

            Damit sollte es klappen.

Kommentare sind bei diesem Artikel deaktiviert.