This section provides information on adding any missing pieces your operating system may require in order to get it to properly function as a bootserver environment for your VAX. Of the several operating systems VAX bootserving has been set up on, only Linux and FreeBSD require any noteworthy additions. Both NetBSD and OpenBSD have all the components necessary for netbooting preloaded. If you're planning on using NetBSD or OpenBSD for your bootserver, you may move on to the Bootserver Configuration section of the HOWTO at this time.
Unfortunately your ordinary distribution of Linux is somewhat short on utilities for adequately netbooting NetBSD on DEC VAX hardware. But thanks to the BSD people, all the necessary networking software resources are ready to hijack. In fact, all the needed software pieces have already been modified to run under Linux -- you just have to go out and gather them up.
There are a couple of things which need to be included your Linux kernel in order for netbooting to work properly.
RARP
First you need to make sure you've got RARP support compiled in. If the file /proc/net/rarp doesn't exist then you need to do one of two things: (1) It may be that RARP was compiled as a loadable module for your kernel. If this is the case then you'll need to `insmod' the /lib/modules/(linux version)/ipv4/rarp.o module. (2) If you don't already have RARP compiled into your kernel, you will need to reconfigure and recompile Linux with RARP support added. Since the RARP code is small, I recommend just compiling it directly into the kernel.
Multicast
In addition to RARP, it is also recommended that you compile in the IP multicast code for Linux.
Compiling in IP multicast was how I initially got my network interface to operate in promiscuous mode. There's an easier way to achieve the same effect and that is with the command `ifconfig eth0 allmulti' which according to the ifconfig man page does the following:
[-]allmulti Enable or disable the promiscuous mode of the interface. This means that all incoming frames get sent to the network layer of the system kernel, allowing for networking monitoring.
Running the network interface in promiscuous mode is necessary for the MOP server software which will be discussed later in this guide.
There is some still some speculation (on my part at least) about the necessity of compiling in multicast support. I've found that I don't need it with the Linux driver for my NE2000 clone card. Other network card drivers may behave differently (more speculation on my part). I guess more research and knowledge is required.
Unless you know otherwise, go ahead and compile your Linux kernel with IP multicast support. There's no harm in doing it.
Before you begin, you'll need to grab all the necessary components to turn your Linux system into a lean mean netbooting machine.
The MOP Server
The MOP server that Linux uses is the same MOP server used by the BSDs, only it has some modifications to allow it to run under Linux. The MOP server is used by the VAX client to load the NetBSD/vax bootloader.
The MOP Server software for Linux is available from:
ftp://ftp.stacken.kth.se/pub/OS/NetBSD/mopd/mopd-linux-2.5.3.tar.gz
ftp://ftp.canberra.edu.au/pub/ise/linux-vax/tools/mopd/mopd-linux-2.5.3.tar.gz
Building The MOP Server
The MOP server software is contained in the file
mopd-linux-2.3.5.tar.gz
which you have hopefully grabbed
already.
Extracting the files from this archive will create a
./mopd-linux
directory which in turn contains a
README
, a common code directory, and directories for the
various utilities of the mopd package. At this point we're only concerned
with the mopd directory which contains the source code for the MOP
server. The other directories contain the code for various MOP server
debugging utilities.
Run `make' inside the ./mopd-linux/mopd
directory. This will
build the mopd MOP server daemon.
Installing The MOP Server
I choose to place the MOP server in the /usr/local/sbin
directory on my Linux system. You may place them where ever it makes
the most sense to you, but the examples in the remainder of the HOWTO
will assume that the executables reside in /usr/local/sbin
.
# mkdir -p /usr/local/sbin
# cp ./mopd-linux/mopd/mopd /usr/local/sbin
The bootparamd Server
If your Linux distribution didn't come with a bootparamd or an rpc.bootparamd daemon then you'll need to get one. The RedHat 5.0 Linux distribution comes with a bootparamd server, but my RedHat 4.0 installed system didn't have one. If you're running on a system which does have the daemon, then move on to the Bootserver Configuration section. It's likely that a number of other distributions are missing this server daemon. No problem though, you just need to pick up an old version of NetKit for Linux:
ftp://ftp.uk.linux.org/pub/linux/Networking/base/attic/NetKit-0.09.tar.gz
Building The bootparamd Server
The bootparamd server rpc.bootparamd
is contained in the
NetKit-0.09.tar.gz
file.
Extracting the files from this archive will give you the
./NetKit-0.09
directory which in turn contains a number of
other directories containing network servers and utils. We're only
interested in two of the directories: rpcgen
and
rpc.bootparamd
. The first, rpcgen
, contains the
source for a utility needed for the compilation of the
rpc.bootparamd
server. The second directory,
rpc.bootparamd
, appropriately contains the source for the
bootparamd server.
Run `make' inside of ./NetKit-0.09/rpcgen
and then run `make'
inside of ./NetKit-0.09/rpc.bootparamd
. This will build the
bootparamd server daemon.
Installing The bootparamd Server
Copy the bootparamd server into /usr/local/sbin
, or which
ever location you are using to hold these non standard server daemons.
The remainder of the HOWTO will assume that you've copied them to
/usr/local/sbin
.
# cp ./NetKit-0.09/rpc.bootparamd/bootparamd /usr/local/sbin
You may continue on to Bootserver Configuration
Before you begin, you'll need to get a copy of the mopd MOP server daemon to allow your FreeBSD system to operate as a bootserver.
The MOP Server
The MOP server used is the standard MOP server used by the other BSD derived systems like NetBSD and OpenBSD. Depending on the version of FreeBSD you're running, modifications to the mopd source may be necessary. The MOP server is used by the VAX client to load the NetBSD/vax bootloader.
The MOP Server software is available from:
ftp://ftp.stacken.kth.se/pub/OS/NetBSD/mopd/mopd-2.5.3.tar.gz
Building The MOP Server
The MOP server software is contained in the file
mopd-2.3.5.tar.gz
which you have hopefully grabbed already.
Version 2.5.3 of mopd is configured for use with FreeBSD versions 2.1 and lower. If you are running FreeBSD 2.2 or later then you have to make some minor changes to one of mopd's source files. The next release of mopd will fix this, but for now here are the changes you must make.
The file that must be modified is put.c
. It is in the mopd
distribution's ./mopd-2.5.3/common
directory. Add the
following 3 lines to the #includes section at the start of the file:
#ifdef __FreeBSD__
#include <osreldate.h>
#endif
Next, there are 2 places within the file where the symbol
__FreeBSD__
is checked to see if it is defined:
#if !defined(__FreeBSD__)
Change each of these lines to:
#if !defined(__FreeBSD__) || __FreeBSD_version >= 220000
Make the appropriate changes to the put.c
if you're running a
version of FreeBSD greater than 2.1. Then switch to the mopd daemon's
directory and build the mopd daemon.
# cd ./mopd-2.5.3/mopd
# make
This will rebuild a usable copy of mopd for use with FreeBSD versions 2.2 and later.
Installing The MOP Server
Now that you've built your mopd server daemon, I suggest copying it
into /usr/local/sbin
. You may place the server where ever it
makes the most sense to you, but the examples in the remainder of the
HOWTO will assume that the mopd executable resides in
/usr/local/sbin
.
# mkdir -p /usr/local/sbin
# cp ./mopd-2.5.3/mopd/mopd /usr/local/sbin
You may continue on to Bootserver Configuration