SUMMARY - Re: Jumpstart x86 - not accepting -B insall_media=<NFS MOUNT>



SUMMARY

Servers using the Marvell Yukon series of on-board NIC's present
problems in a fully automated jumpstart environment. These issues stem
from drivers not being included in the Solaris install media. Whether
that is Marvell's or Sun's fault is not the topic of this discussion.

The solution to integrating such servers into a x86 Solaris 10 PXE
Jumpstart environment is to modify the miniroot that is used during the
install process. The miniroot (x86.miniroot by default) can be
modified using several methods. I will discuss using the
/boot/solaris/bin/root_archive tool that is part of the SUNWcakr
package.

First determine where your x86.miniroot file lives. This is dependent
on how you setup your jumpstart server. If you used the
setup_install_server script then it is relative to the path you
specified as the argument to that script. For example I used:

../setup_install_server /export/home/jumpstart/x86/10_u2

So my x86.miniroot lives in /export/home/jumpstart/x86/10_u2/boot.
Locate this directory on your jumpstart server and backup your
miniroot. Then take a copy of the miniroot to another location to edit
it. I used /var/miniroot.

cd /export/home/jumpstart/x86/10_u2/boot
cp -Rp x86.miniroot x86.miniroot.orig
mkdir /var/miniroot
cp x86.miniroot /var/miniroot
cd /var/miniroot

From this location you can unpack the miniroot

/boot/solaris/bin/root_archive unpack ./x86.miniroot ./unpacked

The directory unpacked contains the decompressed Solaris image. This
is where you will be adding drivers, scripts, etc. for inclusion into
your customized miniroot.

Next you need to obtain the drivers from Marvell. Once you have them
and unpacked them you should see a directory/package name YUKONXsol.
To add this package to the miniroot use good old pkgadd:

# ls
YUKONXsol yukonx.htm yukonx.txt

# pkgadd -d . -R /var/miniroot/unpacked YUKONXsol

See the yukonx.txt file for more information on specific installation
instructions. The -R option to pkgadd tells it to look at a different
path for root other than the running system's default.

This may solve your problems and you can continue from here by packing
the miniroot back up and using it:

cd /var/miniroot
rm x86.miniroot (optional)
/boot/solaris/bin/root_archive pack ./x86.miniroot ./unpacked
cp x86.miniroot /export/home/jumpstart/x86/10_u2/boot

However you may still get the "No driver, or driver mapping is
available for the device used to boot" error. If you do get this error
and get dropped to a shell run /sbin/netstrategy to find out if it can
determine which device it should be using.

# /sbin/netstrategy
ufs yukonx0 dhcp

If you get "ufs dhcp" then it can not determine which interface it
should be using. Apply the following script to your miniroot:

cat /var/miniroot/unpacked/sbin/netstrategy
#!/bin/sh
echo ufs yukonx0 dhcp

This is a bit un-orthodox but it gets the trick done. Make sure you
move, remove, etc. the existing netstrategy file before adding this
script and that you make the script executable (755).

Pack the miniroot, copy it, and try your install client again. If you
system then enters the Solaris Jumpstart process but will not configure
the hostname, IP, netmask, and/or default route via DHCP and your get
an error stating something like "Unable to contact a DHCP server on
yukonx0" then you need an additional script to assist in the DHCP
process:

cat /var/miniroot/unpacked/etc/dhcp/eventhook
#!/bin/sh
#
# Eventhook workaround for non-support of 'dhcp drop' on Marvell Yukon
# derived adapters.
#
# Install in the miniroot as /etc/dhcp/eventhook, mode 755, owner root
#

intf="$1"
event="$2"
echo Interface "$intf" being DHCP "$event"ed. >> /dev/msglog &
if [ "$event" != DROP ]
then
exit 0
fi

# It's the drop; is it one of the ill-behaved interfaces?
# (Marvell Yukon, SysKonnect, 3COM 3C940/3C2000)
case "$intf" in
yukon*|skge*|tcge*)
/sbin/ifconfig "$intf" unplumb
/sbin/ifconfig "$intf" plumb
;;
esac
exit 0

Again ensure that you have made the file executable (755), pack/copy
the miniroot, and restart the Jumpstart client. With properly
configured sysidcfg and rules.ok files you should be well on your way
to a fully automated Solaris 10 x86 PXE Jumpstart install.

This would not be possible without the help of Casper ***. Many kudos,
Duke Dollars, thanks, etc. go out to Casper. Without his knowledge,
and my stubbornness, this problem would still be unsolved.

RobH wrote:
I am trying to get a Jumpstart environment built for x86/64. My first
obsticle was that the x86.miniroot image did not contain drivers for
the Marvell Yukon chipset used in my hardware. Using the instructions
outlined on
http://www.sun.com/bigadmin/features/articles/device_driver_install.html
I was able to modify the miniroot to include the YUKONXsol package
provided by Marvell. (pkgadd -R <path to unpacked>...)

Now it appears that the install_media directive passed in my menu.lst
is not being accepted. I can occasionally see a "ERROR: no
installation media specified" message before it scrolls away to fast.
I did not see anything on the error when searching Google, BigAdmin,
docs.sun.com, etc. The menu.lst looks like this:

# cat menu.lst.0100A0D1E2D1D8
timeout=15
title Solaris
kernel /solaris/10_u2/multiboot kernel/unix -B \
install_media=10.10.10.27:/usr/local/Solaris/10_u2
module /solaris/10_u2/x86.miniroot

(no \ in the actual version, cleaned for this interface)

I have tried several variants based on different documentation/websites
out there with no change. Is this likely to be an issue with the
Marvell drivers not being loaded in time for the nfs-client to access
the remote server? The install trys the default of cdrom and fail
droping me to a shell. From this shell I can ping the nfs server and
other machines on the subnet. I can not however mount the nfs export
from this shell. I know the NFS export is working beacuse other
servers can in fact mount it. If I change the menu.lst to something
like this:

# cat menu.lst.0100A0D1E2D1D8.bak
timeout=15
title Solaris
kernel /solaris/10_u2/multiboot kernel/unix -v -m debug install \
nfs://10.10.10.27/usr/local/Solaris/10_u2/config.tar -B \
install_media=10.10.10.27:/usr/local/Solaris/10_u2
module /solaris/10_u2/x86.miniroot

(again \'s added for this interface)

I see several errors when it trys to access the config.tar file stating
"unable to unpack..." but ngrep/tcpdump/etc does not show it even
attempting to contact the NFS server. Unfortunately these machines
(Penguin Bladerunner Blades) do not have CD/DVD drives or I would have
just installed them via DVD at this point. This PXE/Intel nonsense is
a real PITA compaired to the Openboot/SPARC jumpstart process that I
know and love.

Questions:

How can I ensure that the yukonx driver is loaded and interface
configured before it attempts to start the nfs-client and/or the
installation media verification?
Has anyone been able to PXE jumpstart a machine using these yukonx
chips/drivers? Any hint/tips I missed?
When specifying a config.tar using the second menu.lst example, will
that actually work? The debug output complains about trying to find
jumpstart.tar (yes I made an identical jumpstart.tar to test =)

.