Festplatten Installation einer SystemRescueCD ISO Datei, bootbar unter MBR/BIOS und (U)EFI

Veröffentlicht: 05.10.2020 in Computer, Linux
Schlagwörter:, ,

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.

English version

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 🙂

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.

 

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s