OpenBSD/vax on SIMH

It is very easy to install OpenBSD/vax on the SIMH VAX simulator. All you need is a reasonably fast machine, enough disk space for a 1.5GB disk image and a floppyXX.fs file from the OpenBSD/VAX distribution. Assuming you're going to run SIMH on an OpenBSD system, install the emulators/simh package from ports. Decide on an appropriate location for your OpenBSD/vax SIMH environment and at that location, create a file openbsd.simh with the following contents:

set cpu 128m
at nvr openbsd.nvram

deposit rq qtime 1000000

set rq0 ra92
at rq0 openbsd.ra0.disk

set rq1 cdrom
at rq1 /dev/rcd0c

set rq2 cdrom
at rq2 floppy58.fs

at xq0 tap:tun0

boot cpu

For OpenBSD >5.8, replace "at xq0 tap:tun0" with "at xq0 tap:tap0".

This configures SIMH to simulate a VAX with a whopping 128 MB of memory, a RA92 1.5GB disk, a CD-ROM unit to hold CD1 of your CD-ROM set, another CD-ROM unit to boot from, and a DELQA Qbus Ethernet controller attached to the tun0 interface. You might need to replace /dev/rcd0c with the name of the raw device corresponding to your real CD-ROM unit.

By default pressing ^E will interrupt the emulation; if you're accustomed to the emacs editing keys, you might like to remap this (e.g. adding set console wru=1e sets it to ^6, ascii code 0x1e). If you prefer a larger disk, replace set rq0 ra92 with e.g. set rq0 rauser=15000 (where 15000 is the size in MB). See the SIMH documentation for more details.

Before starting SIMH, you will need to configure the network. In most cases, the following bridge-based configuration will give best results:

Create the network interface, set it into layer 2 mode if necessary, and bring it up:

# OpenBSD <=5.8
# ifconfig tun0 create
# ifconfig tun0 link0
# ifconfig tun0 up

# OpenBSD >5.8
# ifconfig tap0 create
# ifconfig tap0 up
Bridge it to your ethernet interface and enable the bridge:
# OpenBSD <=5.8
# ifconfig bridge0 create
# ifconfig bridge0 fwddelay 4
# ifconfig bridge0 add em0 add tun0
# ifconfig bridge0 up

# OpenBSD >5.8
# ifconfig bridge0 create
# ifconfig bridge0 fwddelay 4
# ifconfig bridge0 add em0 add tap0
# ifconfig bridge0 up
By setting appropriate permissions on /dev/tun0 or /dev/tap0 you can avoid running SIMH as root.

802.11 wireless interfaces cannot use bridge(4) without WDS support; in this case you can use BPF to connect to the network. Skip the above ifconfig lines and replace the "at xq0 tap:tun0" or "at xq0 tap:tap0" line with a line like this, replacing iwn0 with your actual network interface as necessary:

at xq0 iwn0

Copy the relevant vax/floppyXX.fs file to the location of your OpenBSD/vax SIMH environment. Now fire up SIMH. At the boot prompt you should type boot dua2:, after which SIMH should boot into the normal OpenBSD installation program:

# simh-vax openbsd.simh

VAX simulator V3.9-0
NVR: buffering file in memory
Eth: opened OS device tun0
Loading boot code from /usr/local/lib/simh/vax/ka655x.bin

KA655-B V5.3, VMB 2.7
Performing normal system tests.
Tests completed.
>>>boot dua2:


>> OpenBSD/vax boot [1.16] <<
>> Press enter to autoboot now, or any other key to abort: 0
> boot bsd
After you've finished the installation, restart SIMH, but now type:
>>>boot dua0:
to boot from your newly installed disk image. You'll need a little patience upon your first boot, since generating the SSH host keys can take quite a bit of time. But it will eventually boot through and present you with a friendly login prompt:
OpenBSD/vax (noname.my.domain) (console)

When you are done installing any additional packages, you might want to remove the lines referring to your real CD-ROM unit and floppyXX.fs from your openbsd.simh file.