Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
On Tue, Oct 12, 2021 at 11:18:00AM +, Dean Westhead wrote: > From: "Geert Stappers" > Sent: Thursday, 7 October, 2021 20:07:38 > > On Thu, Oct 07, 2021 at 03:03:06PM +0100, Michael Brown wrote: > > > On 07/10/2021 14:52, Dean Westhead wrote: > > > > Sorry ... I didnt want to take lots of your time if it is only me > > > > having this issue and everyone else is working fine. > > > > It is not important how much "works for me" exists. > > Interesting is exploring what can be improved. > > > > > > In the old "working" ISO, there is the following files : > > > > > > > > boot.cat > > > > efiboot.img > > > > ipxe.krn > > > > isolinux.bin > > > > isolinux.cfg > > > > > > > > The new one that isnt seen as a EFI bootable disk has : > > > > > > > > boot.catalog > > > > esp.img > > > > ipxe.lkrn > > > > isolinux.big > > > > isolinux.cfg > > > > > > > > I will open the EFI image too and see what is in that as soon as i > > > > can and let you know about that too. > > > > > > Thanks! Most of those files are for BIOS booting: the relevant ones for > > > UEFI are efiboot.img/esp.img, which should both be FAT filesystem images > > > containing a file \EFI\Boot\BootX64.efi (which should be the ipxe.efi > > > binary). > > > > I think a "directory tree" will help. > > > > Hi, > > The directory tree's for each ISO : > > New ( non working ) ISO : > > /new_iso/ > ├── boot.catalog > ├── esp.img > ├── ipxe.lkrn > ├── isolinux.bin > └── isolinux.cfg > > 0 directories, 5 files > > And the esp.img file on the non working ISO : > > /new_esp.img/ > └── EFI > └── BOOT > ├── BOOTIA32.EFI > └── BOOTX64.EFI > > 2 directories, 2 files > > The old ( working ) ISO : > > /old_iso/ > ├── boot.cat > ├── efiboot.img > ├── ipxe.krn > ├── isolinux.bin > └── isolinux.cfg > > 0 directories, 5 files > > And the efiboot.img file on the working ISO : > > /old_efiboot.img/ > └── EFI > └── BOOT > ├── BOOTIA32.EFI > └── BOOTX64.EFI > > 2 directories, 2 files > > When the ISO file is loaded into RUFUS to write to a USB I get : > > New ( non working ) ISO : > > RUFUS "sees" the ISO as only being for a target system of "BIOS (or UEFI-CSM)" > > Old ( working ) ISO : > > RUFUS "sees" the ISO as being for a target system of "BIOS or UEFI" > > Dean. > > Today (my timezone) there was this on the iPXE IRC channel: 3:28 < mcb30> Alice: I've just updated the hourly build so that ipxe.iso works as a HDD or CD-ROM image for BIOS, x86_64 UEFI, and arm64 UEFI 13:58 < Bob> :-) 14:05 < Charlie> One image to rule them all? Great! 14:44 < Debora> mcb30: does that mean than we can just dd if=ipxe.iso of=/dev/usbkey and that will boot everything (bios/uefi)(x86_64/arm64) ? 14:56 < mcb30> Debora: yes, that should work 15:00 < mcb30> https://twitter.com/ipxe/status/1450446741292167178 15:29 < Erick> mcb30: ... redacted ... 15:29 < Erick> and congrats on the "fat ipxe multiboot" thats amazing! 17:59 < Debora> mcb30: bravo 17:59 * Debora now waiting to the recipe to add embedded script to rule the world :D 18:08 < Felice> great! ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
Hi, The directory tree's for each ISO : New ( non working ) ISO : /new_iso/ ├── boot.catalog ├── esp.img ├── ipxe.lkrn ├── isolinux.bin └── isolinux.cfg 0 directories, 5 files And the esp.img file on the non working ISO : /new_esp.img/ └── EFI └── BOOT ├── BOOTIA32.EFI └── BOOTX64.EFI 2 directories, 2 files The old ( working ) ISO : /old_iso/ ├── boot.cat ├── efiboot.img ├── ipxe.krn ├── isolinux.bin └── isolinux.cfg 0 directories, 5 files And the efiboot.img file on the working ISO : /old_efiboot.img/ └── EFI └── BOOT ├── BOOTIA32.EFI └── BOOTX64.EFI 2 directories, 2 files When the ISO file is loaded into RUFUS to write to a USB I get : New ( non working ) ISO : RUFUS "sees" the ISO as only being for a target system of "BIOS (or UEFI-CSM)" Old ( working ) ISO : RUFUS "sees" the ISO as being for a target system of "BIOS or UEFI" Dean. - Original Message - From: "Geert Stappers" To: "ipxe-devel" Sent: Thursday, 7 October, 2021 20:07:38 Subject: Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image On Thu, Oct 07, 2021 at 03:03:06PM +0100, Michael Brown wrote: > On 07/10/2021 14:52, Dean Westhead wrote: > > Sorry ... I didnt want to take lots of your time if it is only me > > having this issue and everyone else is working fine. It is not important how much "works for me" exists. Interesting is exploring what can be improved. > > In the old "working" ISO, there is the following files : > > > > boot.cat > > efiboot.img > > ipxe.krn > > isolinux.bin > > isolinux.cfg > > > > The new one that isnt seen as a EFI bootable disk has : > > > > boot.catalog > > esp.img > > ipxe.lkrn > > isolinux.big > > isolinux.cfg > > > > I will open the EFI image too and see what is in that as soon as i > > can and let you know about that too. > > Thanks! Most of those files are for BIOS booting: the relevant ones for > UEFI are efiboot.img/esp.img, which should both be FAT filesystem images > containing a file \EFI\Boot\BootX64.efi (which should be the ipxe.efi > binary). I think a "directory tree" will help. As happy user of netbooting systems can't I provide a "directory tree" of a known good. An attempt to illustrate "directory tree" by using `tree /boot` (Warning: non-ASCII characters ahead) | $ tree /boot | wc | 3441346 12736 | $ tree /boot | grep -v -e .mo$ -e .mod$ | /boot | ├── config-5.10.0-4-amd64 | ├── config-5.10.0-5-amd64 | ├── grub | │ ├── fonts | │ │ └── unicode.pf2 | │ ├── grub.cfg | │ ├── grubenv | │ ├── i386-pc | │ │ ├── boot.img | │ │ ├── command.lst | │ │ ├── core.img | │ │ ├── crypto.lst | │ │ ├── efiemu32.o | │ │ ├── efiemu64.o | │ │ ├── fs.lst | │ │ ├── moddep.lst | │ │ ├── modinfo.sh | │ │ ├── partmap.lst | │ │ ├── parttool.lst | │ │ ├── terminal.lst | │ │ ├── video.lst | │ ├── locale | │ └── unicode.pf2 | ├── initrd.img-5.10.0-4-amd64 | ├── initrd.img-5.10.0-5-amd64 | ├── lost+found [error opening dir] | ├── System.map-5.10.0-4-amd64 | ├── System.map-5.10.0-5-amd64 | ├── vmlinuz-5.10.0-4-amd64 | └── vmlinuz-5.10.0-5-amd64 | Regards Geert Stappers -- Silence is hard to parse ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
On Thu, Oct 07, 2021 at 03:03:06PM +0100, Michael Brown wrote: > On 07/10/2021 14:52, Dean Westhead wrote: > > Sorry ... I didnt want to take lots of your time if it is only me > > having this issue and everyone else is working fine. It is not important how much "works for me" exists. Interesting is exploring what can be improved. > > In the old "working" ISO, there is the following files : > > > > boot.cat > > efiboot.img > > ipxe.krn > > isolinux.bin > > isolinux.cfg > > > > The new one that isnt seen as a EFI bootable disk has : > > > > boot.catalog > > esp.img > > ipxe.lkrn > > isolinux.big > > isolinux.cfg > > > > I will open the EFI image too and see what is in that as soon as i > > can and let you know about that too. > > Thanks! Most of those files are for BIOS booting: the relevant ones for > UEFI are efiboot.img/esp.img, which should both be FAT filesystem images > containing a file \EFI\Boot\BootX64.efi (which should be the ipxe.efi > binary). I think a "directory tree" will help. As happy user of netbooting systems can't I provide a "directory tree" of a known good. An attempt to illustrate "directory tree" by using `tree /boot` (Warning: non-ASCII characters ahead) | $ tree /boot | wc | 3441346 12736 | $ tree /boot | grep -v -e .mo$ -e .mod$ | /boot | ├── config-5.10.0-4-amd64 | ├── config-5.10.0-5-amd64 | ├── grub | │ ├── fonts | │ │ └── unicode.pf2 | │ ├── grub.cfg | │ ├── grubenv | │ ├── i386-pc | │ │ ├── boot.img | │ │ ├── command.lst | │ │ ├── core.img | │ │ ├── crypto.lst | │ │ ├── efiemu32.o | │ │ ├── efiemu64.o | │ │ ├── fs.lst | │ │ ├── moddep.lst | │ │ ├── modinfo.sh | │ │ ├── partmap.lst | │ │ ├── parttool.lst | │ │ ├── terminal.lst | │ │ ├── video.lst | │ ├── locale | │ └── unicode.pf2 | ├── initrd.img-5.10.0-4-amd64 | ├── initrd.img-5.10.0-5-amd64 | ├── lost+found [error opening dir] | ├── System.map-5.10.0-4-amd64 | ├── System.map-5.10.0-5-amd64 | ├── vmlinuz-5.10.0-4-amd64 | └── vmlinuz-5.10.0-5-amd64 | Regards Geert Stappers -- Silence is hard to parse ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
On 07/10/2021 14:52, Dean Westhead wrote: Sorry ... I didnt want to take lots of your time if it is only me having this issue and everyone else is working fine. In the old "working" ISO, there is the following files : boot.cat efiboot.img ipxe.krn isolinux.bin isolinux.cfg The new one that isnt seen as a EFI bootable disk has : boot.catalog esp.img ipxe.lkrn isolinux.big isolinux.cfg I will open the EFI image too and see what is in that as soon as i can and let you know about that too. Thanks! Most of those files are for BIOS booting: the relevant ones for UEFI are efiboot.img/esp.img, which should both be FAT filesystem images containing a file \EFI\Boot\BootX64.efi (which should be the ipxe.efi binary). Michael ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
Hi Michael, Sorry ... I didnt want to take lots of your time if it is only me having this issue and everyone else is working fine. In the old "working" ISO, there is the following files : boot.cat efiboot.img ipxe.krn isolinux.bin isolinux.cfg The new one that isnt seen as a EFI bootable disk has : boot.catalog esp.img ipxe.lkrn isolinux.big isolinux.cfg I will open the EFI image too and see what is in that as soon as i can and let you know about that too. Dean. - Original Message - From: "Michael Brown" To: "Dean Westhead" Cc: "ipxe-devel" Sent: Thursday, 7 October, 2021 09:54:58 Subject: Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image On 07/10/2021 09:43, Dean Westhead wrote: > I have checked the files in the two ISO's ( one generated from the old geniso > and one from teh new genfsimg ), and the files in them are very different. Merely saying that they "are very different" does not really give me any useful information with which to be able to help. What are the differences? Michael ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
On 07/10/2021 09:43, Dean Westhead wrote: I have checked the files in the two ISO's ( one generated from the old geniso and one from teh new genfsimg ), and the files in them are very different. Merely saying that they "are very different" does not really give me any useful information with which to be able to help. What are the differences? Michael ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
Hi Michael, I have checked the files in the two ISO's ( one generated from the old geniso and one from teh new genfsimg ), and the files in them are very different. I have tried booting both ISO's from a VM on an ESXi host the the VM set first to BIOS and then to EFI boot. Results are : Set to BIOS boot : both ISO files will boot. Set to EFI boot : only the ISO generated with the old geniso file will boot. The one generated with the new genfsimg image is not seen as a bootable ISO file. It is not a great problem ... I have just added the old geniso file into src/util and I use that one to generate the ISO's. It is just strange that the new genfsimg does not seem to be creating a hybrid ISO file ... or at least not one that I am able to use in any of our environments. Dean. - Original Message - From: "Michael Brown" To: "Dean Westhead" Cc: "ipxe-devel" Sent: Tuesday, 5 October, 2021 21:24:41 Subject: Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image On 05/10/2021 15:18, Dean Westhead wrote: > 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. Did you try comparing the contents of the .iso images generated through both methods, including the contents of the embedded UEFI boot image (the ESP)? Michael ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
On 05/10/2021 15:18, Dean Westhead wrote: 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. Did you try comparing the contents of the .iso images generated through both methods, including the contents of the embedded UEFI boot image (the ESP)? Michael ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
On Tue, Oct 05, 2021 at 02:18:02PM +, Dean Westhead wrote: > From: "Michael Brown" > 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 FILEsave 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 ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
Re: [ipxe-devel] Generating a BIOS/UEFI hybrid ISO image
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. 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. Dean. - Original Message - From: "Michael Brown" To: "Dean Westhead" , "ipxe-devel" 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 FILEsave 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 ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel
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 FILEsave 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 ___ ipxe-devel mailing list ipxe-devel@lists.ipxe.org https://lists.ipxe.org/mailman/listinfo/ipxe-devel