Table of Contents
Integreting BKO with latest gpxe and rom-o-matic
The latest gpxe code, and gpxe version used by rom-o-matic, both are creating trubble while booting.
I am hosting them at http://etherboot.org/share/pravin/BKO/rom-o-matic/
Following is the error thrown.
$qemu -fda gpxe-git-rtl8139.dsk -net nic,model=rtl8139 -net user ... ... ... PXELINUX 3.80 2009-05004 Copyright(C) 1994-2009 H. Peter Anvin et al !PXE entry point found (we hope) at 9C79:039E via plan A. UNDI code segment at 9C79 len 0794 UNDI data segment at 9CF3 len 2CC8 Getting cached packet 01 02PXE API call failed, error 0000 Boot failed: press any key to retry, or wait for reset........
I am not sure if this problem is from gpxe or from pxelinux. My guess is that, it should be gpxe problem
as same setup is working fine with my version of gpxe code.
all my modifications are listed on page pxekniferomomatic
Error Location
Problem should be because of latest gpxe code /pub/share/pravin/gpxe.git, because when I use the code which I normally use on my machine (which is copied on /pub/share/pravin/gpxe), it works fine.
trying to see if networking works
the location for problematic gpxe is
$ cd /pub/share/pravin/gpxe.git/src/ $ git log commit 768fe5c032727f585e29834d427cb5fd4ff8d84e Merge: e957581... edfbd4e... Author: Marty Connor <mdc@etherboot.org> Date: Thu Jun 4 20:20:03 2009 -0400 Merge branch 'master' of /pub/scm/gpxe commit edfbd4e4fa63ded7df7232d38cfeb16bc5662f6d Author: Michael Brown <mcb30@etherboot.org> Date: Fri Jun 5 01:06:07 2009 +0100 [netdevice] Fix incorrect value for MAX_LL_HEADER_LEN MAX_LL_HEADER_LEN is erroneously set to 6 rather than 14, resulting in possible data corruption whenever we send an ARP packet. Fix value and add a comment explaining why MAX_LL_ADDR_LEN is greater than MAX_LL_HEADER_LEN. Reported-by: Joshua Oreman <oremanj@rwcr.net>
and working gpxe is at
$ cd /pub/share/pravin/gpxe/src/ $ git log commit f4bf4e69f797e3a93e02b51aae43af303bb94525 Author: Michael Brown <mcb30@etherboot.org> Date: Mon May 18 09:33:36 2009 +0100 [legal] Add FILE_LICENCE declaration to romprefix.S commit c44a193d0d147ed6f98741124569864e516e9d4b Author: Michael Brown <mcb30@etherboot.org> Date: Fri May 1 15:41:06 2009 +0100 [legal] Add a selection of FILE_LICENCE declarations Add FILE_LICENCE declarations to almost all files that make up the various standard builds of gPXE.
Following command works in my old pxe, but does not work in trubbled pxe.
$ make bin/rtl8139.dsk $ qemu -fda bin/rtl8139.dsk -net nic,model=rtl8139 -net user -bootp http://etherboot.org/share/pravin/pxeDHCP.gpxe
Going one more level deeper
Testing if generic network booting over http works or not by using -bootp http://etherboot.org/gtest/gtest.gpxe
qemu -fda bin/rtl8139.dsk -net nic,model=rtl8139 -net user -bootp http://etherboot.org/gtest/gtest.gpxe
This works for both problematic and good gpxe
So, the problem lies in transition from
qemu -fda bin/rtl8139.dsk -net nic,model=rtl8139 -net user -bootp http://etherboot.org/gtest/gtest.gpxe
to
qemu -fda bin/rtl8139.dsk -net nic,model=rtl8139 -net user -bootp http://etherboot.org/share/pravin/pxeDHCP.gpxe
The commit causing problem
used git bisect to find the problematic commit. the test used to check if commit is correct or not is
make clean make bin/rtl8139.dsk qemu -fda bin/rtl8139.dsk -net nic,model=rtl8139 -net user -bootp http://etherboot.org/share/pravin/pxeDHCP.gpxe
Commit used as last known good commit is
git bisect good f4bf4e6
Following is the problematic commit.
$ git bisect bad 3c06277bbb6ea135e6a1daf22463a347fc7898c7 is first bad commit commit 3c06277bbb6ea135e6a1daf22463a347fc7898c7 Author: Michael Brown <mcb30@etherboot.org> Date: Tue May 26 11:05:58 2009 +0100 [settings] Allow for arbitrarily-named settings This provides a mechanism for using arbitrarily-named variables within gPXE, using the existing syntax for settings. :040000 040000 59221f26fc6a070c21fad5ca53329202425336ba 5aebb5cbcfe8c1aafa4679fd5938e12eb182c07b M src