[syslinux] Problems with NBP chaining

Roy Badami roy.badami at globalgraphics.com
Wed Jun 12 08:52:21 PDT 2002


I've just been playing with PXELINUX 1.74, and I can't get NBP
chaining to work.

First problem is that the code doesn't appear to recognize .0 files.

I could be completely mistaken (x86 assembler isn't my forte) but I
think the problem in pxelinux.asm is here:

------------------------------------------------------------------------

.one_step:      mov ecx,[di-4]                  ; 4 bytes before end

>>> ECX points for characters from end (not necessarily to '.')

                pop ax
                pop di
 
                or ecx,20202000h                ; Force lower case
 
                cmp ecx,'.com'
                je near is_comboot_image
                cmp ecx,'.cbt'
                je near is_comboot_image
                cmp ecx,'.bss'
                je near is_bss_image
                cmp ecx,'.bin'
                je near is_bootsector

>>> At this point, '.bs' would be in the top 3 bytes of ECX -- need to
    shift right 8 bits before compare

                and ecx, 00ffffffh
                cmp ecx,'.bs'
                je near is_bootsector

>>> At this point '.0' would be last two chars (top half of ECX) -- need
    to shift right another 8 bits

                cmp cx,'.0'
                je near is_bootsector
                ; Otherwise Linux kernel

------------------------------------------------------------------------

Also, I tried testing this by getting it to chainload itself (renamed
to pxelinux.bin, since I couldn't get it to recognize the .0
extension).

The second incarnation of pxelinux failed with "Unable to initialize
UDP stack".

It's not entirely clear to me, but it looks like the UNLOAD code isn't
run except for kernels; so perhaps when the new NBP tries to
initialize PXE it gets an error, because it's already been
initialized...

	-roy




More information about the Syslinux mailing list