[syslinux] gpxelinux.0 (and maybe pxelinux.0) brokensince 51f563a2e52d1e2668e7b7a3d480c4f1e4b89d97

Sebastian Herbszt herbszt at gmx.de
Sat Feb 21 10:19:45 PST 2009


H. Peter Anvin wrote:
> Constantin Charissis wrote:
>> Hello,
>> 
>> I'm trying to boot with a git snapshot using gpxelinux.0
>> 
>> When using 3.73 everything is fine.
>> When using 3.74pre1 and later I've got the following behavior :
>> 
>> The boot process is stopped just after displaying this line :
>> 
>> PXELINUX 3.74 pre1-7-gb83eb9f  Copyright (c) 1994-2008 H. Peter Anvin
>> 
>> I can reproduce the problem under vmware server 1.0, and also on a server.
>> 
> 
> What hardware is in the server?

I am able to reproduce this on bochs.
 
>> After testing several snapshots, it looks like the following commit 
>> broke gpxelinux.0 :
>> 
>> "pxelinux: clean up and correct the entry point search"
>> 
>> 51f563a2e52d1e2668e7b7a3d480c4f1e4b89d97
>> 
>> http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=commit;h=51f563a2e52d1e2668e7b7a3d480c4f1e4b89d97
> 
> Hm... any way I could get you to try plain pxelinux.0 as well?

Happens with pxelinux.0 too.

With the help of bochs debugger i was able to find this:

pxelinux.lst:

  1060 00007C61 0FB52E[6026]                         lgs bp,[InitStack]      ; GS:BP -> original stack
  1061 00007C66 65C45E30                                les bx,[gs:bp+48]
  1062 00007C6A E8(9D15)                                call is_pxe
  1063 00007C6D 0F842001                                je have_pxe
...
  5264                                  is_pxe          equ is_struc.pxe
  5265                                  is_pxenv      equ is_struc.pxenv
  5266                                  is_struc:
  5267                                  .pxe:
  5268 0000919D 2666813F21505845                        cmp dword [es:bx],'!PXE'

bochsdbg:

<bochs:7> p
Next at t=36890078
(0) [0x00007c61] 0000:7c61 (unk. ctxt): lgs bp, ds:0x2e60         ; 0fb52e602e
<bochs:8> p
Next at t=36890079
(0) [0x00007c66] 0000:7c66 (unk. ctxt): les bx, gs:[bp+0x30]      ; 65c45e30
<bochs:9> p
Next at t=36890080
(0) [0x00007c6a] 0000:7c6a (unk. ctxt): call .+0x9930 (0x0000159d) ; e83099
<bochs:10> s
Next at t=36890081
(0) [0x0000159d] 0000:159d (unk. ctxt): add byte ptr ds:[bx+si], al ; 0000
<bochs:11> p

The call to is_pxe doesn't end up where it should (0000:159d instead of 0000:919d).

- Sebastian




More information about the Syslinux mailing list