[ipxe-devel] initrd corruption since commit ef038491858cb51f8aa17b1f6e50444d2e627413

Michael Brown mcb30 at ipxe.org
Sat Apr 26 00:07:07 UTC 2025


On 25/04/2025 22:12, Sven Dreyer via ipxe-devel wrote:
> Now it doesn't boot because the initrd seems corrupted:
> Initramfs unpacking failed: invalid magic at start of compressed archive
> 
> Comparable problems apply to wimboot 2.8.0 trying to boot a Windows PE 
> 10.0-26100 x86_64:
> Unexpected output length 0x0 (expected 0x8000)
> Could not patch WIM boot.wim
> 
> Setup is:
> - x86_64 on BIOS (not UEFI)
> - PXE boot configured
> - Integrated PXE loads ipxe.pxe (self compiled from git master)
> - iPXE loads script
> - script for Debian nfsroot loads both initrd and kernel via nfs:// uri 
> and boots kernel with append parameters
> - script for Windows PE loads wimboot 2.8.0 and further windows files 
> over HTTP
> 
> What I noticed is:
> - The problem occurs with ipxe.pxe, undionly.kpxe and undionly.kkpxe
> - When switching to UEFI (and using ipxe.efi), the problem does NOT occur
> - A git bisect reveals that ef038491858cb51f8aa17b1f6e50444d2e627413 is 
> the first bad commit.
> - Before commit ef038491858cb51f8aa17b1f6e50444d2e627413, everything 
> works for me.
> 
> Is there anything I can do to track this problem down?

I'm unable to reproduce your problem, sorry.  But since you have a 
bisection result: try starting from commit b65f67d44 (i.e. the previous 
commit, which you say works for you), and add in one change at a time 
from commit ef0384918.  For example, start by adding the first changed 
line in bzimage.c:

         /* Calculate lowest usable address */
-       bottom = userptr_add ( bzimg->pm_kernel, bzimg->pm_sz );
+       bottom = ( bzimg->pm_kernel + bzimg->pm_sz );

Test after each changed line, and see which changed line introduces your 
issue.

Thanks,

Michael



More information about the ipxe-devel mailing list