Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Jul 1996 08:52:08 +0100 (BST)
From:      Mark Powell <mark@ucsalf.ac.uk>
To:        obrien@cs.ucdavis.edu
Cc:        freebsd-chat@freebsd.org, freebsd-policy@freebsd.org, freebsd-hackers@freebsd.org
Subject:   RARP and bootparamd per NetBSD [was Re: Root filesystem on NFS, Linux style ???]
Message-ID:  <Pine.BSI.3.94.960710084331.20886A-100000@plato.ucsalf.ac.uk>
In-Reply-To: <199607091616.JAA08760@kongur>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 9 Jul 1996 obrien@cs.ucdavis.edu wrote:
> > >>our DOS menu system. We currently do it with Linux. However, I'd prefer to 
> > >>do it with FreeBSD, for obvious reasons. NETNOOT.COM does not work
> > >>if there is already a network driver loaded, as there is in our case.
> > >>Is there anything afoot allow the kernel to be configured with some of
> > >>the netboot.com functionality into the kernel?
> > >
> > >I experienced that QEMM screws up when running NETBOOT, so I simply
> > >created a boot menu under MS-DOS 6.22 and let people choose it at
> > >boot time - no network driver conflicts, no memory manager conflicts.
> > 
> > Yeah, but I currently do this with Linux. The user's can simply select an
> > option from our PC LAN menu system. FreeBSD can't do this, AFAIK. 
> 
> If the network drivers are Novell, when the user wants an X-terminal, you
> could unload them (with the /U switch) and then run netboot.com.

They aren't Netware drivers. From looking at NetBSD-1.1 I see that it has
similar functionality to Sun systems. A diskless system can obtain it's
own IP address using RARP and then use RPC to talk to a bootparamd for
further info. 
  Comparing NetBSD and FreeBSD source we find that NetBSD has an extra
file under the sys tree, nfs/nfs_boot.c. The code in this file performs
the RARP request and also the RPC chat with the bootparamd. The code is
called from the code in file nfs/nfs_vfsops.c.
Looking in FreeBSD's nfs/nfs_vfsops.c at the function nfs_mountroot() the
comments are:

/*
 * Mount a remote root fs via. nfs. This depends on the info in the
 * nfs_diskless structure that has been filled in properly by some primary
 * bootstrap.
 * It goes something like this:
 * - do enough of "ifconfig" by calling ifioctl() so that the system
 *   can talk to the server
 * - If nfs_diskless.mygateway is filled in, use that address as
 *   a default gateway.
 * - hand craft the swap nfs vnode hanging off a fake mount point
 *      if swdevt[0].sw_dev == NODEV
 * - build the rootfs mount point and call mountnfs() to do the rest.
 */

However, NetBSD's comment for the same are [nfs_boot_init() is in the
nfs_boot.c file]: 

/*
 * Mount a remote root fs via. NFS.  It goes like this:
 * - Call nfs_boot_init() to fill in the nfs_diskless struct
 *   (using RARP, bootparam RPC, mountd RPC)
 * - hand craft the swap nfs vnode hanging off a fake mount point
 *      if swdevt[0].sw_dev == NODEV
 * - build the rootfs mount point and call mountnfs() to do the rest.
 */

Thus it's just the ability to fill-out it's own nfs_diskless struct that
FreeBSD lacks.
  Anyone know who to chat with regarding getting this put in the kernel?

> Maybe something like this would work?
> 
> -- David    (obrien@cs.ucdavis.edu)

Mark Powell - Senior Network Technician - Room: C806
Computer Services Unit, University College Salford, Salford, Manchester, UK.
Tel:	+44 161 745 3376	Fax:	+44 161 736 3596
Email:	mark@ucsalf.ac.uk	finger mark@ucsalf.ac.uk (for PGP key)
<A HREF="http://www.ucsalf.ac.uk/~mark/">Home Page</A>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSI.3.94.960710084331.20886A-100000>