Hello,
I'm using iPXE to chain to menu.c32, here is the boot script:
#!ipxe
dhcp
chain http://my-site/menu.c32 http://my-site/boot.php
After ipxe promote "http://my-site/menu.c32...... ok", the machine
hangs.
Then I try to figure out where it does stop. First I put a printf() statement in
In syslinux/com32/menu/menumain.c:main:, right after start_console(), then
boot the machine, but the statement is not reached. So I advanced
start_console()
to before parse_config(), and after a couple of trace, I reached
syslinux/com32/lib/sys/open.c:open: I made such changes:
printf("file: %s line: %d fd: %d fp: %p\n", __FILE__, __LINE__,
fd, fp);
printf("open: %p, open_file: %p\n", open,
__com32.cs_pm->open_file);
handle = __com32.cs_pm->open_file(pathname, &fp->i.fd);
printf("file: %s line: %d\n", __FILE__, __LINE__);
It turns out that, the first two printf() statement is executed, but
the third one
is not. The screen output is:
file sys/open.c line: 65 fd: 3 fp: 0x0011ca90
open: 0x0010c124, open_file: 0xf000ff53
I think the address of open_file maybe wrong, but I can't find where it is
assigned the value. Should it be a bug of syslinux/menu.c32 or iPXE?
Or did do something wrong?
I'm using the HEAD version on the syslinux git tree, my os is Debian 64bit.
iPXE is also the HEAD version on the ipxe git tree.
The test environment (ipxe running on) is kvm.
Can anyone give me any hint?
--
Best Regards,
Cheng