[syslinux] ONERROR not triggered in PXELINUX 3.31 when ramdisk missing

Andreas Kotes count-linux at flatline.de
Tue Jan 16 14:23:43 PST 2007


Hello,

(I'd say "Hello Peter" if I'd knew for sure it was appropriate ;))

* H. Peter Anvin <hpa at zytor.com> [20070116 19:10]:
> Andreas Kotes wrote:
> >when the kernel image file is present, but the initrd image is not,
> >ONERROR is not called, and PXELINUX stays in the prompt forever ...
> 
> Looking at the implementation, this begs the question: should ONERROR 
> get executed if the user presses <Esc> to abort a kernel download? 
> Right now, this is handled through the same code path.

Yes, I gather. I'd expect the user to wish a prompt when holding SHIFT
or another qualifier which gets a prompt - one way to do this would be
(re-)checking for a qualifier after getting an ESC, and accordingly drop
to a prompt or go for ONERROR ...

> >Other error scenarios tested okay, a down/unresponding TFTP server can
> >lead to 15-20 minutes delay until all tried filenames timeout out ...
> 
> Hard to avoid, although I'm interested in suggestions.

yeah, really hard to avoid. And somehow seldom encountered, I'd guess.
After all, pxelinux.0 was pulled via TFTP, as well as a config file (no
ONERROR without one ...) .. I figure this may occur mostly if you (e.g.)
work with a timeout and the TFTP server goes away while the timeout
expires ...

I was a little bit surprised about the length of the delay (which comes
from checking for 6 different filename) .. I gathered from the sentence
"Filenames in KERNEL statements must be fully qualified." in the manual
the kernel filename has to be exact, and won't be completed with
multiple extensions - but it was ...

btw, TFTP is done by the PXE ROM itself? All of mine don't seem to honor
the 'port unreachable' or 'host unreachable' ICMP messages, and insist
on retrying ;) .. which might actually be a good thing.

Anyway, not being able to TFTP a file after being loaded via TFTP
ourselves should rather be unlikely - not being able to find the initrd
might happen more easily :)

Best regards,

   Andreas

P.S: is there a way to get a version from the git repository without
having to rely on the truly public servers?

-- 
"The problem is not how to wipe out all differences, but how to unite with all
differences intact" -- Tagore
"God is a comedian playing to an audience too afraid to laugh." -- H.L.Mencken




More information about the Syslinux mailing list