ubuntuusers.de

Erstellung eines (U)EFI fähigen ISO Images

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

CoderGrizzly

Anmeldungsdatum:
20. März 2012

Beiträge: Zähle...

Guten Morgen alle zusammen, ☺

ich versuche auf Basis des Ubuntu 16.04 Server 64-Bit ISO Images ein eigenes ISO Image zu erstellen. Das hat soweit auch funktioniert - bis ich versucht habe dieses auf einem Rechner mit UEFI Bios zu booten (in diesem Fall habe ich es mit VMware und Hyper-V getestet).

Ich bin dann über diese Anleitung hier "gestolpert": https://askubuntu.com/questions/457528/how-do-i-create-an-efi-bootable-iso-of-a-customized-version-of-ubuntu

Dabei ist mir aufgefallen, dass mir dumpet hier wirklich ausgibt, dass ich keinen (U)EFI Boot Block in meinem ISO habe (mein ISO Image):

Validation Entry:
        Header Indicator: 0x01 (Validation Entry)
        PlatformId: 0x00 (80x86)
        ID: ""
        Checksum: 0x55aa
        Key bytes: 0x55aa
Boot Catalog Default Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load segment: 0x0 (0000:7c00)
        System type: 0 (0x00)
        Load Sectors: 4 (0x0004)
        Load LBA: 2034 (0x000007f2)

obwohl die Sache so aussehen sollte (Original ISO Image):

Validation Entry:
        Header Indicator: 0x01 (Validation Entry)
        PlatformId: 0x00 (80x86)
        ID: ""
        Checksum: 0x55aa
        Key bytes: 0x55aa
Boot Catalog Default Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load segment: 0x0 (0000:7c00)
        System type: 0 (0x00)
        Load Sectors: 4 (0x0004)
        Load LBA: 52780 (0x0000ce2c)
Section Header Entry:
        Header Indicator: 0x91 (Final Section Header Entry)
        PlatformId: 0xef (EFI)
        Section Entries: 1
        ID: ""
Boot Catalog Section Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load address: 0 (0x0000)
        System type: 0 (0x00)
        Load Sectors: 4736 (0x1280)
        Load LBA: 107710 (0x0001a4be)

Mein Befehl dazu sah so aus:

mkisofs -disable-deep-relocation -rational-rock -volid test -input-charset utf-8 -cache-inodes -joliet -full-iso9660-filenames -eltorito-boot isolinux/isolinux.bin -eltorito-catalog isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output /tmp/test.iso /tmp/isoimage

Ich habe ihn dann wie folgt nach dem Artikel geändert:

mkisofs -appid test -volid test -volset test -input-charset utf-8 -rational-rock -translation-table -eltorito-boot isolinux/isolinux.bin -eltorito-catalog isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -efi-boot boot/grub/efi.img -no-emul-boot -output /tmp/test.iso /tmp/isoimage

Nun habe ich auch den EFI Boot Block:

Validation Entry:
        Header Indicator: 0x01 (Validation Entry)
        PlatformId: 0x00 (80x86)
        ID: ""
        Checksum: 0x55aa
        Key bytes: 0x55aa
Boot Catalog Default Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load segment: 0x0 (0000:7c00)
        System type: 0 (0x00)
        Load Sectors: 4 (0x0004)
        Load LBA: 1016 (0x000003f8)
Section Header Entry:
        Header Indicator: 0x91 (Final Section Header Entry)
        PlatformId: 0xef (EFI)
        Section Entries: 1
        ID: ""
Boot Catalog Section Entry:
        Entry is bootable
        Boot Media emulation type: no emulation
        Media load address: 0 (0x0000)
        System type: 0 (0x00)
        Load Sectors: 4736 (0x1280)
        Load LBA: 1036 (0x0000040c)

Ich kann das ISO auch weiterhin in einem nicht-UEFI System booten. Allerdings in einem UEFI System funktioniert es immer noch nicht.

Irgendwelche Ideen oder Anregungen, was ich falsch mache? 😳

Tut-tut

Avatar von Tut-tut

Anmeldungsdatum:
24. August 2012

Beiträge: 1385

