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 ]