How to create a UEFI bootable ISO image for openSUSE Leap 16?

I am trying to create a UEFI-only ISO for Leap 16 using the following command:

xorriso -as mkisofs -R -J -v -joliet-long -V <ISO_LABEL> -no-emul-boot -eltorito-alt-boot -eltorito-platform efi -e EFI/BOOT/bootx64.efi -o <OUTPUT_IMAGE> <ISO_DIRECTORY>

I have verified that the ISO contains the following files:

  • /EFI/BOOT/bootx64.efi
  • /boot/x86_64/loader/linux
  • /boot/x86_64/loader/initrd
  • /boot/grub2/grub.cfg

However, when attempting to boot from the ISO, the system displays:

“Attempting to start up from: EFI Virtual disk (0.0) … No Media”

It appears that the UEFI firmware is unable to locate a valid bootable image within the ISO.

Your help is really appreciated.

I have no idea about the tools you are using. The idea behind the ISO file one can download from openSUSE is that it is ready to go. UEFI or not. Just copy it byte for byte to a storage device. The most basic way:

dd if=<the-iso-file> of= /dev/sdX

where you have to fill in the name of the ISO file and the correct letter for X to write to the device you want to use (e.g. /dev/sdc).

There seem to be tools that can do the same, but then one have to make the correct choices of options/buttons/checks. And dd works since at least 50 years already.

3 Likes

I would like to integrate my custom RPMs into the openSUSE Leap 16 RPM set and then create a custom UEFI-bootable ISO image.

What is the correct approach to creating such a custom UEFI-bootable ISO?

@juliep just patch them in https://agama-project.github.io/docs/user/guides/patching_agama_live

1 Like

All would have gone quicker when you had told so in the first post and let the title reflect that. But answers are now coming forward.

1 Like

The main problem of your xorriso run is the fact that you use
the default EFI startup program bootx64.efi as EFI boot image.
But the boot image needs to be a FAT filesystem with that program
in it as \EFI\BOOT\BOOTX64.EFI and possibly more files.

A minor problem is that you separate option -no-emul-boot from
option -e by eltorito-alt-boot.

The combination of -eltorito-platform efi and -e is redundant
because -e implies EFI as El Torito platform.

The boot related xorriso -as mkisofs options of an existing ISO
can probably be reported by:


xorriso -indev "$iso" -report_el_torito as_mkisofs

With openSUSE_Leap_15.2_KDE_Live i get:


-V 'openSUSE_Leap_15.2_KDE_Live'
--modification-date='2020100708491700'
--grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt:'openSUSE-Leap-15.2-KDE-Live-x86_64-Media.iso'
-partition_cyl_align off
-partition_offset 16
-partition_hd_cyl 64
-partition_sec_hd 32
--mbr-force-bootable
-append_partition 2 0xef --interval:local_fs:1849388d-1880107d::'openSUSE-Leap-15.2-KDE-Live-x86_64-Media.iso'
-iso_mbr_part_type 0xcd
--boot-catalog-hide
-b '/boot/x86_64/loader/eltorito.img'
-no-emul-boot
-boot-load-size 4
-boot-info-table
--grub2-boot-info
-eltorito-alt-boot
-e '--interval:appended_partition_2_start_462347s_size_30720d:all::'
-no-emul-boot

I.e. the EFI boot image is in a block range outside of the ISO 9660
filesystem from 512-byte block 1849388 to block 1880107, marked by
MBR partition table and El Torito catalog.

See also:

https://wiki.debian.org/RepackBootableISO#In_xorriso_load_ISO_tree_and_write_modified_new_ISO

3 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.