Motivation
Ziel der Installation ist es eine SystemRescueCD ISO Datei auf eine Partition einer USB Festplatte zu bekommen und dieses ISO zu booten. Das soll unter BIOS/MBR und (U)EFI funktionieren.
Vorbereitung
- Rechner mit installiertem Linux starten
- Alle Befehle müssen als root User auf diesem Rechner ausgeführt werden
# sudo -s
- Eine ISO Datei von SystemRescueCD downloaden. Hier systemrescuecd-amd64-6.1.8.iso
- USB Festplatte > 1GB anschließen
Sollte der Automounter die USB Platte schon gemounted haben, muss diese erst ungemountet werden.
# umount /dev/sdX?
- Mountpoints unter /mnt anlegen
usb: Für die USB Festplatte mit root Partition und /boot. Später für /dev/sdX3
efi: USB Festplatten Partition für das EFI Filesystem. Später für /dev/sdX2
iso: Mountpoint für die SystemRescueCD ISO Datei.
# mkdir /mnt/usb /mnt/efi /mnt/iso
- Mounten des SystemRescueCD ISO Files
# mount systemrescuecd-amd64-6.1.8.iso /mnt/iso/
Installation
Löschen der USB Festplatte
Hier werden die Daten der angeschlossenen USB Festplatte zerstört. Wenn die Festplatte schon richtig partitioniert ist, ist der Schritt nicht nötig.
# sgdisk --zap-all /dev/sdX Creating new GPT entries in memory. GPT data structures destroyed! You may now partition the disk using fdisk or other utilities.
Partitionen anlegen
Die Namen sind dabei egal. Mögliche andere Typecodes können mit sgdisk -L angezeigt werden.
1: ef02 => BIOS Boot Partition, unformatiert und ohne Inhalt, dient nur zur Aufnahme des MBR Bootloaders.
2: ef00 => EFI Filesystem
3: 8300 => Linux Filesystem, hier kommen die ISO Files drauf. 1G für ein einzelnes ISO ist ausreichend. Für mehrere ISOs muss entsprechend mehr Platz reserviert werden.
# sgdisk --clear --new 1::+1M --typecode=1:ef02 --change-name=1:'BIOS' --new 2::+100M --typecode=2:ef00 --change-name=2:'EFI' --new 3::+1G --typecode=3:8300 --change-name=3:'Linux' /dev/sdX Creating new GPT entries in memory. Setting name! partNum is 0 Setting name! partNum is 1 Setting name! partNum is 2 The operation has completed successfully.
EFI Partiton muss vfat sein
# mkfs.vfat /dev/sdX2
Linux Partition, könnte auch vfat oder Windows data sein. Evtl. auch noch anderes.
-L boot ist wichtig und muss mit dem Eintrag img_label und archisolabel in grub.cfg übereinstimmen.
# mkfs.ext4 -L boot /dev/sdX3
Partitionen mounten
# mount /dev/sdX2 /mnt/efi # mount /dev/sdX3 /mnt/usb
Bootdateien kopieren und anpassen
Benötigte Dateien kopieren
# cp -rp /mnt/iso/boot /mnt/usb/. # cp -rp /mnt/iso/EFI /mnt/efi/. # mkdir /mnt/usb/iso # cp systemrescuecd-amd64-6.1.8.iso /mnt/usb/iso/systemrescuecd.iso
Anmerkung: Wenn eine neuere SystemRescueCD Datei vorhanden, ist kann diese durch einfaches kopieren ausgetauscht werden.
grub für MBR/BIOS installieren
# grub-install --removable --boot-directory=/mnt/usb/boot --target=i386-pc /dev/sdX i386-pc wird für Ihre Plattform installiert. Installation beendet. Keine Fehler aufgetreten.
grub für EFI dazu installieren
# grub-install --removable --boot-directory=/mnt/usb/boot --efi-directory=/mnt/efi --target=x86_64-efi /dev/sdX x86_64-efi wird für Ihre Plattform installiert. Installation beendet. Keine Fehler aufgetreten.
Bootmenü anpassen
# cd /mnt/usb/boot/grub/
grub benötigt eine Datei /boot/grub/grub.cfg. Wahrscheinlich gehen auch andere Dateinamen.
# mv grubsrcd.cfg grub.cfg
grub.cfg editieren und folgendes einfügen
# vi grub.cfg ... menuentry "SystemRescueCD" { set gfxpayload=keep loopback loop /iso/systemrescuecd.iso linux (loop)/sysresccd/boot/x86_64/vmlinuz img_label=boot img_loop=/iso/systemrescuecd.iso archisobasedir=sysresccd archisolabel=boot copytoram initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img } ...
Alles unmounten und testen
# cd /mnt # umount usb efi # reboot
Fertig
Probleme und Workarounds
Boot Prozess endet im grub Prompt
Evtl. wird die grub.cfg Datei nicht gefunden. Testen lässt sich das in dem das grubsrcd.cfg File manuell geladen wird.
grub> configfile (hd0,gpt3)/boot/grub/grubsrcd.cfg
hd0: Erste Festplatte
gpt3: Dritte Partition, auf der sich das ISO File und /boot befindet.
Funktioniert das, reicht es die Datei /mnt/usb/boot/grub/grubsrcd.cfg nach /mnt/usb/boot/grub/grub.cfg um zu benennen.
grub Fehlermeldung(en) nicht lesbar
Sollte grub beim booten Fehler anzeigen, die aber zu schnell durchlaufen und nicht lesbar sind, dann helfen folgende Einträge im grub.cfg File.
set pager=1 set debug=all
MBR/BIOS Boot braucht ewig (>1 Minute) um das OS zu starten.
-
- Daten Partition umformatieren nach ext4
- Evtl. bei Daten Partition im vfat Format das Partitionslabel in Großbuchstaben schreiben (ungetestet)
# mkfs.fat -F32 -n BOOT /dev/sdX3
grub-install gibt Fehlermeldungen aus
Evtl. fehlen die benötigten grub Packete
# apt install grub-efi-amd64 grub-efi-amd64-bin grub-pc grub-pc-bin
Weitere hilfreiche Links
Mein Dank geht an die Autoren folgender Seiten, ohne die ich bedeutet länger gebraucht hätte, als ich sowieso schon habe 🙂
- https://www.system-rescue.org/manual/Installing_SystemRescue_on_the_disk/
- https://wiki.archlinux.org/index.php/Multiboot_USB_drive
- https://unix.stackexchange.com/questions/273329/can-i-install-grub2-on-a-flash-drive-to-boot-both-bios-and-uefi
- https://www.slivermetal.org/2016/09/18/how-to-create-an-hybrid-uefi-gpt-bios-gptmbr-boot-usb-disk/
- https://www.preining.info/blog/2014/05/usb-stick-tails-systemrescuecd/
- https://www.gnu.org/software/grub/manual/grub/grub.html#Installing-GRUB-using-grub_002dinstall
- https://www.linux.com/training-tutorials/how-rescue-non-booting-grub-2-linux/
Last Words
Niemand ist perfekt oder hat jemals ausgelernt. Und gerade unter Linux gibt es immer mehr als einen Weg zum Ziel. Daher immer her mit Euren Ideen.
Fragen, Fehler, Kommentare und vor allem Verbesserungsvorschläge gerne unten in den Kommentaren.