VAX OpenVMS on the Raspberry Pi

      3 Comments on VAX OpenVMS on the Raspberry Pi

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.]

Mmmm… smells like the Seventies…

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.

Getting started

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:


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
; 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:


(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.

3 thoughts on “VAX OpenVMS on the Raspberry Pi

  1. Brian Pearson

    I will confess… I could not read your posting because I do not know the acronyms, let alone the concepts. But your posting did catch my eye because I’m an old VMS-hack and would like to implement VMS-style file versioning on raspberry pi (that’s all) so that each time I edit a file, I get a “back-up” version. Or perhaps I could stated it more clearly, I don’t want to simulate or host or implement Open/VMS, I just want to use that tiny part of VMS that was ALWAYS a life saver and use it in the everyday raspberry pi environment so I can look back at and even recover from changes, especially configuration changes. I would appreciate if you could give me a hint or point me in the right direction. Thanks.

    1. Machina Post author

      That sounds like it would be an OS-specific feature. And I’m afraid I don’t know of anything what would run on the RPi. Sounds like you would need a more capable platform for something like this.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.