sparc64 loader gets confused when netbooting

Per Kristian Hove Per.Hove at
Wed Sep 24 11:03:58 PDT 2003

When netbooting, the sparc64 loader tries to download the kernel from
the wrong server address. This isn't noticeable unless you have
separate DHCP, TFTP and NFS servers. If your setup is like this:

	DHCP server: IP address d.d.d.d
	TFTP server: IP address t.t.t.t
	NFS server:  IP address n.n.n.n

and the netbooting client has this entry in dhcpd.conf:

	host {
		next-server t.t.t.t;
		filename "loader";
		option root-path "n.n.n.n:/export/install";

this is what happens:

1. boot net:dhcp
   OBP broadcasts for DHCP, gets an answer (from d.d.d.d) containing
   the name of the file to load, and the server to load it
   from (t.t.t.t). So far, so good.

2. OBP loads "loader" via tftp from t.t.t.t (or from d.d.d.d, if the
   DHCP response doesn't contain "next-server"). So far, so good.

3. Loader tries to load kernel/loader.rc/etc. as told by "option
   root-path", by NFS mounting "/export/install" from t.t.t.t.
   (Correct behaviour would be to mount the file system from n.n.n.n).

So the problem is that the 5.1-RELEASE loader tries to load the kernel
via NFS from the "next-server" server, not the one specified in
"option root-path". This is what I see:

   FreeBSD/sparc64 bootstrap loader, Revision 1.0
   (root at, Thu Jun  5 00:18:44 GMT 2003)
   bootpath="/pci at 1f,0/ethernet at c:dhcp"
   boot: ethernet address: xx:xx:xx:xx:xx:xx
   net_open: server addr: t.t.t.t
   net_open: server path: /export/install

while this is what I'm expecting:

   net_open: server addr: n.n.n.n
   net_open: server path: /export/install

PXE-booting an i386 computer used to have the same problem, but that
was fixed in rev. 1.17 of /sys/boot/i386/libi386/pxe.c (PR 21743).

Per Kristian Hove
Dept. of Mathematical Sciences
Norwegian University of Science and Technology

More information about the freebsd-sparc64 mailing list