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

Geert Stappers stappers at stappers.nl
Tue Oct 5 15:58:56 UTC 2021


On Tue, Oct 05, 2021 at 02:18:02PM +0000, Dean Westhead wrote:
> From: "Michael Brown" <mcb30 at ipxe.org>
> Sent: Tuesday, 5 October, 2021 12:58:53
> > 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.
> > 
> > Michael
> Hi,
> 
> 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.

Ah

 
> 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.


Advice:  Make it an interesting challenge

Reproduce the "problem" on qemu.  AFAIK has qemu both "BIOS" and "uEFI".  [0]
Then describe how others can reproduce the challenge.

In other words: Go beyond "It doesn't work on _my_ hardware!"


 
> Dean.



Groeten
Geert Stappers

[0] It will gain original poster a faster development cycle.
-- 
Silence is hard to parse


More information about the ipxe-devel mailing list