Ich verfahre bei jeder UEFI-Installation hiernach (siehe insbesondere Zi.1.5): http://wiki.ubuntu-forum.de/index.php?title=Benutzer:Klaus_P#

Für die Vorbereitung eines bootfähigen USB-Sticks verwende ich allerdings Rufus unter Windows in der VBox.

Beim Booten mit dem vorbereiteten Stick benutze ich Taste F12, um den PC dann im UEFI-Modus zu booten.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Erst einmal Danke für Deinen Post. Ich habe den Artikel durchgelesen, kann allerdings nicht erkennen, wie der mir helfen soll.

Vielleicht war meiner erstes Post etwas missverständlich. Es gibt mir nicht um die Installation des Original Ubuntu Images in einem UEFI System. Das funktioniert mit Ubuntu 16.04 ohne Probleme. Mein Problem ist, dass eine modifiziertes Ubuntu ISO Image sich nicht in einem UEFI System starten lässt. Damit meine ich das Booten der CD bzw. des ISO Images an sich und nicht den nachfolgenden Installationsprozess.

Natürlich kann man in Hyper-V und VMware (und wahrscheinlich auch in anderen System) UEFI abschalten. Allerdings hätte ich gerne ein ISO Images was - genau wie das Original - einfach überall funktioniert, ohne das der Benutzer aktiv werden muss.

CovertheRoad

Anmeldungsdatum:
6. Juni 2018

Beiträge: Zähle...

Der Starmedienersteller macht meiner Erfahrung nach, genau was du willst. Ich kann beim Booten und F12 anschließend auswählen, ob ich mit BIOS oder UEFI den Stick starten möchte.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

CovertheRoad schrieb:

Der Starmedienersteller macht meiner Erfahrung nach, genau was du willst. Ich kann beim Booten und F12 anschließend auswählen, ob ich mit BIOS oder UEFI den Stick starten möchte.

Irgendwie komme ich gerade nicht mit. 😳 Wieso beim Booten etwas auswählen? Und warum USB Stick?

Ich möchte ein modifiziertes Ubuntu ISO erstellen. Dieses CD Image bzw. diese CD soll sowohl mit einem normalen BIOS wie auch mit UEFI BIOS gestartet werden können, ohne dass der Benutzer aktiv werden muss (also bspw. etwas im BIOS umstellen). Mit dem regulären Ubuntu ISO geht dies. Diese startet auch in einem Rechner mit UEFI BIOS. Nur leider funktioniert dies nicht mit dem modifizierten Ubuntu.

Es geht nicht um ein Dual Boot System oder der Installation / dem Betrieb von Ubuntu Linux von einem USB Stick aus.

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

mrkramps schrieb:

Siehe Wiki-Artikel LiveCD manuell remastern und Blog-Artikel ITrig :: Eigene Linux Distribution - Tools um Live CDs oder ISO Images von Ubuntu Installationen zu erstellen (Version 2016) 🇩🇪.

Danke für Deinen Post. ☺

habe mir beide Links angeschaut. Im ersten wird eine LiveCD erstellt, allerdings keine Installations CD. Interessanterweise wird hier das Tool genisoimage statt mkisofs verwendet. Allerdings passierend auf den Parametern, die ich da sehe, habe ich meine Zweifel, dass diese CD bzw. das ISO Image ein UEFI BIOS unterstützen wird, da die dazugehörige EFI Datei nicht eingebunden wird. Dies hatte ich am Anfang mit mkisofs auch so.

Bei dem zweiten Link scheint es mir über ein Backup in ein ISO Image zu gehen. Man kann sogar eine LiveCD seines Systems erstellen. Nicht schlecht. Leider trifft das mein Problem ebenfalls nicht, da ich - wie schon erwähnt - eine Installations CD bauen und keine LiveCD basteln will.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Nachdem ich mich nun 1 Woche mit dem Thema herumgeschlagen habe, unzählige Anleitungen durchgelesen und durchprobiert habe, die allesamt aber nicht funktioniert haben, bin ich über diese Artikel gestolpert:

Linux unattended installation using preseed https://www.sysadminstuff.io/linux/linux-unattended-installation-with-preseed/

