Setting up the mop server, Diskless NetBSD HOW-TO

DEC's proprietary MOP (Maintenance Operations Protocol) was used to handle
various networking tasks. MOP is included the bootroms of many
VAX workstations and can be used to load a kernel from a diskless server.
Since MOP is not TCP/IP, it cannot be passed through a router (thus the
stipulation that your client and the server(s) must be on the same
subnet). It also means that your server must have device drivers that are
able to send unspecified data to the ethernet.

First, you need to get a copy of the bootloader.
This can be found in the NetBSD distribution as:
installation/netboot/boot

All of the mop implementations assume that the bootloader to send is
located in the /tftpboot/mop/ directory.

NetBSD and OpenBSD ship with the mop server on all supported platforms.

# mopd -a -d

This will start mopd in debugging mode. When the mopd
server gets a request, it will print diagnostic information to the
terminal it was launched from.

If your mopd is working properly, your client will print
something like:

>> NetBSD/vax boot [980110 22:29] <<
: /netbsd

You might take this opportunity to link the MOPBOOT.SYS file to
something that the vax client will find without prompting:

# cd /tftpboot/mop
# ln -s MOPBOOT.SYS cccccccccccc.SYS

Where cccccccccccc is the hex ethernet address of your vax
client. Make sure that SYS is capitalized and that any hex
digits in the ethernet address are lower case. If you don't do this, then
the vax client will not find the correct file.

If you are running FreeBSD 2.2 or later,
then you will need to edit one of the source files before compiling it.
Edit mopd-2.5.3/common/put.c and add the following three lines to
the #includes section at the start of the file:

#ifdef __FreeBSD__
#include <osreldate.h>
#endif

There are also two places within that file where the symbol
__FreeBSD__ is checked. Replace all occurrences of:

#if !defined(__FreeBSD__)

to

#if !defined(__FreeBSD__) || __FreeBSD_version >= 220000

# cd mopd-2.5.3/mopd/# make

Install the binary:# cp mopd /usr/local/sbin/

# /usr/local/sbin/mopd -a -d

This will start mopd in debugging mode. When the mopd
server gets a request, it will print diagnostic information to the
terminal it was launched from.

If your mopd is working properly, your client will print
something like:

>> NetBSD/vax boot [980110 22:29] <<
: /netbsd

You might take this opportunity to link the MOPBOOT.SYS file to
something that the vax client will find without prompting:

# cd /tftpboot/mop
# ln -s MOPBOOT.SYS cccccccccccc.SYS

Where cccccccccccc is the hex ethernet address of your vax
client. Make sure that SYS is capitalized and that any hex
digits in the ethernet address are lower case. If you don't do this, then
the vax client will not find the correct file.

You may need to compile MULTICAST into your kernel to allow for
setting your ethernet to promiscuous mode (required for mop to operate
properly). You may alternatively use ifconfig with the allmulti
flag to enable promiscuous mode (e.g. ifconfig eth0
allmulti).

This will start mopd in debugging mode. When the mopd
server gets a request, it will print diagnostic information to the
terminal it was launched from.

If your mopd is working properly, your client will print
something like:

>> NetBSD/vax boot [980110 22:29] <<
: /netbsd

You might take this opportunity to link the MOPBOOT.SYS file to
something that the vax client will find without prompting:

# cd /tftpboot/mop
# ln -s MOPBOOT.SYS cccccccccccc.SYS

Where cccccccccccc is the hex ethernet address of your vax
client. Make sure that SYS is capitalized and that any hex
digits in the ethernet address are lower case. If you don't do this, then
the vax client will not find the correct file.