Supergrub2disk
Supergrub2disk kann sehr hilfreich sein wenn man z.B. den Bootloader wiederherstellen muß.
Damit kann man aber auch div. ISOs booten, die auf einem USB-Stick liegen.
Im folgenden wird die installation von Supergrub2disk auf einem USB-Stick beschrieben.
Weitere Dokumentationen befinden sich unter https://www.supergrubdisk.org/wiki/SuperGRUB2Disk
USB-Stick vorbereiten
Zunächst partitionieren wir den Stick mit
parted /dev/<USB-Device>
Hier nun alle Partitionen löschen, dann eine neue Partitionen mit FAT32 (LBA) erstellen.
Der Boot-Partition setzt man noch die Flags „boot“ und „esp“ (für UEFI).
um Schluß die Einstellungen schreiben lassen und dann cfdisk verlassen.
Nun formatieren wir die neue Partition. Vorher müssen wir den Stick aber erst einmal entfernen und danach wieder einschieben, damit
Linux die neue Partition erkennt.
Nun folgendes eingeben um die Partition mit FAT32 zu formatieren
mkfs.vfat -F 32 -n USBBOOT /dev/<USB-Device-Partition>
Erneut den USB-Stick herausnehmen und wieder einstecken. Jetzt wird der Stick automatisch nach /media/<USER>/USBBOOT
gemountet.
Grub installieren
Da wir Supergrub2disk verwenden müssen wir auch Grub2 auf dem Rechner installiert haben.
grub-install --version
Version muß größer „0,97“ sein. Grub2 kann folgendermaßen installiert werden
apt-get install grub2
Jetzt Grub installieren mittels
grub-install --root-directory=/media/<USER>/USBBOOT /dev/<USB-Device>
WICHTIG: Hier wird das unterverzeichnis boot
nicht angegeben, da grub-install
es selbst anlegt!
UEFI
Folgende Schritte für UEFI zusätzlich zu den oberen ausführen.
Für UEFI benötigt man eigentlich eine Partitionstabelle vom Typ GPT, und eine FAT32 Partition.
Dies war bisher bei mir nicht nötig, die MSDOS-Partitionstabelle funktioniert auch unter UEFI.
Wenn dies nicht der Fall sein sollte, einfach den USB-Stick leeren und mit einer GPT-Partitionstabelle sowie einer FAT32-Partition versehen.
Danach kann der Bootloader installiert werden.
apt-get install grub-efi-amd64 grub-install --target x86_64-efi --removable --boot-directory=/media/<USER>/USBBOOT/boot --efi-directory=/media/<USER>/USBBOOT /dev/<USB-Device>
Wenn grub-install
„Installation finished. No error reported.“ ausgibt, kann man weitermachen.
Wenn man zusätzlich UEFI mit Secure Boot nutzen möchte, dann müssen noch diese Programme nachinstalliert werden.
apt-get install linux-signed-generic grub-efi-amd64-signed shim-signed
Nun kann dem Grub-Installationsbefehl noch einen Parameter mitgegeben.
Der Aufruf sieht dann wie folgt aus (die Installation des Bootloaders dauert dann etwas länger).
grub-install --target x86_64-efi --removable --boot-directory=/media/<USER>/USBBOOT/boot --efi-directory=/media/<USER>/USBBOOT /dev/<USB-Device>
Hierbei wird der Bootloader mit einem, für das UEFI Secure Boot, vertrauenswürdigen Schlüssel signiert.
Weiterhin muss auch der Kernel signiert werden, damit das Betriebsystem bootet.
Weitere Infos befinden sich für ubuntu unter Secure-Boot-nachruesten und EFI_Grundlagen#Secure-Boot.
Die folgenden Schritte zum kopieren der GRUB-Module sind ab der Supergrub2disk Version 2.01RC1 nicht mehr nötig.
(ACHTUNG: Versionierungnummer hat sich später von 2.01 wieder zu 2.00 geändert)
Damit man nun noch die diversen Module von Grub nutzen kann (loopback, lvm, ext3,…) kopiert man die UEFI-Kompatiblen Module in den Grub-Ordner.
cp -r /usr/lib/grub/x86_64-efi /media/USBBOOT/boot/grub
Diese Module lassen sich allerdings aktuell noch nicht im Secure Mode laden. Diesen Modus muss man also noch ausschalten.
Supergrub2disk anpassen
Das Supergrub2disk-ISO mounten und den Inhalt auf den USB-Stick kopieren.
mount <PFAD-ZU-ISO>/super_grub_disk_<VERSION>.iso /<ISO-MOUNTPOINT> -o loop cp -r <ISO-MOUNTPOINT>/* /<Pfad zu USB-STICK-MOUNTPOINT>
Boot ISOs
Im Rootverzeichnis des USB-Sticks den Ordner boot/boot-isos
erstellen
Loopfähige ISOs in diesen Ordner kopieren.
Zum Schluß den USB-Stick unmounten und dann damit booten
umount <Pfad-ZU-USB-STICK>
Tips zu Distries
Diverse ISOs brauchen einige Anpassungen in der „grub.cfg“ oder im Verlauf des Bootens.
Hier sind einige Tips aufgeführt.
Ubuntu Server
grub.cfg Zeilen
menuentry "Ubuntu Server 32bit" { loopback loop $root/ubuntu-12.04-server-i386.iso linux (loop)/install/vmlinuz file=$isofile/preseed/ubuntu-server.seed iso-scan/filename=$root/ubuntu-12.04-server-i386.iso quiet noeject noprompt splash -- initrd (loop)/install/initrd.gz }
Nachdem mit dem Stick gebootet wurde, zunächst die Sprache und das Tastatur-Layout auswählen.
Nun mit ALT+F2 in die Konsole wechseln und hier die Partition mounten in der sich die ISO-Dateien befinden.
nun folgendes mounten:
mount -o loop <PFAD_ZU_ISO> /cdrom
Danach mit exit
wieder in abmelden und mit ALT+F1 in den Installer wechseln.
Dieser ist sicherlich schon fehlgeschlagen da er nach der Sprachauswahl die CD durchsuchen möchte.
Hier einfach mit „weiter“ bestätigen und danach den Punkt nach dem „CD-ROM Einbinden“ auswählen.
Memdisk
Manche Images lassen sich per memdisk
starten. Es ist im Paket syslinux
enthalten und kann in den ../boot/boot-isos
Ordner kopiert werden.
apt-get install syslinux cp /usr/lib/syslinux/memdisk <PFAD_ZU_USB-STICK-MOUNTPOINT>/boot/boot-isos
Testen mit qemu
Um den Stick mal eben zu testen, könnte man diesen in einen PC stecken und davon dann booten.
Dies ist zwar einfach, dauert aber länger und der Stick wird immer wieder abgezogen und wieder eingesteckt.
Man kann aber auch diesen Test virtuell z.B. mit qemu-kvm machen.
qemu installieren
apt-get install qemu-kvm
Nach der Installation verlinken wir das jew. qemu Architektur Binary.
ln -s /usr/bin/qemu-system-<ARCHITEKTUR> /usr/bin/qemu
Virtuelle Maschine starten
Zunächst muss der Stick unmountet werden.
umount /dev/<GERÄTEPARTITIONEN>
Danach einfach so starten
qemu -hda /dev/<GERÄT>
qemu mit UEFI
sudo apt-get install ovmf qemu-kvm
Danach wie folgt starten:
qemu-system-x86_64 --bios /usr/share/qemu/OVMF.fd -hda /dev/<GERÄT>