Subject: Re: NFS diskless boot improvement
To: Gordon W. Ross <gwr@mc.com>
From: Adam Glass <glass@sun-lamp.cs.berkeley.edu>
List: tech-kern
Date: 03/14/1994 10:59:55
> 
> So, where should the bootparamd and bootp client code go?
> 
> Gordon W. Ross  		Mercury Computer Systems
> gwr@mc.com      		199 Riverneck Road
> 508-256-1300			Chelmsford, MA 01824-2820

the net-2/4.4 diskless implementation works as follows:
	bootstrap program does whatever is necessary to fetch kernel,
		fill in nfsdiskless structure w/server addresses, nfs file
		handles, client ip address, etc.
	nfs_mountroot() uses the previously initialized addresses
	and file handles to mount root/swap.

my/theo? architecture:
	bootstrap program does whetaver is necessary to fetch kernel.
	nfs_mountroot() called revarp_whoami() to get client address,
		calls bootparam_whoami() and bootparam_getfile() to
		get root (swap) server addr and root (swap) pathname.
		then it calls nfs_getfh() on the root (swap) pathname.
		Then it does the normal nfs_mountroot() activities.
		Actually most of the above stuff is under nfs_boot()
		which is called by nfs_mountroot().

advantages:
	you can strip your kernels :)
	bootstrapping program doesn't have to understand symbol table
	your bootstrap program can do something awful (like tftp)
		if you don't want to implement nfs (see libnetboot)
	source of kernel does not inherently imply root/swap source.
		maybe easier to do dataless.
	boot -a can  do the right thing.

some notes:
	kernel rpc implementation is tiny, and currently pretty
		stupid.  would need re-work if to be used for lock
		manager (ala sun) stuff.
	bootparam adds very little in terms of code/data size over
		just doing the file handle stuff that gordon's orignal
		work did.

your thoughts?

later,
Adam Glass

------------------------------------------------------------------------------