Wer kennt das nicht - oftmals will man „mal eben“ schnell eine Distro testen und hat keine Lust einen CD-Rohlung zu suchen; oftmals hat man nicht mal ein optisches Laufwerk zur Hand. ISOs lassen sich auch einfach mit GRUB2 direkt booten.

Benötigt wird eine Distribution, für die GRUB2 zur Verfügung steht sowie einen USB-Stick (sinnvollerweise mit mindestens 1 GB Speicherplatz). Für die ISO-Dateien, die man booten will, benötigt man Informationen zum SYSLINUX-Loader, da sich erstmal nur Linux-ISOs booten lassen.

Zuerst wird die Partitionstabelle des Sticks gelöscht und auf dem Stick eine FAT-Partition erstellt. Es lassen sich natürlich auch ext-Dateisysteme verwenden - wer häufig Windows verwendet und schnell eine ISO „dazu kopieren“ will wird allerdings die FAT-Variante bevorzugen.

/dev/sdx muss in diesem Code (und in allen darauffolgenden) durch die passende Gerätedatei ersetzt werden. Diese kann leicht mit dmesg beim Einstecken des Sticks herausgefunden werden.

# dd if=/dev/zero of=/dev/sdx bs=512 count=1
# fdisk /dev/sdx << EOF
c
u
n
p
1


t
b
w
EOF
# mkfs.vfat /dev/sdx1

Danach wird die angelegte Partition gemountet und darauf eine Ordnerstruktur angelegt. Im Ordner boot befinden die Ordner iso (für ISO-Dateien) sowie grub (für den GRUB2-Bootloader). Anschließend wird eine Konfigurationsdatei für GRUB2 angelegt:

# mount /dev/sdx1 /mnt
# mkdir -p /mnt/boot/grub
# mkdir -p /mnt/boot/iso
# vim /mnt/boot/grub/grub.cfg
...
menuentry "ArchLinux" {
  loopback loop /boot/iso/archlinux.iso
  linux (loop)/arch/boot/i686/vmlinuz
  initrd (loop)/arch/boot/i686/archiso.img
}

menuentry "ConnochaetOS" {
  loopback loop /boot/iso/connos.iso
  linux (loop)/boot/isolinux/vmlinuz
  initrd (loop)/boot/isolinux/initrd.img
}
...
:wq

In dem Beispiel werden zwei ISO-Dateien für ArchLinux und ConnochaetOS angelegt. Die Konfiguration kann durchaus nicht ganz trivial sein - kleiner Tipp: einfach die ISO als solche mounten und mit dem Explorer nach der Bootloader-Konfigurationsdatei Ausschau halten. Dort befinden sich die Angaben für Kernel (linux) und Init-Ramdisk (initrd). Auf der ArchLinux-CD befindet sich die Konfigurationsdatei unter boot/syslinux/archiso_sys.cfg - bei ConnochaetOS sollte man die Datei boot/grub/menu.lst konsultieren; andere Distributionen sind ähnlich aufgebaut.

Anschließend werden die ISO-Dateien in den Ordner iso kopiert, bevor GRUB2 installiert und der Stick ausgeworfen wird:

# cp ... iso
# grub-install --no-floppy --root-directory=/mnt /dev/sdx
Installation finished. No error reported.
# umount /mnt
# eject /dev/sdx

Wenn eine ISO nachträglich hinzugefügt werden soll, muss sie lediglich in den Ordner iso kopiert und ein entsprechender Eintrag in der Datei boot/grub/grub.cfg verfasst werden.