[syslinux] PXELINUX: how to debug initrd corruption?

Gene Cumm gene.cumm at gmail.com
Sat Jan 7 19:27:37 PST 2012


On Jan 7, 2012 7:15 PM, "Andy Walls" <awalls at md.metrocast.net> wrote:
>
> Hi All,
>
> I have a system, that, ~80% of the time, fails to properly boot using
> pxelinux.0 as provided by RHEL 5.5 (syslinux 3.11, I think).  The
> gripe, before the console messages stop, is a message that comes from
> the linux kernel complaining the compressed ram drive image is bad:
> "invalid compressed format (err=[small number])".
>
> I have two questions:
>
> 1. How should I go about debugging the problem to find the root cause of
> the initrd image corruption?
>
> I've examined the TFTP transfers with Wireshark; they appear OK.
> I have not tried a more modern pxelinux.0 yet.

How big are the kernel/initrd individually?  How much RAM does the system
have?  What tftpd?  Some tftpds don't handle rollover and will refuse to
transmit or truncate.

> 2. Can anyone provide a description or simple diagram of what regions of
> system memory PXELINUX uses?
>
> From the linker file, I know that .earlybss starts at 0x800 (or 0x1000),
> and a number of sections directly follow it.
> I also realize some allocated regions are system specific, depending on
> what the BIOS returns in its E820 map.
> I am, not surprisingly, interested in the regions where PXELINUX stores
> the kernel and initramdisk images after TFTP-ing them over.

PXELINUX itself stays in the first 1 MiB.  With regards to e820, I know the
current version does pay attention to these regions to fail loading.
linux.c32 will also take these into account to be more intelligent.  I
believe in at least some scenarios, kernel/initrd start at 1 MiB.  However,
3.11 is old enough I can't speak for its internals.

Any chance you could use meminfo.c32 (not in 3.11), screenshot or
transcibed?

I'd also advise boot testing with a more current version.

--
-Gene



More information about the Syslinux mailing list