====== Supergrub2disk ====== [[http://www.supergrubdisk.org|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 [[http://www.supergrubdisk.org|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/ 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/ Erneut den USB-Stick herausnehmen und wieder einstecken. Jetzt wird der Stick automatisch nach ''/media//USBBOOT'' gemountet. ===== Grub installieren ===== Da wir [[http://www.supergrubdisk.org|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//USBBOOT /dev/ **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//USBBOOT/boot --efi-directory=/media//USBBOOT /dev/ 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//USBBOOT/boot --efi-directory=/media//USBBOOT /dev/ 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 [[http://wiki.ubuntuusers.de/EFI_Nachbearbeitung#Secure-Boot-nachruesten|Secure-Boot-nachruesten]] und [[http://wiki.ubuntuusers.de/EFI_Grundlagen#Secure-Boot|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 /super_grub_disk_.iso / -o loop cp -r /* / ===== 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 ===== 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 /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 /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- /usr/bin/qemu ==== Virtuelle Maschine starten ==== Zunächst muss der Stick unmountet werden. umount /dev/ Danach einfach so starten qemu -hda /dev/ ==== 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/