Mar 21, 2005 17:16
A response to a SunManagers list query:
Chris Pinnock wrote:
> Has anyone here ever tried setting up a non-Solaris machine (e.g. NetBSD,
> FreeBSD, Linux, ...) as a boot/installation/Jumpstart server for Solaris?
Here's the skinny on using NetBSD as a Jumpstart boot/installation server. This should work fine for any other BSD. I've only tested it with RARP and not DHCP.
You need to have, at the least, rarpd, bootparams, and tftpd running. tftpd is enable in inetd.conf
For tftpd, the default directory is /tftpboot. For each machine, one needs a boot file. The file needed is located in /usr/platform/$ARCH/lib/fs/nfs/inetboot on a Solaris machine.
It has to be named in a particular manner: the hex equivalent to the hosts IP address. So, given a machine named 172.16.0.7, the file should be name AC100007. For SUN4U machines (pretty much every UltraSPARC), this is all for naming. For SUN4C, SUN4M, SUN4D, you need to append the architechture to the name of the file. So, a SPARCstation 10 with an IP address of 172.16.0.7 would need a file named AC100007.SUN4M
The an exaple bootparams file is below. This is lifted from a bootparams created by one of the Jumpstart scripts. The only exception is that on Solaris there is a parameter setting the rsize for the NFS mount (to 8k, I think, but am not sure). However, setting the rsize seems to break Jumpstart on NetBSD 1.6 (haven't tried 2.0).
hostname root=boot_server:/export/iso/solaris9/12_03/boot \
install=boot_server:/export/iso/solaris9/12_03/cd \
boottype=:in sysid_config=boot_server:/export2/conf/legolas \
install_config=boot_server:/export2/conf/js
The root value should point to a directory containing a bootable Solaris directory. This should be found on the s1 partition of the second Solaris CD (I don't know what it would be labeled, but the first disk with packages on it, NOT the CDE-based boot CD). I know this for a fact with Solaris 9, not sure about Solaris 8 but I think it is the same. Be sure to preserve numeric UIDs when copying the files.
The install value should point to a directory containing copies of both packages CD. If you've got a DVD, just copy over the Solaris_9/Product, .cdtoc, .volume.inf, and .volume.inf.2.
If you have the CDs, copy Solaris_9/Product from each package CD. From the first CD, copy also .cdtoc and .volume.inf. From the second CD, copy .volume.inf to .volume.inf.2.
So, your tree should look like
/.cdtoc
/.volume.inf
/.volume.inf2
/Solaris_9/Product
The sysid_config value should point to your sysidcfgs.
The install_config directory should point to where your rules and rules.ok files are.
A good thing to know is that one can easily modify a rules.ok file without running it through the check script. Run "cksum -o" on your the rules files. Insert the output into the rules.ok file where the old cksum value was. The last line of the rules.ok is static other than the cksum field.
One last thing. In order to have a uninterrupted install, one needs to set a value in the /etc/sysctrl.conf file:
net.inet.icmp.maskrepl=1
As it was explained to me, Jumpstart clients request the networks netmask from the boot server via an ICMP request. NetBSD's default behavior is to not respond which cause Jumpstart to hang indefinitly until one pings the Jumpstart client from the boot server. This kernel parameter reverses that behavior.
I think that's most of the specific stuff. Hopefully this makes sense, and I haven't omitted anything. Please double check me on this, as this is entirely from memory.