Setting up a Diskless FreeBSD system
====================================

netboot.com/netboot.rom allow you to boot your FreeBSD machine over the
network and run FreeBSD without having a disk on your client.  Under 2.0
it is now possible to have local swap.  Swapping over NFS is also still
supported.

The list of supported Ethernet cards:

	Western Digital/SMC 8003, 8013, 8216 and compatibles
	NE1000/NE2000 and compatibles (requires recompile)


Setup Instructions
------------------

  - Find a machine that will be your server.  This machine will require
    enough disk space to hold the FreeBSD 2.0 binaries and have bootp, tftp
    and NFS services available.

	tested machines:

		HP9000/8xx running HP-UX 9.04 or later (pre 9.04 doesn't work)
		Sun/Solaries 2.3. (you may need to get bootp)


  - Set up a bootp server to provide the client with IP, gateway, netmask

	sample entry:

                diskless:\
                        :ht=ether:\
                        :ha=0000c01f848a:\
                        :sm=255.255.255.0:\
                        :hn:\
                        :ds=192.1.2.3:\
                        :ip=192.1.2.4:\
			:gw=192.1.2.5:\
                        :vm=rfc1048:

  - Set up a TFTP server (on same machine as bootp server) to provide
    booting information to client.  The name of this file is cfg.X.X.X.X
    (or /tftpboot/cfg.X.X.X.X, it will try both) where X.X.X.X is the
    IP address of the client.  The contents of this file can be any valid
    netboot commands.  Under 2.0, netboot has the following commands:

	help			- print help list
	ip <X.X.X.X>		- print/set client's IP address
	server <X.X.X.X>	- print/set bootp/tftp server address
	netmask <X.X.X.X>	- print/set netmask
	hostname <name>		- print/set hostname
	kernel <name>		- print/set kernel name
	rootfs <ip:/fs>		- print/set rootfilesystem
	swapfs <ip:/fs>		- print/set swapfilesystem
	swapsize <size>		- set diskless swapsize in Kbytes
	diskboot		- boot from disk
	autoboot		- continue boot process

    A typical completely diskless cfg file might contain:

	rootfs 192.1.2.3:/rootfs/myclient
	swapfs 192.1.2.3:/swapfs
	swapsize 20000
	hostname myclient.mydomain

    A cfg file for a machine with local swap might contain:

	rootfs 192.1.2.3:/rootfs/myclient
	hostname myclient.mydomain

  - Ensure that your NFS server has exported the root (and swap if applicable)
    filesystems to your client, and that the client has root access to these
    filesystems

    A typical /etc/exports file might look like:

	(FreeBSD)

	/rootfs/myclient -maproot=0:0 myclient.mydomain
	/swapfs -maproot=0:0 myclient.mydomain


	(HP-UX)

	/rootfs/myclient -root=myclient.mydomain
	/swapfs -root=myclient.mydomain


  - If you are swapping over NFS (completely diskless configuration) create a
    swap file for your client using touch.  If your 'swapfs' command
    has the argument /swapfs as in the example above, the swapfile for myclient
    will be called /swapfs/swap.X.X.X.X where X.X.X.X is the client's IP addr.

	eg:   # touch /swapfs/swap.192.1.2.4

  - Unpack the root filesystem in the directory the client will use for its
    root filesystem (/rootfs/myclient in the example above).

	*** On HP-UX systems:  The server should be running HP-UX 9.04 or
	    later for HP9000/800 series machines.  Prior versions don't allow
	    the creation of device files over NFS.

	*** When extracting /dev in /rootfs/myclient, beware that some systems
	    (HPUX) will not create device files that FreeBSD is happy with.
	    You may have to go to single user mode on the first bootup
	    (press control-c during the bootup phase), cd /dev  and do a
	    "sh ./MAKEDEV all" from the client to fix this.

  - Run netboot.com on the client or make an EPROM from the netboot.rom file
    

Using Shared / and /usr filesystems
-----------------------------------
At present there isn't an officially sanctioned way of doing this, although
I have been using a shared /usr filesystem and individual / filesystems for
each client.  If anyone has any suggestions on how to do this cleanly, please
let me and/or the core group know.



Compiling netboot for specific setups
-------------------------------------

Netboot can be compiled to support NE1000/2000 cards by changing the
configuration in /sys/i386/boot/netboot/Makefile.  See the comments
at the top of this file.


Martin Renters				martin@innovus.com
