Custom JumpStart question/problem

I am attempting to set up a stand-alone (no name service) x-86 boot server under Solaris-8 02/02. This server is to be used to install x-86 machines which are used in our product. I would like to have all the necessary configuration information defined on the server as opposed to putting things like sysidcfg, rules.ok and other scripts on a floppy or CD. I am mostly successful but have run into one problem which I haven't been able to solve.

I have the /etc/bootparams on the server pointing to the sysidcfg file which is found and correctly parsed but it cannot find the rules.ok and the scripts that it points to on the server and thereby says I have to do an interactive installation. I have to boot from either a floppy or CD because the disks are virgin and there is no other way to boot without them. If I put the sysidcfg, rules.ok and scripts it points to on a floppy everything works beautifully. Some of the supporting evidence is below:

Here are the messages in the install window on the client:

The system is coming up. Please wait.

Starting remote procedure call (RPC) services: sysidns done.

System identification is completed.

Starting Solaris installation program...

Searching for JumpStart directory...

not found

Warning: Could not find matching rule in rules.ok

Press the return key for an interactive Solaris install program...

Doing a df -k on the client machine after the failure produces the following, note that we have successfully mounted filesystems including the JumpStart/Sysidcfg directory on the boot server.

Filesystemkbytesusedavail capacity Mounted on

diskdup:/export/diskdup/disk1/Solaris-8/Solaris_8/Tools/Boot 19724336 6274558 1325253533%/

swap361304332 3609721%/tmp

proc0000%/proc

mnttab 0000%/etc/mnttab

/tmp/devices 361304332 3609721%/devices

/tmp/dev 361304332 3609721%/dev

172.16.202.231:/export/diskdup/disk1/Solaris-8 19724336 6274558 1325253533%/cdrom

fd 0000%/dev/fd

172.16.202.231:/export/diskdup/disk1/Solaris-8/JumpStart/Sysidcfg 19724336 6274558 1325253533%/tmp/sysid_config.457

Here is the entry from the /etc/bootparams file. I've separated the

individual fields on separate lines for readability.

v191008<<- Client's name mapped in /etc/inet/hosts file

root=diskdup:/export/diskdup/disk1/Solaris-8/Solaris_8/Tools/Boot

install=diskdup:/export/diskdup/disk1/Solaris-8

boottype=:in

sysid_config=diskdup:/export/diskdup/disk1/Solaris-8/JumpStart/Sysidcfg

install_config=diskdup:/export/diskdup/disk1/Solaris-8/JumpStart

rootopts=:rsize=8192

ns=diskdup:none

The following is the sysidcfg file that is on the server and is found and parsed properly by the install process.

system_locale=en_US

name_service=NONE

timezone=EST5EDT

timeserver=localhost

root_password="xxxxxxxxxxxxx"

security_policy=NONE

network_interface=iprb0

{hostname=v191008

ip_address=172.16.202.245

netmask=255.255.255.0

protocol_ipv6=no}

The share command on the server shows:

-/export/diskdup/disk1 ro,anon=0 ""

Other notes:

I have installed patch #109319-36 to the boot root as it seems to deal with some possible installation issues but it made no difference.

The only networking involved is a crossover cable between the server and the client. The server is not on our internal network.

I am installing Solaris-8 because that is what we are licensed to distribute. We will be switching to Solaris-10 once we get proper licenses as an appliance.

My own sleuthings seems to lead me to the scriptprofind. The script has a functionbootparams() that invokes thebpgetfile tool which is failing. Runningtruss onbpgetfile didn't point to anything obvious. Perhaps I'm looking in the wrong place.

Thanks for any help you can offer.

Charlie Jack

Principal Systems Engineer

Latran Technologies

(781)-482-1215

[4139 byte] By [CWJack] at [2007-11-25 23:38:56]
# 1

It appears that the executable bpgetfile is what's failing. Early in the install process it finds the boot server and mounts the root and sysidcfg directories from the server but later when it is invoked from the script /usr/sbin/install.d/profind it fails. The /etc/hosts file on the client has an entry for the server with the correct I/P address.

I modified profind by adding an argument to bpgetfile with the server's name and everything worked. There has to be a better way than modifying an install script with hard-coded data. Can this kind of install be made to work without using a name service as I am trying to do?

CWJack at 2007-7-5 18:22:41 > top of Java-index,General,Talk to the Sysop...
# 2
I'd either 'snoop' from the server or run rpc.bootparamd in debug mode and see if I could see the bpgetfile request from the client and the appropriate reply. The bootparams file seems valid to me...-- Darren
Darren_Dunham at 2007-7-5 18:22:41 > top of Java-index,General,Talk to the Sysop...
# 3

It was a mismatch of netmask(s).

As it turns out the boot server had a netmask set up for a class B network as it had been isolated from our class B network and made stand-alone without changing any network parameters. The sysidcfg file defines the client with a netmask for a class C network. The client booted OK and queried the bootparams OK until the sysidcfg file was processed and redefined the netmask as 255.255.255.0. Changing this to 255.255.0.0 made everything work. bpgetfile was broadcasting to an audience that wasn't listening!

Thank you Darren for the help. I didn't know about the -d switch for rpc.bootparamd. Actually it was the running of snoop on the client side that revealed the problem.

Charlie Jack

CWJack at 2007-7-5 18:22:41 > top of Java-index,General,Talk to the Sysop...
# 4
Good deal. I'm used to debugging JS issues at a point when it's not possible for me to use the client for much of anything! :-)-- Darren
Darren_Dunham at 2007-7-5 18:22:41 > top of Java-index,General,Talk to the Sysop...