[ipxe-devel] Generating a BIOS/UEFI hybrid ISO image

Dean Westhead dean at westhead.net
Tue Oct 5 14:18:02 UTC 2021


Yes ... that is what i have been trying .... and failing ! hehe !

it all "makes" without any errors and after installing the xorriso package the genfsimg runs without any errors too.

The only problem is that the outputted combined.iso will not boot a Dell UEFI laptop and RUFUS only sees the ISO as BIOS only too.

If I copy over to the src/util directory the old geniso file and add the rule into into the Makefile.pcbios to use it, the resultant
ISO file works fine on both BIOS and UEFI machines.

The ISO file is also about 1Mb smaller when created with the genfsimg than with the geniso file .... almost like it is failing to add the
bin-x86_64-efi/ipxe.efi file.


----- Original Message -----
From: "Michael Brown" <mcb30 at ipxe.org>
To: "Dean Westhead" <dean at westhead.net>, "ipxe-devel" <ipxe-devel at lists.ipxe.org>
Sent: Tuesday, 5 October, 2021 12:58:53
Subject: Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image

On 05/10/2021 09:38, Dean Westhead wrote:
> I may be missing something, but since the commit changed the file 
> src/util/geniso to src/util/genfsimg, I have not been able to generate 
> an ISO file that can be used to boot both BIOS and UEFI ... it always 
> only boots BIOS.
> I admit that the changes that i was told to make to the geniso file, i 
> cant make to genfsimg becasue it is very different and i dont want to 
> break anything else in it !
> Am I doing something wrong or is there a different set of instructions 
> to modify genfsimg to make it create this ISO correctly ?

You no longer need to make any modifications to genfsimg: it is already 
capable of building a combined BIOS and UEFI ISO (and can also handle 
multiple UEFI architectures, if you want e.g. a combined ISO that can 
handle BIOS, x86_64 UEFI, and AArch64 UEFI).

As per "./util/genfsimg -h":

usage: ./util/genfsimg [OPTIONS] foo.lkrn|foo.efi [bar.lkrn|bar.efi,...]

where OPTIONS are:
  -h         show this help
  -o FILE    save image to file
  -p PAD     pad filesystem (in kB)
  -s SCRIPT  use executable script

so you can build a combined image in two stages using e.g.

   make bin/ipxe.lkrn bin-x86_64-efi/ipxe.efi

   ./util/genfsimg -o combined.iso \
       bin/ipxe.lkrn bin-x86_64-efi/ipxe.efi

You can also use the "-s" option to specify a script that will be used 
by platforms (without needing to build using EMBED=...).  This is 
particularly useful if you build an editable FAT filesystem image 
instead of an ISO, using e.g.

   ./util/genfsimg -o combined.img -s myscript.ipxe \
       bin/ipxe.lkrn bin-x86_64-efi/ipxe.efi

since you can then mount the FAT filesystem image and edit the script 
(saved as "autoexec.ipxe") without needing to recompile.


More information about the ipxe-devel mailing list