Donnerstag, 26. Mai 2011

Mehrere Ubuntu-Versionen und/oder verschiedene andere Live-CDs mit Hilfe von Grub2 von einem USB-Stick/einer SD-Karte starten und ausprobieren

Für Ubuntu Linux gibt es seit ein paar Jahren die Möglichkeit die iso-Abbilder zum Starten/Ausprobieren/Installieren auch auf ein USB-Laufwerk zu kopieren. Ich persönlich trage immer gerne ein paar Linux-Distributionen mit mir herum um ihre Stärken und Schwächen anschaulich demonstrieren zu können. Mit der klassischen Variante bräuchte man jeweils einen eigenen USB-Stick, könnte dann aber recht einfach auch zusätzliche Programme installieren und Nutzerdaten speichern. In diesem Posting möchten ich allerdings vorzeigen, wie man mehrere verschiedene Distributionen auf einem einzigen USB-Stick installiert.

WICHTIG: Die in diesem Artikel verwendeten Methoden können bei unsachgemäßer Nutzung Ihre Daten schädigen. Ich übernehme keine Haftung, die Anleitung versteht sich als Erinnerungszettel, der Leser trägt die alleinige Verantwortung für sein Handeln.

Einige der verwendeten Befehle müssen als root ausgeführt werden. Unter Ubuntu also z.b. über ein vorangestelltes sudo.

Woher die CD-Abbilder kommen wird dem Leser überlassen, zum einen ändert sich das ständig, zum anderen würde ich der Vielfalt im Linux-Universum auch nur schwer hinterherkommen.

Vorbereiten des USB-Laufwerks:

Wir brauchen auf dem USB-Stick eine FAT32-formatierte (ext2 "noatime" und "relatime" wäre eine Alternative) Partition mit wenigstens 1.5 GB freiem Platz.
  • Die 1.5 GB wollen wir damit wir zumindest 2 ISOs (CD-Abbilder) darauf kopieren können. Mehr ist natürlich besser und i.A. kann der Flashspeicher neben Benutzung als Live-Distribution immer noch ganz normal für andere Daten verwendet werden.
  • FAT32 ist auf USB-Sticks immer noch meist die beste Wahl. exFAT und NTFS sind imho noch immer nicht ausreichend kompatibel mit Linux, FAT16 hat ein Problem mit größeren Dateien. FAT32 macht zwar bei 4GB-Dateien (also z.b. DVDs) Schluß, ext2 hat aber wiederrum keine native Windows-Unterstützung.
  • Um die Sache einfach zu halten sollte das USB-Laufwerk normalerweise genau eine Partition aufweisen.
Die Partitionierung erfolgt falls nötig z.b. mit GParted oder in einem XTerm mit "cfdisk" oder "fdisk". Wenn eine Formatierung auch nötig ist (entfällt z.b. bei GParted) kann diese in einem XTerm über folgenden Befehl vorgenommen werden: "mkfs.vfat -F 32 $PARTITION_DEVICE"
  • "$PARTITION_DEVICE" ist dabei der Pfad unter d em die Gerätedatei für die Partition zu finden ist. "fdisk -l" wäre meistens der Befehl um das herauszufinden, "/dev/sdd1" ist z.b. ein oft gefundener Pfad.
  • Mit dem Dateimanager über Anklicken oder ohnehin automatisch oder über den Befehl "mount $PARTITION_DEVICE /mnt" sollte die Partition eingebunden werden.
  • Mit "$DISK_PATH" werde ich im Folgenden den Einbindungspfad referenzieren. Das ist also z.b. "/media/USBSTICK" oder "/mnt".

Installieren von Grub2

Der USB-Speicher bzw. seine Partition "$PARTITION_DEVICE" sollte unter"$DISK_PATH" eingebunden sein.


Dieser Befehl installiert Grub auf dem USB-Stick und ist damit eigentlich schon das ganze Meisterstück. Wir brauchen noch eine passende "grub.cfg". Z.B. Unter http://www.pendrivelinux.com/downloads/multibootlinux/grub.cfg findet sich eine gute Vorgabe. Diese müssen wir im Verzeichnis "$DISK_PATH/boot/grub/" positionieren.

Im Folgenden ein Beispiel für die "grub.cfg":
  • Zeile 1 und 2 sind Standardoptionen.
  • Von Zeile 4 bis 8 erstreckt sich ein Menüeintrag (im Bootmenü, das man dann beim Neustart zu sehen bekommt)
  • "/ubuntu.iso" ist der Pfad wo sich die entsprechende ISO-Datei relativ auf dem USB-Laufwerk befindet. Obiges würde also bedeuten, dass die Datei unter "$DISK_PATH/ubuntu.iso" zu finden ist. Die Datei muß aber auf dem USB-Laufwerk zu finden sein, sonst ist sie ja ohnehin auch nur schwerlich portabel. "/ubuntu.iso" findet sich in der 5. und in der 6. Zeile und muß bei allfälligem Anpassen auch in beiden Zeilen angepasst werden.
  • "(loop)" verweist auf Pfade im Image selbst. Eventuell sollte also sichergestellt werden, dass diese Pfade auch wirklich existieren. Unter Ubuntu z.b. können ISO-Dateien im Dateimanager ganz ähnlich wie zip-Dateien einfach geöffnet und gesichtet werden.
  • Die passenden Einstellungen für ein neues ISO-Image lassen sich im ISO  selbst finden. Also z.B. in der Datei "(loop)/boot/grub/grub.cfg" oder "(loop)/isolinux/text.cfg" oder "(loop)/boot/grub/loopback.cfg" oder einer anderen Textdatei. Dieser Schritt kann etwas trickreich sein.
Was jetzt noch fehlt ist ein Neustart. Dabei sollten wir noch sichergehen, dass vom USB-Laufwerk gestartet wird, eventuell müssen dazu Einstellungen im BIOS vorgenommen werden. Sollte ein Eintrag im Grub-Menü nicht funktionieren ist das noch keine Tragödie, durch Drücken der Taste "e" können die Einträge direkt beim Booten bearbeitet werden, durch Drücken der Taste "c" kann eine Kommandozeile gestartet werden. Recht hilfreich sind etwa die folgenden Kommandos:
  • "ls" zum Anzeigen welche Partitionen verfügbar sind, "ls (hd0,1)" liefert die Verzeichnisse der ersten Partition der ersten Platte
  • "root (hd0,1)" setzt die erste Partition der ersten Platte als Stammverzeichnis
  • "kernel /vmlinuz root=/dev/sda1" um den Kernel und die dazugehörige Startpartition festzulegen
  • "initrd /initrd" um die initial ramdisk festzulegen
  • "boot" um mit den getätigten Eingaben zu booten
Als Hinweis am Rande sei noch erwähnt, dass mit den aktuellen Grub-Versionen auch automatische Erweiterung durch Betätigung der Tabulator-Taste möglich ist.

Wichtig ist sicher auch noch das Grub-Manual z.B. unter http://www.gnu.org/software/grub/manual/grub.html. Dort lässt sich auf die meisten anstehenden Fragen eine Antwort finden.

Recht hilfreich waren mir auch pendrivelinux.com oder www.panticz.de/MultiBootUSB.