Emulating a MicroVAX 3900 running OpenVMS 7.3 on a Raspberry-Pi…
Starting from my Common Debian Raspberry Pi/Debian Networking SD image some things need to be installed.
sudo apt-get install m4 sudo apt-get install flex sudo apt-get install bison
At this point creating a user for the Vax and switching to that user is probably a good idea. That’s what i’m doing. Adding this user to /etc/sudoers will probably help too.
After you’ve done that, you’ll need libpcap:
wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz tar vxf libpcap-1.1.1.tar.gz cd libpcap-1.1.1 ./configure make sudo make install cd ..
Now you’ll need to download and compile SIMH:
mkdir simh cd simh wget http://simh.trailing-edge.com/sources/simhv39-0.zip unzip -a simhv39-0.zip mkdir BIN make USE_NETWORK=1 BIN/vax
This will take a while, so go and make a brew.
When thats done, cd up and make some directories and copy a file:
cd .. mkdir bin mkdir data cp simh/BIN/vax bin cp simh/VAX/ka655x.bin data
Now you’re going to need the iso file of the VMS install media. Get the image (somehow) and store it in the data directory as “openvms.iso”. FTPing the image onto the Pi will take a long time, so I suggest you go and make something to eat, but don’t eat it yet.
Anyway, once that it done you’ll need a vax.ini file in your data directory.
So, vi data/vax.ini and make it thus:
; Load CPU microcode
load -r /home/vax/data/ka655x.bin
; Attach non-volatile RAM to a file
attach nvr /home/vax/data/nvram.bin
; This virtual machine has 64M memory
set cpu 64m
; Define disk drive types. RA92 is largest-supported VAX drive.
set rq0 ra92
set rq1 ra92
set rq2 ra92
set rq3 cdrom
; Attach defined drives to local files
attach rq0 /home/vax/data/d0.dsk
attach rq1 /home/vax/data/d1.dsk
attach rq2 /home/vax/data/d2.dsk
; Attach the CD-ROM to its file (read-only)
attach -r rq3 /home/vax/data/openvms.iso
; Disable unused devices. It’s also possible to disable individual devices,
; using a construction like “set rq2 disable” if desired.
set rl disable
set ts disable
; Attach Ethernet to a network interface
set xq mac=08-00-2B-AA-BB-CC
attach xq eth0
; Now start the emulator
We also need this in the bin dir, so
ln -s /home/vax/data/vax.ini bin/vax.ini
So now it is time to try to start the emulator up.
This gives you a load of guff, followed by a “>>>”prompt.
Then enter the date/time when asked, and “yes” when asked.
Once it gives you a “dollar” prompt:
backup dua3:vms073.b/save_set dua0:
Now go and eat the food you cooked earlier.
Once the thing comes up with “Enter “YES” to continue”, hit Ctrl-E and and the prompt enter:
When is comes up with “Tests completed” and shows the $ prompt:
set boot dua0 boot
You’ll be asked for the date/time again, and other questions.
The name of the drive holding the OpenVMS media is DUA3, and Yes it is mounted and you do want to install the OpenVMS library and optional files, along with the MSGHLP database (at its’ default location).
You’ll probably also want the optional OpenVMS Management Station files, but none of the DECWindows or DECnet support (unless you really want it). Answer “Y” when is asks if this is correct.
Now, go and build a yacht while it does the things that it needs to do.
Eventually it will ask you to set passwords for the SYSTEM, SYSTEST and FIELD accounts. Pick ’em wisely.
Next you’ll need an SCSNODE name and SCSSYSTEMID. Pick your own name (6 characters max – I used PIVAX) and use 1025 as the ID.
Next, you will be asked:
Do you want to register any Product Authorization Keys? (Y/N):
Yes you do, and you’ll need your license info (you do have that, don’t you?). So just follow the instructions to enter and confirm your details.
If this goes wrong, which it probably will, exit to the main menu, then use option 99. After entering your timezone details, and waiting for the seasons to change.
When you get back to the sim> prompt, type
and when it shows >>>
Eventually you’ll see a message saying something like “Accounting information” and a whole load of numbers that you don’t need to bother about. Press ENTER, and log in as SYSTEM using the password you set earlier.
If your licence failed earlier, copy your license file directly on to the the command line now (I copied from ConText to Putty in an WinXP box).
My file looked like this (with all the preamble guff removed):
$ LICENSE REGISTER VAX-VMS –
You may want to do the same to install any other Product Keys that you have.
By now a reboot is in order, so:
$ shutdown now >>> boot cpu
Next we’ll set up some disks:
initialize dua1: DATA1 initialize dua2: DATA2 mount/system dua1 data1 mount/system dua2 data2
We’ll want these when we reboot, so these lines should be added to the end of the sys$manager:systartup_vms.com file:
$! Locally added stuff
$ mount/system dua1 data1
$ mount/system dua2 data2
And finally you’ll be wanting to add a user.
$ set def sys$system $ r authorize UAF> add pi/password=pi/owner="Raspberry Pi"/dev=dua1/dir=[pi]/uic=[200,201] /flag=nodisuser/priv=all UAF> exit $ create/dir dua1:[pi] $ set directory/owner=pi dua1:[pi]
Of course the user “pi” will need to change the password when they first log in.
I’ll look at adding TCP/IP to it later, but for now I’ll just look at setting up virtual serial linesand make the thing auto boot.
Add this to the vax.ini file after the “Disable unused devices bit”:
; Fire up some serial lines! Fun, telnet to 4000
set DZ lines=8
attach -am DZ 4000
; Uncomment the line below to enable auto-boot
dep bdr 0
Now you have a working VAX 3900 VMS system emulated on A Raspberry Pi. Fantastic.
Elsewhere, someone has successfully emulated an IBM 4381!
(In all fairness, a lot of this post was cribbed from Phil Wherry’s guide Running VAX/VMS Under Linux Using SIMH, with config bits from Tim Russell)