Ich brauche zwar keine "unattended installation", aber der Teil mit dem ISO bauen funktioniert trotzdem. 😉

Ich habe bisher immer mkisofs eingesetzt. Daniel Hand, der Autor, setzt xorriso ein. Hier der wichtige Teil aus dem Artikel (in leicht abgewandelter Form):

1
2
3
4
5
6
7
8
# apt-get install xorriso
# cd /tmp
# mkdir iso
# cd iso
# wget http://releases.ubuntu.com/16.04.2/ubuntu-16.04.2-server-amd64.iso
# mkdir custom-iso
# xorriso -osirrox on -indev ubuntu-16.04.2-server-amd64.iso -extract / custom-iso
# dd if=ubuntu-16.04.2-server-amd64.iso bs=512 count=1 of=custom-iso/isolinux/isohdpfx.bin

Jetzt können unter /tmp/iso/custom-iso die Anpassungen vorgenommen werden (Dateien austauschen / ergänzen, Preseed anpassen / ergänzen, usw.). Danach kommt die Erstellung des ISO Images:

1
2
# cd custom-iso
# xorriso -as mkisofs -isohybrid-mbr isolinux/isohdpfx.bin -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -o ../custom-ubuntu-http.iso .

Nun sollte es eine Datei /tmp/iso/custom-ubuntu-http.iso geben.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Eine Ergänzung: Keine Ahnung, warum Daniel Hand dies so gelöst hat. 😕 Aber die MBR Datei muss nicht mit in das ISO gepackt werden. Sprich:

1
# dd if=ubuntu-16.04.2-server-amd64.iso bs=512 count=1 of=isohdpfx.bin

und

1
xorriso -as mkisofs -isohybrid-mbr ../isohdpfx.bin -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -o ../custom-ubuntu-http.iso .

funktioniert ebenfalls.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Okay, zu früh gefreut. Irgendwie funktioniert die Geschichte nur zur Hälfte.

Unter VMware mit aktiviertem (U)EFI-BIOS kann ich das ISO Image nun ohne Probleme starten. Auch eine Installation ist möglich.

Unter Hyper-V funktioniert es mit einer Gen2 VM und aktiviertem (U)EFI-BIOS (findet sich unter "Sicherer Start") nicht: Der Rechner kann nicht das Medium starten. Allerdings kann man jetzt wenigstens nach dem Deaktivieren dieses Features das ISO Image starten. Dies ging vorher nicht. Eine Installation funktioniert dann ebenfalls.

Im Fehlerfall erscheint beim Start noch im BIOS der VM die Meldung:

Hyper-V(TM)

Virtual Machine Boot Summary

 1. SCSI DVD    (0,1)                The image´s hash and certificate are not allowed (DB).
 2. Network Adapter (00155D004209)   DHCP failed.
 3. SCSI Disk   (0,0)                No UEFI-compatible file system was found.


 No operating system was loaded. Press a key to retry the boot sequence...
 Note: Configuration changes may require the virtual machine to be reset.

CoderGrizzly

(Themenstarter)

Anmeldungsdatum:
20. März 2012

Beiträge: 73

Nachdem ich mich im Internet auf die Suche gemacht habe, bin ich über folgenden Artikel gestoßen:

Hyper-V SecureBoot Error https://trevorsullivan.net/2016/06/29/hyper-v-secureboot-error/

Daraufhin habe ich ein Original Ubuntu ISO genommen und es damit einmal getestet. Und siehe da: Ubuntu an sich ist im EFI Modus der Hyper-V Gen2 an sich nicht bootfähig. Sprich ich brauche mir hier auch nicht die Mühe machen, mein angepasstes Ubuntu ISO Image in der Konstellation irgendwie zum Starten bewegen zu wollen, wenn es Ubuntu selber nicht einmal hinbekommt (aus welchen Gründen auch immer - vielleicht ist ihnen das mit dem EFI schlicht weg einfach zu dumm, was ich total nachvollziehen könnte... 😀 ).

Sprich ich werde nun meinen Build Prozess auf die xorriso anpassen und dann ist das Thema für mich erledigt. 😉

Antworten |