Contributed by &a.martin;.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.
Supported Ethernet cards include: 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/Solaris 2.3. (you may need to get
bootp)Set up a bootp server to provide the client with
IP, gateway, netmask.
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 - print/set client's IP address
server - print/set bootp/tftp server address
netmask - print/set netmask
hostname - print/set hostname
kernel - print/set kernel name
rootfs - print/set root filesystem
swapfs - print/set swap filesystem
swapsize - set diskless swapsize in Kbytes
diskboot - boot from disk
autoboot - continue boot process
trans - turn transceiver on|off
flags [bcdhsv] - set boot flags
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 on FreeBSD might
look like:
/rootfs/myclient -maproot=0:0 myclient.mydomain
/swapfs -maproot=0:0 myclient.mydomain
And on 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 dd. If your swapfs command has the
arguments /swapfs and the size 20000 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:
# dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000
Also, the client's swap space might contain sensitive
information once swapping starts, so make sure to
restrict read and write access to this file to prevent
unauthorized access:
# chmod 0600 /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 do not 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 &a.core; 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.