Use the commit requested in 2063876
commit 64113751c3729a2deaffbb1e1b6fd36e2c8bac6b
Author: Michael Brown <mcb30@ipxe.org>
Date: Thu Feb 10 12:47:25 2022 +0000
[efi] Enable IMAGE_GZIP by default for AArch64
Signed-off-by: Cole Robinson <crobinso@redhat.com>
Add the files to /usr/share/ipxe/qemu. The qemu package can then
use this as one of its firmwarepaths, and save itself the symlink
setup complication
Signed-off-by: Cole Robinson <crobinso@redhat.com>
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1926561
When combining BIOS and EFI roms, the EfiRom utility from edk2-tools
clears the "last image indicator" in the BIOS ROM image header, and then
updates the checksum in the last byte of the BIOS ROM image. However,
EfiRom does not update any internal, iPXE-specific checksums in the BIOS
ROM image.
In the rare case when the checksum residing in the BIOS ROM's last byte
does not fall into such padding that was added previously by
"util/padimg.pl" -- that is, if the BIOS image is a whole multiple of 512
bytes even without padding --, then the recalculation of *only* the last
byte invalidates the LZMA stream and/or an internal CRC32 checksum that
are embedded elsewhere in the BIOS ROM. Consequently, iPXE fails to
LZMA-decompress itself when booted on SeaBIOS.
iPXE's own "util/catrom.pl" utility knows how to update internal
(iPXE-specific) checksums; use this tool for combining the BIOS and EFI
images.
(
In theory we could abandon EfiRom from edk2-tools altogether, and
prepare even the stand-alone EFI driver image with iPXE-internal
tooling. For this, we'd only have to build the
"bin-x86_64-efi/${rom}.efirom" target, in place of the
"bin-x86_64-efi/${rom}.efidrv" target. The iPXE build would
automatically convert the latter into the former with the "util/efirom"
program.
Unfortunately, "util/efirom" does not support "EFI compression", and
that would cause us to nearly exhaust our 256 KB "migration buffer".
Therefore, continue using EfiRom, but only for compressing the "efidrv"
binary to a single (not combined) EFI ROM image. Perform only the
combination step with "util/catrom.pl".
)
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
I'm not sure how this managed to build before now, but the Perl script
called "fixrom.pm" definitely does "use FindBin" so this dependency is
required. The error was:
BEGIN failed--compilation aborted at ./util/fixrom.pl line 23.
Can't locate FindBin.pm in @INC (you may need to install the FindBin module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./util/fixrom.pl line 23.