Simple NetBSD netboot for VAXen

Hello, reader!

I have been trying to netboot my VAXen with NetBSD for a while but always failed by BOOTP or DHCP.
At last I managed to do this way.

In short:

  1. provide a working boot.mop by MOP daemon
  2. provide address and parameters by DHCP
  3. serve a diskless client filesystem by NFS
  4. boot the VAX and finish client filesystem setup

This work is done for (and because of) my VAX 4000 model 300.
The VAX 4000 has a SHAC DSSI controller which is not supported by NetBSD.
To run something other than OpenVMS on it, I would like to boot NetBSD through the local network.

The network server providing boot files and parameters is running Debian GNU/Linux "Lenny" 5.0.

Now, the setup.

 

Step 1: provide a working boot.mop by MOP daemon

Install MOP daemon on the server.

# apt-get install mopd

Debian packaged mopd only serve files located in /tftpboot/mop
To serve files placed otherwise in the filesystem, you would probably have to recompile the package.

Get a working boot.mop.
A boot.mop that works is located at:
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-archive/NetBSD-1.5.3/vax/installation/netboot/boot.mop
No matter that is for NetBSD 1.5.3, it is simply a bootloader and it works.

Place the boot.mop in /tftpboot/mop, and place a link in the same directory with the MAC address of the client VAX (lowercase numbers and letters only) and .SYS suffix (uppercase).
For example, my VAX has a MAC address of 08:00:2b:29:2a:4b.

# cp /home/gl/boot.bop /tftpboot/mop
# cd /tftpboot/mop
# ln -sf boot.mop 08002b292a4b.SYS

Start the MOP daemon, if not running yet.

# /etc/init.d/mopd start

 

Step 2: provide address and parameters by DHCP

This is simple.
Install dhcp3-server, if not already installed, and provide a stanza for the client VAX in /etc/dhcp3/dhcpd.conf

# apt-get install dhcp3-server

/etc/dhcp3/dhcpd.conf should contain at least:

[...]

subnet 192.168.1.0 netmask 255.255.255.0 {
   [...]
   option domain-name "decadence";
   next-server 192.168.1.90;
   allow bootp;
   allow booting;
   [...]
}

[...]

host ramiel {
   hardware ethernet 08:00:2b:29:2a:4b;
   fixed-address 192.168.1.184;
   option root-path "/home/guestos/gl/ramiel";
}

[...]

In this case, 192.168.1.0 is the base network address, and 192.168.1.90 is the IP address for the server that would serve booting files to the client.
Usually, they are the same server.

Option "root-path" refers to the NFS exported directory for the VAX client filesystem.
I usually place the guest filesystems for netbooted machine or Xen guests in /home/guestos/gl, change it accordingly to your setup.
You have to restart ISC DHCP3 server to reload the configuration changes.

# /etc/init.d/dhcp3-server

 

Step 3: serve a diskless client filesystem by NFS

Now make space and setup the client filesystem.
You need nfs-kernel-server or nfs-user-server.
I use the first one.

# apt-get install nfs-kernel-server

I mount the NetBSD/VAX ISO image as loopback filesystem, just to try to make less plastic waste.
Extract all of the binary sets (do you have enough space to extract all on the server, I hope)
Change filenames to reflect your setup.

# mkdir /home/guestos/gl/ramiel
# chdir /home/guestos/gl/ramiel
# mkdir cdrom
# mount -o loop /home/gl/iso/vaxcd-5.0.2.iso
# for file in /vax/binary/sets/*tgz ; do tar zxf $file ; done

Ok, well done.
Now specify that directory in /etc/exports as:

/home/guestos/gl/ramiel    192.168.1.0/255.255.255.0(rw,no_root_squash,subtree_check,async)

Reload NFS configuration

# /etc/init.d/nfs-kernel-server reload

Oh well, we have finished the server side setup!
Don't worry about how to send the kernel to the VAX, boot.mop would try to get it directly from NFS.

 

Step 4: boot the VAX and complete filesystem setup

Power up the VAX and enjoy.
This is the output for my VAX 4000 model 300 on the console port.

KA670-A V3.7, VMB 2.12
Performing normal system tests.
66..65..64..63..62..61..60..59..58..57..56..55..54..53..52..51..
50..49..48..47..46..45..44..43..42..41..40..39..38..37..36..35..
34..33..32..31..30..29..28..27..26..25..24..23..22..21..20..19..
18..17..16..15..14..13..12..11..10..09..08..07..06..05..04..03..
Tests completed.
Loading system software.
No default boot device has been specified.

Available devices.
-DIA0 (RF72)
-DIA1 (RF72)
-DIA2 (RF72)
-MUA0 (TK70)
-EZA0 (08-00-2B-29-2A-4B)

Device? [EZA0]:

(BOOT/R5:0 EZA0)

2..
-EZA0
1..0..

>> NetBSD/vax boot [Jan 6 2002 22:13:30] <<
>> Press any key to abort autoboot 0
Trying BOOTP
Using IP address: 192.168.1.184
myip: ramiel (192.168.1.184)
root addr=192.168.1.90 path=/home/guestos/gl/ramiel
open netbsd.vax: No such file or directory
> boot netbsd
2388172+308476 [235+193664+183590]=0x2eeb54
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.

NetBSD 5.0.2 (GENERIC) #0: Sat Feb 6 22:45:58 UTC 2010
builds@b8.netbsd.org:/home/builds/ab/netbsd-5-0-2-RELEASE/vax/2010020618
51Z-obj/home/builds/ab/netbsd-5-0-2-RELEASE/src/sys/arch/vax/compile/GENERIC
VAX 4000/300
total memory = 32708 KB
avail memory = 28428 KB
mainbus0 (root)
cpu0 at mainbus0: KA670, Rigel (ucode rev 17), 2KB L1 cache, 128KB L2 cache
ze0 at mainbus0
ze0: hardware address 08:00:2b:29:2a:4b
shac at mainbus0 not configured
uba0 at mainbus0: Q22
dhu0 at uba0 csr 160440 vec 300 ipl 17
dhu0: rom(1) version 17
dhu0: rom(0) version 19
dhu0: DHV-11
mtc0 at uba0 csr 174500 vec 774 ipl 17
mscpbus0 at mtc0: version 4 model 14
mscpbus0: DMA burst size set to 4
mt0 at mscpbus0 drive 0: TK70
Kernelized RAIDframe activated
boot device: ze0
root on ze0
nfs_boot: trying DHCP/BOOTP
nfs_boot: DHCP next-server: 192.168.1.90
nfs_boot: my_name=ramiel
nfs_boot: my_domain=decadence
nfs_boot: my_addr=192.168.1.184
nfs_boot: my_mask=255.255.255.0
nfs_boot: gateway=192.168.1.1
root on 192.168.1.90:/home/guestos/gl/ramiel
root file system type: nfs
TODR stoppedWARNING: preposterous TOD clock time
WARNING: using filesystem time
WARNING: CHECK AND RESET THE DATE!
warning: no /dev/console
Created mfs /dev (610304 byte, 1120 inodes)
/etc/rc.conf is not configured. Multiuser boot aborted.
Enter pathname of shell or RETURN for /bin/sh:
Terminal type? [unknown] vt100
Terminal type is vt100.
We recommend creating a non-root account and using su(1) for root access.
ramiel#

Simple.There is something still to configure, in particular you have to create all of /dev devices.

# cd /dev
# /bin/sh MAKEDEV all

The you could go on with NetBSD configuration, starting with /etc/rc.conf and so on, please refer to NetBSD documentation.
Ok we are done.
Hope it helps.
Hope you enjoy!

Ciao!
gl