The information on this page is quite out of date. It is only provided because some information in it may be useful in performing these operations on more current situations.
This document outlines the procedure to be followed in booting a Sun over the network with a Linux based boot server. It is inteneded to show how to do a Glue network install on a Sun box without an existing Sun box on the local net, using a Linux box instead.
This has been tested in practice using a Redhat Linux 6.2 and 7.1 machine as the boot server. No guarantees on anything, however. Only tried with Solaris 2.7 on an 220R box. The procedure isn't terribly hard, but is not really for the faint-hearted either.
-s
option, so I think would have
needed to chroot before starting the server in order to use the standard tftpd
coming with RH6. I opted to download and install the yale-tftpd package,
which allowed for a default directory.
/etc/inetd.conf
tftp dgram udp wait root /usr/sbin/tftpd /etc/tftpd.conf
/etc/tftpd.conf
should
contain something like
defaultDirectory /tftpboot
rootDirectory /tftpboot
accessList 1 permit 129.2.40.0 0.0.3.255
accessList 1 deny 0.0.0.0 255.255.255.255
defaultAccessList 1
129.2.40.0 0.0.3.255
with your network
address and the complement of your netmask. The above file requires anything
to be tftp'd to be in /tftpboot, and will default to that directory. Read
access is allowed to your network, and denied everyone else.
For 7.1, the issues are:
-s
option that will
allow for a default directory. It uses xinetd, and assuming is setup to
use the /etc/xinetd.d
directory, you should make sure you have
a /etc/xinetd.d/tftp
file containing:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
}
Most likely, all that needs be done is change disable pararmeter from yes
to no.
USR1
signal to xinetd to re-read config.
-m state --state RELATED,ESTABLISHED -j ACCEPT
somewhere, you need to add a rule like --source 129.2.40.0/255.255.252.0 --protocol udp --destination-port tftp -j ACCEPT
replacing the network and netmask with your own.
You will also need to create /tftpboot
if not there already,
and copy a bootloader from Glue into /tftpboot and rename according to the
IP address of machine to netboot. E.g.
ftp ftp.glue.umd.edu
replacing
get /:/system/common/tftpboot/inetboot.7.sun4u /tftpboot/inetboot.7.sun4u
bye
cp /tftpboot/inetboot.7.sun4u /tftpboot/81022A01
81022A01
with the IP address (converted to hex) of the
machine to net boot.
/etc/ethers
file, e.g.
08:00:20:ed:ca:7d benfranklin.physics.umd.edu
and run /usr/sbin/rarpd -e -a
.
/etc/bootparams
file, e.g.
benfranklin.physics.umd.edu root=nicholas.umd.edu:/export/software/upgrade/57 \
type=:manual domain=physics.umd.edu ns=drdude:none (255.255.252.0)
The ns flag is probably not used, trying to set proper netmask, however.
Not sure if domain is used. Then run bootparamd, e.g./usr/sbin/rpc.bootparamd -r 129.2.40.1
129.2.40.1
with the appropriate gateway.
You will need to have portmap
running for bootparamd and/or
rarpd, e.g. /etc/init.d/portmap start
.
-m state --state RELATED,ESTABLISHED -j ACCEPT
to allow existing connections to continue. You may need to add stuff like: --source 129.2.40.0/255.255.252.0 --protocol udp --destination-port tftp -j ACCEPT
for tftpd, and
--source 129.2.40.0/255.255.252.0 --protocol tcp --destination-port sunrpc -m state --state NEW -j ACCEPT
--source 129.2.40.0/255.255.252.0 --protocol udp --destination-port sunrpc -m state --state NEW -j ACCEPT
for portmap, and
--source 129.2.40.0/255.255.252.0 --protocol tcp --destination-port 876 -m state --state NEW -j ACCEPT
--source 129.2.40.0/255.255.252.0 --protocol udp --destination-port 876 -m state --state NEW -j ACCEPT
for bootparamd (not sure if need both udp and tcp, and think that the actual
port number may vary, so may need to either run in debug mode (-d/-s) and read
log for port number, or use lsof -i to find what port listening on).
bootparams
request,
but this time using the default 255.255.0.0 netmask, not our subnets correct
255.255.252.0 netmask. Because of this, the linux box did not see the
bootparams request broadcast, and it timed out. I have hacked around this by
either:
You should now be able to type boot net
on the Sun box'
openboot prompt and the GLue install stuff should eventually come up.
(I have had problems with that, so sometimes need to manually run it from
SU prompt, /sbin/glueinstall manual).
A network sniffer on at least the Linux box can be helpful in tracking down problems.