The answer to the question you’re dying to ask is, ‘why not?’. One of the reasons I bought the PiDP kit is that I wanted to learn a little more about the computing of yore, when programmers wore starched white shirts and pocket protectors.
[UDPDATE: 15/08/2019 – Not everything on the Internet lasts forever. I’ve been told some of the links on this page no longer work. I’m leaving this post here for information purposes only – consider it an archive and not as working instructions.]
A couple of years ago or so I installed OpenVMS on a Raspberry Pi, running on a MicroVAX simulation using the wonderful SIMH. I did it because it seemed amusing to have what was regarded as something approaching ‘big iron’ running on a $35 SBC. I played with it for a short while but then … well, life happened.
Once the PiDP was up and running I started casting around for other uses for it. And it occurred to me, why not use it as my SIMH machine?
My memory of creating a VAX/OpenVMS implementation was that it was complicated. And, to be scrupulously honest, it really was – compared to, say, configuring an Altair sim.
Part of the problem is that, unlike the majority of stuff you might run on SIMH, OpenVMS is by no means obsolete. Having started life with Digital and passed through the hands of Compaq, OpenVMS is now the property of HP. And it’s still being sold and supported. It’s a secure, rock-solid environment. But that means you need a license to run it.
There’s good news and bad news here. The good news is that HP operates a ‘Hobbyist Program‘ for people who want to muck about with OpenVMS in a strictly non-commercial manner. The bad news is that the way this programme operates seems to keep changing, and it now seems far more oriented towards educational institutes rather than individuals. You have to renew your licenses every year and, according to the website, these now run October to October. My current licences expire in May, so it remains to be seen how that works out.
You also need to get your hands on a CD image to install the OS. All of the links I found to $30 kits are broken. And I have no clear recollection where mine came from, so you’ll have to do your own research on that. Sorry.
Your best place to start is the OpenVMS Hobbyist Portal. Join the forum.
Okay, so here’s what you’re going to need before you get going:
- A Raspberry Pi (duh).
- SIMH installed on the Pi. I recommend going with the latest SIMH 4.0 Beta. In fact, you’d be mad not to.
- An image file for the OpenVMS install CD.
- Your OpenVMS license PAKs (Product Authorisation Keys) – a text file that’s emailed to you once you’ve registered for the hobbyist programme.
- A web browser showing Phillip Wherry’s instructions for Running VAX/VMS under Linux using SIMH. This is the canonical text for doing this, very fully detailed and easy to follow – but, as we shall see, I did things slightly differently, but only in trivial ways. I’m going to assume you have this text to refer to – I won’t repeat it, I’ll just tell you which bits to look at.
Getting networking working on SIMH installations is a thorny subject, and we won’t deal with that here. But give yourself a fighting chance by installing libpcap-dev on the RPi before you build any SIMH machines. So, first step is:
$ sudo apt-get install libpcap-dev
Now here’s where I strayed from Wherry’s approach. He puts the relevant SIMH files in /usr/local/vax and sub-dirs thereof. I decided to install all the SIMH machines on my PiDP, because I’m a tad obsessive-compulsive that way. So I untarred the SIMH download and, as root, did a simple ‘make’ – then went and had lunch. I didn’t use the USE_NETWORK=1 option for the build because my understanding is that if you have libpcap installed, then basic networking capabilities are included by default with SIMH 4.0. There is a text file in the SIMH distribution (0readme_ethernet.txt) that has more information.
Once all the machines were built, I copied the binaries – in the /BIN sub-dir in the SIMH folder – to somewhere convenient in my standard path so all users on the system could run them. The reason I did this is because I decided to create a different user on the RPi for each machine. So the next step was to create user ‘vax’. And then, as that user, I created some directories:
/home/vax/data /home/vax/roms /home/vax/images
So where Wherry creates /usr/local/vax/data, I have /home/vax/data. This will be important in a minute.
From the SIMH distribution, I copied the VAX ROM images to the /roms sub-dir. You’ll find these in the /VAX sub-dir in SIMH and the filenames all start with ‘ka’ and end ‘.bin’, so a simple cp command will move them. As I built the SIMH files while in user pi’s home dir, my version of the command looked like this:
$ cp /home/pi/simh-master/VAX/ka*.bin /home/vax/roms
If you copy my approach, make sure the files in /roms are owned by user vax.
I put my copy of the install CD image in the /images sub-dir. This is where I keep all the CD and disk images, other than those created by the sim itself (as we’ll see, they go in /data). So the CD image now lives at:
Creating the VAX
So go and look at Wherry’s instructions and follow them as far as the initial vax.ini file.
I decided to call my config file openvms.ini. With SIMH, when you start a sim, it looks for an .ini file with the same name and uses that automatically. In other words, running a sim using the command ‘vax’ will cause it to look for a ‘vax.ini’ file. But I’m going to want to run a variety of VAX installations – eg, using BSD. By naming the initialisation file openvms.ini, I now run the machine using:
$ vax openvms.ini
The ROM file now used for the MicroVAX is ka655x.bin (not ka655.bin as Wherry mentions). And with my changes to paths etc, my openvms.ini file looks like this:
; Load CPU microcode load -r /home/vax/roms/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. ; rq specifies the RQDX3 MSCP controller capable of supporting up to 4 drives (0-3). ; You can add more drives using rqb, rqc and rqd, each capable of supporting 4 drives. 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/images/OpenVMS-VAX-073-OS.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 ; ; NOT CONCERNING MYSELF WITH NETWORKING JUST YET ; Attach Ethernet to a network interface ; set xq mac=08-00-2B-AA-BB-CC ; attach xq eth0 ; ; Now start the emulator boot cpu
At this point I booted the machine as described above (‘vax openvms.ini’) and followed Wherry’s instructions up to the point where he says:
"At this point, it's time to register a license key for VMS...".
Entering the PAK details by hand is tedious. Yes, you only need a couple to get started, but ploughing your way through the 2,401-line file to find them isn’t much fun either. The instructions that come with the PAKs say that you simply put the file (called ‘Hobbyist-USE-ONLY-VA.txt’) on your machine and, at the OpenVMS prompt type: @Hobbyist-USE-ONLY-VA.txt. This runs it as a batch file. But that assumes you’re running a real VAX, not a sim.
So when the VAX asks you:
* Do you want to register any Product Authorization Keys? (Y/N):
Answer in the negative, rather than following Wherry’s approach. The machine will then shut down (don’t worry, it’s meant to). It promises to reboot, but it lies. So reboot as described by Wherry. Then, once you’re safely logged back in at the ‘$’ prompt, type:
$ SET TERMINAL/INQUIRE $ SET TERMINAL/NOWRAP $ CREATE PAKS.COM
(You don’t type the ‘$’, obviously.)
You’re now in an editor (there’ll be no prompt, just the cursor). You can then cut & paste from the Hobbyist-USE-ONLY-VA.txt file on your computer (at least, this works fine on my Mac). Just select all the text in the file & paste into the terminal on which you’re running OpenVMS. It takes a little while to read in. Once it’s finished, type Ctrl-Z in the terminal to finish editing on OpenVMS. You now have a text file on your VAX installation called PAKS.COM.
Now, at the OpenVMS prompt, type:
And lo! All your licences will be installed.
From that point on, you can pretty much follow the Wherry instructions. Go up to, but not including, the section headed ‘Configuring OpenVMS’, then refer to my post on networking.