Daniel Verkamp: COMBOOT Support

Journal

Week 8


15-17 July 2008

  • After a conversation with mcb30 last Thursday on how to fix the problems with COM32 stack overwrites during image loading, I've implemented his suggestions. This resulted in a 3-day debugging marathon until I switched to a simpler test case and just single stepped through the entire image execution process… and finally noticed (thanks to the Intel-syntax Bochs debugger) that I had written a constant as 12 instead of $12 (AT&T syntax strikes again :-)). But the upshot of all this is that COM32 programs using “Run kernel image” work totally correctly now, without any hack to limit the stack size, and I can say without reservation that menu.c32 is working perfectly fine now (given the configuration filename via the command line); it can load itself numerous times (until there is no more memory left to load the image again) as well as other image types without any problems now. I plan to start doing further testing on real hardware with various booting scenarios now, but so far, everything looks good.

18 July

Since menu.c32 is working well now, here is a sample SYSLINUX menu I am using to test (http://10.0.0.11 is a web server):

default menu.c32
prompt 0
menu title gPXE COMBOOT menu test

timeout 600

label tomsrtbt
  menu label tomsrtbt
  menu default
  kernel http://10.0.0.11/~daniel/gpxe/gtest/bz2bzImage
  append initrd=http://10.0.0.11/~daniel/gpxe/gtest/initrd.bz2 root=100

label gtest
  menu label tomsrtbt via gtest.gpxe
  kernel http://10.0.0.11/~daniel/gpxe/gtest.gpxe

label tube
  menu label tube
  kernel http://10.0.0.11/~daniel/gpxe/TUBE.COM
  • Had a bit of fun playing with xl0's newly-ported Lua COM32 module ( SYSLINUX mailing list thread ); it worked fine without any modifications (although I haven't tested much). You can see my obvious incompetence at Lua :-) (the function is an example from Programming in Lua):

QR Code
QR Code soc:2008:dverkamp:journal:week8 (generated for current page)