Doug Scoular
2007-May-01 06:22 UTC
[syslinux] Using pxelinux mboot.c32 to multiboot Solaris
Hi All,
Now that we have multiboot capable pxelinux, thanks to mboot.c32,
I decided to try and remove pxegrub from my x86 jumpstart infrastructure
since, in theory, pxelinux can now do it all.
The problem I'm having is I'm not very sure I'm following Tim's
documentation
correctly... I'm not 100% what comes after the --- and whether the Sun
kernel
needs it's arguments specified their as well or whether it just needs the
contents of the initial RAM disk aka the miniroot.
Simply put, I'm trying to convert the following pxegrub menu.lst entry to a
pxelinux.cfg mboot.c32 entry. Here's the pxegrub menu.lst entry:
title PXEGrub x86 Jumpstart
kernel /solaris/multiboot.sol10 kernel/unix -v -m verbose install
http://64.104.195.120/jumptest/test1.tar -B
install_media=172.16.254.129:/export/install
module /solaris/x86.miniroot.sol10
And here's my attempt to convert the above to pxelinux multiboot:
LABEL JUMPSTART
MENU LABEL ^Solaris Jumpstart
kernel mboot.c32
APPEND /solaris/multiboot.sol10 kernel/unix -v -m verbose
install http://64.104.195.120/jumptest/test1.tar -B
install_media=172.16.254.129:/export/install ---
/solaris/x86.miniroot.sol10
While both manage to boot into Solaris miniroot only pxegrub configures it's
network interface via DHCP and starts to jumpstart. The pxelinux multiboot fails
to configure it's network interface and drops to a shell.
In the Solaris miniroot, the script /sbin/install-discovery calls
/sbin/netstrategy to
determine whether it needs to configure it's interfaces. This seems to be
the
differentiator between the two behaviours, on pxegrub I get:
localhost# /sbin/netstrategy
ufs pcn0 dhcp
On pxelinux multiboot I get:
# /sbin/netstrategy
ufs none none
When I looked at the source for netstrategy:
http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/cmd-inet/sbin/netstrategy/netstrategy.c
It appears to call sysinfo(SI_DHCP_CACHE, &dummy, sizeof (dummy))) to
determine whether the kernel used DHCP.
My question is, why is there a difference between pxegrub booting Solaris
and mboot.c32 ?
Any help hugely appreciated!
P.S. Apologies for some of the longer lines being wrapped by gmail.
Cheers,
Doug
--
The big print giveth and the small print taketh away.
At 16:22 +1000 on 01 May (1178036562), Doug Scoular wrote:> title PXEGrub x86 Jumpstart > kernel /solaris/multiboot.sol10 kernel/unix -v -m verbose install > http://64.104.195.120/jumptest/test1.tar -B > install_media=172.16.254.129:/export/install > module /solaris/x86.miniroot.sol10 > > And here's my attempt to convert the above to pxelinux multiboot: > > LABEL JUMPSTART > MENU LABEL ^Solaris Jumpstart > kernel mboot.c32 > APPEND /solaris/multiboot.sol10 kernel/unix -v -m verbose > install http://64.104.195.120/jumptest/test1.tar -B > install_media=172.16.254.129:/export/install --- > /solaris/x86.miniroot.sol10That looks exactly right.> It appears to call sysinfo(SI_DHCP_CACHE, &dummy, sizeof (dummy))) to > determine whether the kernel used DHCP. > > My question is, why is there a difference between pxegrub booting Solaris > and mboot.c32 ?Hmmm. Looks like something much earlier has failed to send a DHCP request. I wonder if the kernel command-line is being passed differently by mboot.c32 and PXEGrub. Can you attach a serial line or similar and compare the boot messages printed in each case? I'm not terribly familiar with opensolaris. Tim. -- Tim Deegan <tjd at phlegethon.org> Your own people will kill you to prevent this 'Forbidden Truth Cube' from ever being known. [ Gene Ray, Cubic, www.timecube.com ]