Multiboot USB Stick

Aus wiki.archlinux.de
Wechseln zu: Navigation, Suche

Es gibt mehrere Möglichkeiten einen Multiboot USB Stick zu realisieren. Hier wird die Verwendung von Grub2 beschrieben. Grub2 bietet die Möglichkeit iso Images direkt zu booten, ohne diese entpacken zu müssen. Vorraussetzung dafür ist allerdings, dass die entsprechenden Boot Scripte der LiveCDs dies unterstüzen. Ist dies nicht der Fall kann es zu Problmen kommen, da die Boot Scripte dann meist nicht auf die Dateien im Image zugreifen können.

Vorteile dieser Methode:

  • nur eine Partition
  • übersichtliches Wurzelverzeichnis auf dem Stick
  • einfaches hinzufügen, aktualisieren, entfernen von LiveCDs / Images

Nachteile:

  • funktioniert nicht mit allen LiveCDs / Images
  • original Bootmenu get verloren


Stick vorbereiten

Partitionieren

Zuerst muss der Stick Partitioniert werden. Es empfiehlt sich nur eine FAT32 Partition anzulegen, da der noch freie Platz auf dem Stick dann auch ganz normal an Windows rechnern genutzt werden kann.

Dateisystem erstellen

mkfs.vfat -F 32 -n multiboot /dev/sdXY

Die Option -n legt den Namen der Partition fest, hier: "multiboot", und kann auch weggelassen werden.

Grub2 auf Stick installieren

Entweder Grub2 ist bereits auf dem System installiert, oder man macht diesen Schritt von einer LiveCD aus, auf der Grub2 vorhanden ist. Zum Beispiel Linux Mint 11 oder Ubuntu (Maverik).

mkdir /mnt/usbstick mount /dev/sdXY /mnt/usbstick grub-install --no-floppy --root-directory=/mnt/usbstick /dev/sdX umount /mnt/usbstick rm -r /mnt/usbstick

Jetzt sollte sich auf dem Stick das Verzeichnis /boot/grub/ befinden. In dem auch die Konfigurationsdatei grub.cfg abgelegt wird.

Konfigurationsdatei erstellen

Es wird vorrausgesetzt, dass die iso Images später auf dem Stick unter /boot/iso/ abgelegt werden.
Eine grub.cfg für die SystemRescueCD-2.2.0 sieht zum Beispiel so aus.

set timeout=10
set default=1

set sysresciso="/boot/iso/systemrescuecd-x86-2.2.0.iso"

menuentry "SystemRescueCD 2.2.0" {
       set isofile=$sysresciso
       loopback loop $isofile
       linux (loop)/isolinux/rescuecd isoloop=$isofile setkmap=de
       initrd (loop)/isolinux/initram.igz
}

menuentry "SystemRescueCD 2.2.0 (load to RAM)" {
       set isofile=$sysresciso
       loopback loop $isofile
       linux (loop)/isolinux/rescuecd isoloop=$isofile setkmap=de docache
       initrd (loop)/isolinux/initram.igz
}

Um jetzt noch andere LiveCDs hinzuzufügen, muss nur das entsprechende iso Image in /boot/iso/ gespeichert und ein entsprechender Eintrag in der grub.cfg hinzugefügt werden.

Wenn man nicht weiss, was für Parameter für eine bestimmte LiveCD in den Menüeintrag kommen, hilft oft ein Blick in die original Konfigurationsdateien der Images. Dazu kann man das entsprechende Image einfach mounten und sich die syslinux.cfg und/oder isolinux.cfg Dateien anschauen.

Für viele LiveCDs finden sich im Internet bereits getestete grub.cfg Einträge.


Weitere Sticks erstellen

Minimal Stick

Um die Erstellung weiterer Multiboot Sticks zu vereinfachen, empfiehlt es sich zunächst einmal einen "Minimal Stick" als Ausgangsbasis zu erstellen. Zum Beispiel nur mit der SystemRescueCD oder nur mit Grub2. Der minimal Stick sollte eine möglichst geringe Kapazität haben. Will man später das "minimal Image" auf einen Stick schreiben, der eine kleinere Kapazität hat als das Image, gibt es Probleme.

In in der grub.cfg sollten möglichst viele als funktionierend bekannte Einträge für verscheidene LiveCDs stehen und mit Kommentaren versehen sein. Das erleichtert später das Hinzufügen weiterer Images.

Image erstellen

Ist der minimal Stick fertig und getestet kann das Image erstellt werden.

dd if=/dev/sdX of=minimal.img

Neuen Stick erstellen

Will man jetzt einen neuen Multiboot Stick erstellen, braucht man nur das Image des minimal Sticks auf den neuen Stick zu schreiben und danach mit Gparted oder ähnlichem die Partiton auf die maximale Größe vergrößern.

dd if=minimal.img of=/dev/sdY

Tipps

Um den Stick zu testen kann man QEMU verwenden. So muss nicht jedesmal der Rechner neu gestarten werden.

qemu -m 512 /dev/sdX

Sollte es vorkommen, das man Änderenungen vorgenommen hat aber QEMU diese nicht erkennt, hilft es den Stick auszuhängen, abzuziehen und wieder einzustecken.

Weblinks