Installing VMS in SIMH on Linux

Last week, I decided to pick up a pet project I started once but never got around to finish succesfully; building my own OpenVMS cluster. OpenVMS is one of the oldest operating systems that is still actively developed; it was originally created as VMS by Digital Equipment Corp (DEC, in short), which was bought by Compaq, which was bought by Hewlett-Packard. While most people know Linux and its UNIX roots, this system is a totally different cup of tea.

Three different architectures of machines can run VMS: the oldest being VAX, which was replaced by Alpha, which was in turn replaced by Itanium (the HP Integrity line of machines). Getting that kind of hardware for home use is not impossible, but would be both costly to purchase and hurting your power bill - and they're not exactly quiet either. Emulation is the way to go. Hence, a new goal: getting an emulated VMS cluster up and running. In this article we'll create two VMS machines and prepare them for clustering.

The Emulator

The emulation of choice is SIMH. SIMH supports a ton of different architectures, and one of those is a VAXserver 3900. The good thing about VAX machines is that they didn't have much memory - 16 or 32MB wasn't uncommon - so if we give each of our cluster nodes 64MB, it'll be plenty.

Either you build it by hand, or you use your distribution's package; I built mine myself and carry it around since it's just one binary file anyway. Just make sure you have the ka655x.bin file around; that one's needed to properly operate the SIMH VAX.

Networking

SIMH uses libpcap for its network connectivity. That means that while you *can* assign a network interface to a SIMH instance, you won't be able to connect to it from your own host. Silly - so this link explains how you can work around it. I chose to go for Hans Rosenfeld's approach: you create a bridge on one interface, launch the taptap binary, and bring up two tunX devices. Twice, once for each machine.

With newer SIMH releases (4.0-beta and up) this is no longer necessary.

This is the debian network config that I'm using:

[alver@ziff ~]$ tail -13 /etc/network/interfaces
auto br0 
iface br0 inet static
    pre-up /srv/vax/taptap &
    pre-up ifconfig tun0 up
    pre-up ifconfig tun1 up
    pre-up /srv/vax/taptap &
    pre-up ifconfig tun2 up
    pre-up ifconfig tun3 up
    bridge_ports eth1 tun0 tun2
        address 10.20.0.131
        netmask 255.255.0.0
        network 10.20.0.0
        broadcast 10.20.255.255

This leaves two interfaces to be used by the SIMH instances: tun1 (which is tunneled to tun0 by taptap) and tun3 (which is tunneled to tun2).

Prerequisites

SIMH may be opensource and free, but VMS isn't. Luckily, there's the OpenVMS Hobbyist Program; this program provides free OpenVMS Product Authorization Keys (PAK's) to any member of a participating HP User Group. In addition, the OpenVMS Hobbyist Program offers media kits containing OpenVMS Base O/S software and selected Layered Products for a low price.

So... if you're not yet a member of a local DECUS chapter, get registered there first (it's usually free); get your hands on a VMS software kit; and register for two sets of licenses for your SIMH/VAXes.

SIMH config

To form my cluster, I created two SIMH VAX instances. VMS hostnames are limited to six characters (yes, six). This makes finding a proper hostname less easy than you'd like. Following an obvious naming theme, my two nodes were baptized WHISKY and COGNAC. This is the config for WHISKY:

[simh@ziff ~]$ cat WHISKY/vax.ini
LOAD -r /srv/vax/ka655x.bin
ATTACH nvr /srv/vax/WHISKY/nvram.bin

SET RQ0 RA90
SET RQ1 RA90
ATTACH RQ0 /srv/vax/WHISKY/VMS-RQ0.dsk
ATTACH RQ1 /srv/vax/WHISKY/VMS-RQ1.dsk
SET RQ2 RRD40
ATTACH RQ2 /srv/vax/VMS-VAX.iso
SET RL DISABLE
SET TS DISABLE

SET CPU 64M
SET CPU IDLE

SET XQ MAC=00:11:22:33:44:55
ATTACH XQ tun1

BOOT CPU

COGNAC has a totally similar config, except for (obviously) different disk-files, tun3 instead of tun1, and a different (random) MAC address. Let's see what this config does:

LOAD -r /srv/vax/ka655x.bin
ATTACH nvr /srv/vax/WHISKY/nvram.bin

This loads the VAXserver 3900 microcode, and attaches a machine-specific file to be used as virtual NVRAM - to save eg. boot settings.

SET RQ0 RA90
SET RQ1 RA90
ATTACH RQ0 /srv/vax/WHISKY/VMS-RQ0.dsk
ATTACH RQ1 /srv/vax/WHISKY/VMS-RQ1.dsk
SET RQ2 RRD40
ATTACH RQ2 /srv/vax/VMS-VAX.iso
SET RL DISABLE
SET TS DISABLE

Two block devices RQ0 and RQ1 are defined, both of type RA90, which is an 1.2GB type disk. Two actual files on the host system are attached to these devices.
Warning: these files WILL grow to the size of the disktype specified! Even if you create the file as 1.2GB - if you define RQ0 as RA92, which is 8GB, it will expand as the system uses it. I prefer to define them as RA90 and immediately dd a 1.2GB file for each. 1GB is, for most uses, plenty.

A third block device is then defined - our CD drive, which is attached to an iso of the software kit CD. After that, unused devices are disabled.

SET CPU 64M
SET CPU IDLE

The VM gets 64M RAM; "idle" CPU detection is enabled. Earlier, without this option, SIMH would hog a full CPU core for 100% nonstop - even if the guest OS wasn't doing anything. Setting this option saves a lot of resources on the host.

SET XQ MAC=00:11:22:33:44:55
ATTACH XQ tun1

Fairly obvious: A network device with MAC address 00:11:22:33:44:55 is defined, and attached to device tun1 on the host.

BOOT CPU

...and boot the VM. Extra options will be added later to enable auto-boot. But for now, it'll do.

Installing VMS

Time to fire up the first VAX:

[simh@ziff vax]$ ./vax WHISKY/vax.ini

VAX simulator V3.8-1
NVR: creating new file
NVR: buffering file in memory

KA655-B V5.3, VMB 2.7
Performing normal system tests.
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.
>>>

We're at the console prompt of the virtual VAX. We'll want to boot from the third device, being the cdrom drive; this device is called DUA2 here (after DUA0 and DUA1, the two disk devices).

>>>BOOT DUA2
(BOOT/R5:0 DUA2

  2..
-DUA2
  1..0..

%SYSBOOT-I-SYSBOOT Mapping the SYSDUMP.DMP on the System Disk
%SYSBOOT-W-SYSBOOT Can not map SYSDUMP.DMP on the System Disk
%SYSBOOT-W-SYSBOOT Can not map PAGEFILE.SYS on the System Disk
   OpenVMS (TM) VAX Version X7G7 Major version id = 1 Minor version id = 0
%WBM-I-WBMINFO Write Bitmap has successfully completed initialization.
PLEASE ENTER DATE AND TIME (DD-MMM-YYYY  HH:MM)  

Enter current date and time. Remember to use the month's name abbreviations, like JAN, FEB, etc. When the installer asks to confirm if all devices are present, enter YES. Of course everything is there... we're running emulated, after all.

Configuring devices . . . 
Now configuring HSC, RF, and MSCP-served devices . . . 

Please check the names of the devices which have been configured,
to make sure that ALL remote devices which you intend to use have
been configured.

If any device does not show up, please take action now to make it
available.

Available device  DUA0:                            device type RA90
Available device  DUA1:                            device type RA90
Available device  DUA2:                            device type RRD40
Available device  DUA3:                            device type RX50
Available device  DYA0:                            device type RX02
Available device  DYA1:                            device type RX02
Available device  MUA0:                            device type TK50
Available device  MUA1:                            device type TK50
Available device  MUA2:                            device type TK50
Available device  MUA3:                            device type TK50

Enter "YES" when all needed devices are available: YES 

%BACKUP-I-IDENT, Stand-alone BACKUP T7.2; the date is 18-JAN-2012 19:44:12.80

$

And then you're at the first prompt. You'll want to tell the installer environment to restore a "backup saveset" of VMS, which is located on the cdrom at DUA2, onto the disk you're going to boot from, which is DUA0. After it's done,

$ BACKUP DUA2:VMS073.B/SAVE_SET DUA0:

%BACKUP-I-PROCDONE, operation completed.  Processing finished at 18-JAN-2012 19:45:57.83
If you do not want to perform another standalone BACKUP operation,
use the console to halt the system.

If you do want to perform another standalone BACKUP operation,
ensure the standalone application volume is online and ready.

Enter "YES" to continue: YES

%BACKUP-I-IDENT, Stand-alone BACKUP T7.2; the date is 18-JAN-2012 19:47:56.29

At this point, you have to exit the emulator by pressing CTRL-E. Remember this combination, you may need it later on. Restart the emulator; we're now going to configure auto-boot. At the console prompt, configure DUA0 to be auto-booted disk:

>>>SET BOOT DUA0

Exit the emulator again. Now we'll edit the vax.ini file, and replace the following line:

BOOT CPU

... by this:

SET CPU CONHALT
DEP BDR 0
BOOT CPU
EXIT

This tells the CPU to return control to the emulated VAX console, instead of the emulator itself. DEP BDR 0 is a black magic trick which writes a zero-byte to the BDR register, effectively causing the machine to auto-boot. This combined with the previous option allows us to reboot the VAX from within VMS, without having to touch the emulator. And, in case something goes wrong that the console can't handle, SIMH is told to gracefully EXIT.

Right... time to fire up the VAX once more to continue the installation process.

(...)
%SYSBOOT-I-SYSBOOT Mapping the SYSDUMP.DMP on the System Disk
%SYSBOOT-W-SYSBOOT Can not map SYSDUMP.DMP on the System Disk
%SYSBOOT-I-SYSBOOT Mapping PAGEFILE.SYS on the System Disk
%SYSBOOT-I-SYSBOOT SAVEDUMP parameter not set to protect the PAGEFILE.SYS
   OpenVMS (TM) VAX Version BI73-7G7 Major version id = 1 Minor version id = 0
%WBM-I-WBMINFO Write Bitmap has successfully completed initialization.

           OpenVMS VAX V7.3 Installation Procedure

                         Model: VAXserver 3900 Series
                 System device: RA90 - _DUA0:
                   Free Blocks: 2854566
                      CPU type: 10-01

* Please enter the date and time (DD-MMM-YYYY HH:MM) 18-JAN-2012 19:53
* Enter the volume label for this system disk [OVMSVAXSYS]: WHISKYSYS
* Enter name of drive holding the OpenVMS distribution media: DUA2
* Is the OpenVMS media ready to be mounted? [N] Y

A few basic things to configure, and one important one too: if you're going to cluster, you really don't want to have all your machines' system disks called "OVMSVAXSYS". That's just asking for confusion afterwards. I went for "WHISKYSYS" and "COGNACSYS". The VMS media are on DUA2, and are of course ready to be mounted.

%MOUNT-I-MOUNTED, VAXVMS073 mounted on _DUA2:

Select optional software you want to install.  You can install one
or more of the following OpenVMS or DECwindows components:

o OpenVMS library                              -  52200 blocks
o OpenVMS optional                             -  19000 blocks
o OpenVMS Help Message                         -  10400 blocks
o OpenVMS Management Station                   -  20000 blocks
o DECwindows base support                      -   4400 blocks
o DECwindows workstation support               -  23800 blocks
-  75 dots per inch video fonts          -    (included)
- 100 dots per inch video fonts          -   6200 blocks
o DECnet-Plus networking                       -  80000 blocks
o DECnet Phase IV networking                   -    800 blocks

Space remaining on system disk:  2854377 blocks

At this point the system will ask you what to install. You will want the library and optional files:

* Do you want to install the OpenVMS library files? (Y/N) Y

Space remaining on system disk:  2802177 blocks

* Do you want to install the OpenVMS optional files? (Y/N) Y

Space remaining on system disk:  2783177 blocks

And yes, you will really, really want the HELP database! Just have it install in the default location:

The Help Message utility (MSGHLP) provides online explanations
and user actions for OpenVMS messages in place of the hardcopy
OpenVMS System Messages and Recovery Procedures Reference Manual,
which is now separately orderable.

The MSGHLP database file, MSGHLP$LIBRARY.MSGHLP$DATA,
consumes approximately 10400 blocks and will be
placed by default on your system disk in SYS$COMMON:[SYSHLP]
unless you specify an alternate device when prompted.

* Do you want to install the MSGHLP database? (Y/N) Y

You can install this database on your system disk in SYS$COMMON:[SYSHLP]
or on an alternate device.  If you specify an alternate device, but no
directory, MSGHLP$LIBRARY.MSGHLP$DATA is placed in [HELP_MESSAGE].  When
prompted, take the default of the system disk or specify an alternate
device using this format:

device:[directory]

* Where do you want to install the MSGHLP database?
[SYS$COMMON:[SYSHLP]]

Space remaining on system disk:  2772777 blocks

We don't want the OpenVMS Management Station files - why would we want to manage our VMS from a Windows NT machine?

The OpenVMS Management Station is a client-server application that
provides OpenVMS system management capabilities through a client
application on a personal computer (PC) running Microsoft Windows.

The server application runs on OpenVMS systems and is automatically
installed as part of the OpenVMS operating system.

This option provides the files used to install the PC client software.
If you want to use the OpenVMS Management Station, you must install
these optional files on at least one OpenVMS system and then use one or
both of them to install the PC client on one or more PCs.  There are two
files:  TNT030_I.EXE for Intel systems (Windows 95 and Windows NT), and
TNT030_A.EXE for Alpha Windows NT systems.

The OpenVMS Management Station optional files consume approximately 20000
blocks and will be placed on your system disk in SYS$COMMON:[TNT.CLIENT].

* Do you want to install the optional OpenVMS Management Station files? (Y/N) N

DECwindows is the GUI of VMS. Since we're running in an emulator without graphics, it would just be a waste of diskspace to install it.

You can select DECwindows now, or you can use the DECW$TAILOR utility
to provide or remove DECwindows support after the installation.

Some media, TK50s in particular, can be very slow when tailoring on files.
You might want to select DECwindows now and tailor off unwanted files later.

NOTE: This kit does NOT contain full DECwindows.
To obtain full DECwindows, you must also install the separate
layered product, DECwindows Motif for OpenVMS VAX.
V1.2-3 is the minimum version of DECwindows Motif for OpenVMS VAX
that can be used with OpenVMS VAX V7.3.

The DECwindows components provided in this kit requires approximately
34400 blocks, broken down as follows:

o DECwindows base support                    -   4400 blocks
o DECwindows workstation support             -  23800 blocks
  -  75 dots per inch video fonts            -    (included)
  - 100 dots per inch video fonts (optional) -   6200 blocks

You must select the DECwindows base support option if
- you plan to run DECwindows software, or
- you are installing this kit on
  * a workstation or
  * an OpenVMS Cluster that contains workstations, or
- you want to provide font files for Xterminals.

If you are installing this kit on a system that includes Xterminals
and you do NOT select DECwindows base support, then you will have to use
the DECW$TAILOR utility to provide font files.

* Do you want the DECwindows base support? (Y/N) N

Here we arrive at the interesting part. DECnet is a non-IP network protocol, used by VMS for various tasks. There are multiple flavours of DECnet; at this point, there's two options to choose from. DECnet Phase IV is the "older" branch; DECnet-Plus is the most "modern" version with a lot of new features, which need a lot more insight and offer a plethora of new ways to screw things up. For our purposes - and to make sure we don't get any more confused - I'll be going with the old DECnet Phase IV.

Beginning with OpenVMS V7.1, the DECnet-Plus kit is provided with
the OpenVMS operating system kit.  Compaq strongly recommends that
DECnet users install DECnet-Plus.  DECnet Phase IV applications are
supported by DECnet-Plus.

DECnet Phase IV is also provided as an option.  Support for DECnet
Phase IV is available through a Prior Version Support Contract.

If you install DECnet-Plus and TCP/IP you can run DECnet
applications over a TCP/IP network.  Please see the OpenVMS
Management Guide for information on running DECnet over TCI/IP.

If you plan to install DECnet Phase IV do NOT select DECnet-Plus.

* Do you want to install DECnet-Plus? (Y/N) N
* Do you want to install DECnet Phase IV? (Y/N) Y

Space remaining on system disk:  2771977 blocks

And that's about it for choices. A summary is given, and you give the go.

The following options will be provided:

OpenVMS library
OpenVMS optional
OpenVMS Help Message
DECnet Phase IV

Space remaining on system disk:  2771977 blocks

* Is this correct? (Y/N) Y

It'll start to unpack your selections. For DECnet, it'll ask for confirmation once more.

Restoring OpenVMS library save set ...
%BACKUP-I-STARTVERIFY, starting verification pass

Restoring OpenVMS optional save set ...
%BACKUP-I-STARTVERIFY, starting verification pass

Restoring OpenVMS Help Message save set ...
%BACKUP-I-STARTVERIFY, starting verification pass

Now registering the OpenVMS operating system in the
POLYCENTER Software Installation product database

The following product will be registered:
DEC VAXVMS VMS V7.3                    DISK$VAXVMSV73:[VMS$COMMON.]

The following product has been registered:
DEC VAXVMS VMS V7.3                    Transition (registration)

Installing DECnet Phase IV...
%MOUNT-I-MOUNTED, VAXVMS073 mounted on _DUA2:

The following product has been selected:
DEC VAXVMS DECNET_PHASE_IV V7.3        Layered Product

Configuration phase starting ...

You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.

DEC VAXVMS DECNET_PHASE_IV V7.3: DECNET_PHASE_IV

COPYRIGHT (c)  2-APR-2001 -- All rights reserved

Digital Equipment Corporation

* This product does not have any configuration options.

Support addendum to DECnet Phase IV service contract required

Do you want to continue? [YES]

Execution phase starting ...

The following product will be installed to destination:
DEC VAXVMS DECNET_PHASE_IV V7.3        DISK$VAXVMSV73:[VMS$COMMON.]

Portion done: 0%...10%...30%...40%...50%...60%...70%...80%...100%

The following product has been installed:
DEC VAXVMS DECNET_PHASE_IV V7.3        Layered Product

You can now remove the distribution kit from DUA2:.

In an OpenVMS Cluster, you can run multiple systems sharing all files
except PAGEFILE.SYS, SWAPFILE.SYS, SYSDUMP.DMP, and VAXVMSSYS.PAR.

Cluster configuration cannot be done at this time because no network
is present.  In order to configure a cluster you must FIRST do one
or both of the following:

o Install DECnet-Plus (or DECnet Phase IV), or
o Execute SYS$STARTUP:LAN$STARTUP.COM by removing the
  comment delimiter ("!") from the line

$! @SYS$STARTUP:LAN$STARTUP

in SYS$MANAGER:SYSTARTUP_VMS.COM.

Then configure the cluster by executing the following command:

@ @SYS$MANAGER:CLUSTER_CONFIG

See the OpenVMS System Manager's Manual: Essentials for more information.

Make sure to write down your passwords. SYSTEM is an account you'll be needing at least for the next few steps; for SYSTEST and FIELD I provided a random 32-char string as pass.

Now we will ask you for new passwords for the following accounts:

SYSTEM, SYSTEST, FIELD

Passwords must be a minimum of 8 characters in length.  All passwords
will be checked and verified.  Any passwords that can be guessed easily
will not be accepted.

* Enter password for SYSTEM:
* Re-enter for verification:

%UAF-I-MDFYMSG, user record(s) updated
%VMS-I-PWD_OKAY, account password for SYSTEM verified

* Enter password for SYSTEST:
* Re-enter for verification:

%UAF-I-MDFYMSG, user record(s) updated
%VMS-I-PWD_OKAY, account password for SYSTEST verified

The SYSTEST_CLIG account will be disabled.  You must re-enable
it before running UETP but do not assign a password.

%UAF-I-PWDLESSMIN, new password is shorter than minimum password length
%UAF-I-MDFYMSG, user record(s) updated

* Enter password for FIELD:
* Re-enter for verification:

%UAF-I-MDFYMSG, user record(s) updated
%VMS-I-PWD_OKAY, account password for FIELD verified

Creating RIGHTS database file, SYS$SYSTEM:RIGHTSLIST.DAT
Ignore any "-SYSTEM-F-DUPIDENT, duplicate identifier" errors.

%UAF-I-RDBCREMSG, rights database created
%UAF-I-RDBADDMSGU, identifier DEFAULT value [000200,000200] added to rights database
%UAF-I-RDBADDMSGU, identifier FIELD value [000001,000010] added to rights database
%UAF-I-RDBADDMSGU, identifier SYSTEM value [000001,000004] added to rights database
%UAF-I-RDBADDMSGU, identifier SYSTEST value [000001,000007] added to rights database
%UAF-E-RDBADDERRU, unable to add SYSTEST_CLIG value [000001,000007] to rights database
-SYSTEM-F-DUPIDENT, duplicate identifier
%UAF-I-NOMODS, no modifications made to system authorization file
%UAF-I-RDBDONEMSG, rights database modified

Creating MODPARAMS.DAT database file, SYS$SYSTEM:MODPARAMS.DAT

For the SCSNODE name - the hostname, if you will - you'll have to remember to use only 6 characters or less. The SCSSYSTEMID is a bit more complex. It's calculated through the formula X * 1024 + Y, where X is the DECnet area number, and Y the DECnet node number in that area.

Since we're starting from scratch, we can use X=1; for the node numbers, it makes sense to think this through properly. Useful tip: use the last octet of the IP address you want to assign to this machine! Since I want to give IPs 10.20.1.131 and 10.20.1.132 to the nodes, I'll give WHISKY Y=131, COGNAC Y=132. This leaves us with a SCSSYSTEMID of 1155 for WHISKY, and DECnet code 1.131. COGNAC will get 1156 as SCSSYSTEMID and DECnet code 1.132.

If you want machines to communicate with others over DECnet, you really, really should communicate with those people on how to decide on DECnet addresses. If you would want to join my cluster, you'll HAVE to use DECnet area 1, and you'll HAVE to use a DECnet node number that's not 131 or 132.

Why? Because DECnet overwrites your MAC address, based on the DECnet address. The 16-bit decimal address is converted to a hexadecimal number and appended to the address AA:00:04:00 in byte-swapped order, with the least significant byte first. For example, DECnet address 12.75 becomes 12363 (base 10), which equals 304B (base 16). After this byte-swapped address is appended to the standard DECnet MAC address prefix, the resulting address is AA:00:04:00:4B:30 (thanks to Cisco for that brief explanation). And, in the end, we really don't want to have two identical MAC addresses on the same network, do we?

* Please enter the SCSNODE name: WHISKY
* Please enter the SCSSYSTEMID:  1155

After the installation finishes, you might want to do one or more of the
following tasks:

o DECOMPRESS THE SYSTEM LIBRARIES - To save space, many of the system
libraries are shipped in a data-compressed format.  If you have
enough disk space, you can decompress the libraries for faster access.
To data expand the libraries, type:

$ @SYS$UPDATE:LIBDECOMP.COM

If you do not decompress these libraries, you will experience
slower response to the HELP and LINK commands.

o BUILD A STANDALONE BACKUP KIT - You can build a standalone backup kit
using the procedure described in the "Backup Procedures" chapter of
tye upgrade and installation supplement provided for your VAX computer.

o TAILOR THE SYSTEM DISK - You might want to review the files provided or
not provided during this installation.  If you find there are files
you want to remove from the system disk (TAILOR OFF) or files you want
to add (TAILOR ON), use the following utilities to perform the
desired tailoring.

OpenVMS tailoring:          $ RUN SYS$UPDATE:VMSTAILOR

DECwindows tailoring:       $ RUN SYS$UPDATE:DECW$TAILOR

NOTE:  The tailor procedure cannot be used to TAILOR ON or TAILOR OFF
files located on an alternate disk.

=================================================================
Continuing with OpenVMS VAX V7.3 Installation Procedure.

Configuring all devices on the system ...

The question will come up whether or not you want to register licenses (PAKs) now. I always say 'no' here; it's much, much easier to copy/paste the licenses from a different terminal to the SIMH console, than it is to manually type in all those license checksums.

* Do you want to register any Product Authorization Keys? (Y/N): N

********************************************************************************

After the system has rebooted you must register any Product
Authorization Keys (PAKs) that you have received with this kit.
You can register these PAKs by executing the following procedure:

$ @SYS$UPDATE:VMSLICENSE

See the OpenVMS License Management Utility Manual for any additional
information you need.

********************************************************************************

Enter your timezone. For me, that would be 37: WET, and we're in daylight savings time now.

%UTC-I-UPDTIME, updating Time Zone information in SYS$COMMON:[SYSEXE]

Configuring the Local Time Zone

TIME ZONE SPECIFICATION -- Main Time Zone Menu

1) Australia       11) GMT             21) Mexico          31) Turkey
2) Brazil          12) Greenwich       22) NZ              32) UCT
3) CET             13) Hong Kong       23) NZ-CHAT         33) US
4) Canada          14) Iceland         24) Navajo          34) UTC
5) Chile           15) Iran            25) PRC             35) Universal
6) Cuba            16) Israel          26) Poland          36) W-SU
7) EET             17) Jamaica         27) ROC             37) WET
8) Egypt           18) Japan           28) ROK             38) Zulu
9) Factory         19) Libya           29) Singapore
10) GB-Eire         20) MET             30) SystemV

0) None of the above

Select the number above that best describes your location: 37

You selected WET as your time zone.

Is this correct? (Yes/No) [YES]:

Default Time Differential Factor for standard time is 0:00.
Default Time Differential Factor for daylight saving time is 1:00.


The Time Differential Factor (TDF) is the difference between your
system time and Coordinated Universal Time (UTC).  UTC is similar
in most repects to Greenwich Mean Time (GMT).

The TDF is expressed as hours and minutes, and should be entered
in the hh:mm format.  TDFs for the Americas will be negative
(-3:00, -4:00, etc.); TDFs for Europe, Africa, Asia and Australia
will be positive (1:00, 2:00, etc.).

Is Daylight Savings time in effect? (Yes/No): YES

Enter the Time Differential Factor [1:00]:

NEW SYSTEM TIME DIFFERENTIAL FACTOR = 1:00.

Is this correct? [Y]:

At this point, the last configurations will be done, and the system will auto-reboot. Installation: finished. After it comes back up, log in with SYSTEM and the password you provided before. You'll be greeted with a nice warning about licenses; let's get those sorted out first.

%LICENSE-I-NOLICENSE, no license is active for this software product
%LOGIN-S-LOGOPRCON, login allowed from OPA0:
Welcome to OpenVMS (TM) VAX Operating System, Version V7.3

$

A license (PAK) looks like this:

$ LICENSE REGISTER VAX-VMS - 
/ISSUER=OPENVMS_HOBBYIST - 
/AUTHORIZATION=DECUS-BEL-006150000-1700000 - 
/PRODUCER=DEC - 
/UNITS=0 - 
/TERMINATION_DATE=30-JAN-2013  - 
/ACTIVITY=A - 
/OPTIONS=(NO_SHARE) - 
/CHECKSUM=2-EIDC-LMLD-EJGL-XXXX

Notice that the license itself is provided as a DCL "LICENSE" command line? You can just copy the license, paste it in your prompt, and it'll be registered. And you can copy/paste the entire file there - it'll take a while to get through, but it'll work. Another option is to only paste the basic VAX-VMS and networking licenses, and transfer the license file to the machine over the network, after which you can simply run it as a command file.

After licenses have been entered, MODIFY the VAX-VMS license to include your nodename, then LOAD them all.

$ LICENSE MODIFY/INCLUDE=WHISKY VAX-VMS
$ LICENSE LOAD

Something I tend to do after this step is decompressing the libraries, which speeds things up quite a bit.

$ @SYS$UPDATE:LIBDECOMP.COM

                 OpenVMS Library Decompression Utility

     1  HELPLIB.HLB          15  SDA.HLB              28  PHONEHELP.HLB         
     2  STARLET.OLB          16  SHWCLHELP.HLB        29  LIB.MLB               
     3  ACLEDT.HLB           17  SYSGEN.HLB           30  STARLET.MLB           
     4  ANLRMSHLP.HLB        18  ANALAUDIT$HELP.HLB   31  STARLETSD.TLB         
     5  DBG$HELP.HLB         19  SYSMANHELP.HLB       32  SYS$STARLET_C.TLB     
     6  DBG$UIHELP.HLB       20  TFF$TFUHELP.HLB      33  ERFLIB.TLB            
     7  DISKQUOTA.HLB        21  EXCHNGHLP.HLB        34  VAXCCURSE.OLB         
     8  EDFHLP.HLB           22  TPUHELP.HLB          35  VAXCRTL.OLB           
     9  INSTALHLP.HLB        23  EVE$HELP.HLB         36  VAXCRTLG.OLB          
    10  LATCP$HELP.HLB       24  EVE$KEYHELP.HLB      37  IMAGELIB.OLB          
    11  MAILHELP.HLB         25  UAFHELP.HLB          38  DECCCURSE.OLB         
    12  MNRHELP.HLB          26  TECO.HLB             39  DECCRTL.OLB           
    13  EDTHELP.HLB          27  PATCHHELP.HLB        40  DECCRTLG.OLB          
    14  NCPHELP.HLB                                                             

          A  ALL libraries to be decompressed
          E  EXIT this procedure

* Enter letter or number(s) of libraries to be decompressed
  (Separate multiple entries with a comma)a

Just let it do all libraries - yes, it'll fit in that 1.2GB easily. After a bit it's done, and there we are; ready to setup VMS networking.

VMS Networking

Before configuring DECnet and TCPIP, a couple of system parameters need to be changed. This can be done via the MODPARAMS.DAT file, which is read by AUTOGEN. While not all of the parameters you'll want to change require a reboot, some do; in the end, I tried to group some of the parameters together, and reboot anyway for good measure.

$ SET DEF SYS$SYSTEM
$ EDIT MODPARAMS.DAT

Add the following parameters to the end of the file, CTRL-Z to save and exit, and then run AUTOGEN:

ADD_GBLPAGES=10000
ADD_GBLSECTIONS=100
ADD_NPAGEDYN=800000
ADD_NPAGEVIR=800000
MIN_SPTREQ=6000
INTSTKPAGES=20

9 lines written to file SYS$SYSROOT:[SYSEXE]MODPARAMS.DAT;2

$ @SYS$UPDATE:AUTOGEN GETDATA REBOOT NOFEEDBACK

Next up: run the DECnet configuration utility. The defaults are usually all fine; you just need to enter your DECnet address that you decided on earlier.

$ @SYS$MANAGER:NETCONFIG.COM

DECnet for OpenVMS network configuration procedure

This procedure will help you define the parameters needed to get DECnet
running on this machine.  You will be shown the changes before they are
executed, in case you wish to perform them manually.

What do you want your DECnet node name to be?        [WHISKY]:
What do you want your DECnet address to be?                  : 1.131   
Do you want to operate as a router?         [NO (nonrouting)]:
Do you want a default DECnet account?                    [NO]:
Do you want a default account for the MAIL object?      [YES]:
Do you want a default account for the FAL object?        [NO]:
Do you want a default account for the PHONE object?     [YES]:
Do you want a default account for the NML object?       [YES]:
Do you want a default account for the MIRROR object?    [YES]:
Do you want a default account for the VPM object?       [YES]:

It will spew out a LOT of DCL that will execute if you confirm. Since we're starting from brand new operating systems, there's little point in not accepting them, so just give it a YES.

Do you want these commands to be executed?  [YES]:

Confirm to have DECnet started manually this time (supposing you really did input and load that license), and watch the magic happen!

The changes have been made.

If you have not already registered the DECnet-VAX key, then do so now.

After the key has been registered, you should invoke the procedure
SYS$MANAGER:STARTNET.COM to startup DECnet-VAX with these changes.

(If the key is already registered) Do you want DECnet started?  [YES]:

%%%%%%%%%%%  OPCOM  18-JAN-2012 20:37:24.45  %%%%%%%%%%%
Message from user DECNET on WHISKY
DECnet starting

%RUN-S-PROC_ID, identification of created process is 00000211
%%%%%%%%%%%  OPCOM  18-JAN-2012 20:37:24.98  %%%%%%%%%%%
Message from user DECNET on WHISKY
Error opening permanent proxy database

%NCP-I-NOINFO, No information in database
%RUN-S-PROC_ID, identification of created process is 00000213
$
%%%%%%%%%%%  OPCOM  18-JAN-2012 20:37:29.20  %%%%%%%%%%%
Message from user DECNET on WHISKY
DECnet event 4.10, circuit up
From node 1.131 (WHISKY), 18-JAN-2012 20:37:26.89
Circuit QNA-0

Sweet! DECnet is running. Once you are at this point for both machines, you'll want to sync the node databases:

$ RUN SYS$SYSTEM:NCP
NCP> COPY KNOWN NODES FROM 1.132 TO BOTH
NCP> EXIT

It's time to install TCPIP now. This is also located on the VMS iso, which is DUA2 in VMS:

$ MOUNT/OVER=ID DUA2

%MOUNT-I-WRITELOCK, volume is write locked
%MOUNT-I-MOUNTED, VAXVMS073 mounted on _WHISKY$DUA2:

$ SET DEF DUA2:[TCPIP_VAX051.KIT]
$ PRODUCT INSTALL *

The following product has been selected:
DEC VAXVMS TCPIP V5.1-15               Layered Product

Do you want to continue? [YES]

When asked, tell it to stick with defaults, and that there's no need to review these defaults.

Configuration phase starting ...

You will be asked to choose options, if any, for each selected product and for
any products that may be installed to satisfy software dependency requirements.

DEC VAXVMS TCPIP V5.1-15: Compaq TCP/IP Services for OpenVMS.
(c) Compaq Computer Corporation 2000. All Rights Reserved.
Compaq Computer Corporation
Compaq TCP/IP Services for OpenVMS offers several license options.

Do you want the defaults for all options? [YES]
Do you want to review the options? [NO]

Execution phase starting ...

The following product will be installed to destination:
DEC VAXVMS TCPIP V5.1-15               DISK$WHISKYSYS:[VMS$COMMON.]

Portion done: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%

%PCSI-I-PRCOUTPUT, output from subprocess follows ...
% - HELP has been updated. You may purge SYS$COMMON:[SYSHLP]HELPLIB.HLB
%
%PCSI-I-PRCOUTPUT, output from subprocess follows ...
% TCPIP-W-PCSI_INSTALL
% - Execute SYS$MANAGER:TCPIP$CONFIG.COM to proceed with configuration of
%   Compaq TCP/IP Services.
%
Portion done: 100%

The following product has been installed:
DEC VAXVMS TCPIP V5.1-15               Layered Product

DEC VAXVMS TCPIP V5.1-15: Compaq TCP/IP Services for OpenVMS.

Check the release notes for current status of the product.

Once installed, run the TCPIP configuration utility:

$ @SYS$MANAGER:TCPIP$CONFIG

I don't think it's necessary to review all IP configuration options here - you know pretty well what kind of options you want for networking. But since we did the smart thing and plan to use the same numbers for DECnet and IP, we'll give each node 10.20.[DECnet address] as IP. Handy to remember, and it tends to avoid problems when the cluster grows with other people's nodes.

Wrapping up and testing

Once you've completed your IP setup (and verified it's working; try telnetting to your machine) all that is left to do is making sure that both DECnet and TCPIP are properly started at boot time.

$ EDIT SYS$MANAGER:SYSTARTUP_VMS.COM

Add the following two lines just before EXIT, at the end of the file:

$ @SYS$MANAGER:STARTNET.COM
$ @SYS$STARTUP:TCPIP$STARTUP

Make sure not to put them in the other way round; DECnet really needs to do its MAC address black magic first, and only then TCPIP can kick in. Reboot the machine, and check if all goes well.

$ REBOOT

After both VAX instances are back up, try telnetting to the machines. Log in to both, and try PHONE'ing to yourself from one node to the other!

$ PHONE COGNAC::SYSTEM

Look in COGNACs terminal... ha!

COGNAC::SYSTEM is phoning you on WHISKY::     (09:29:24)
$ PHONE ANSWER

PHONE: VMS' instant messaging over DECnet. :-)

                            OpenVMS Phone Facility                  27-JAN-2012
%
-------------------------------------------------------------------------------
                                WHISKY::SYSTEM
Do be do be do



-------------------------------------------------------------------------------
                                COGNAC::SYSTEM
You bet.



-------------------------------------------------------------------------------

And with that, you're ready to play with your two new VMS systems. You can add new users to the system, but I would recommend not doing that until you have a fully working cluster. If you want to anyway, here's how to create a new user with 'full' privileges:

$ SET DEFAULT SYS$SYSTEM
$ RUN AUTHORIZE
UAF> ADD ALVER/PASSWORD=TEMP/OWNER="Lennert Van Alboom"/DEV=DUA0/DIR=[ALVER]/UIC=[200,201]/FLAG=NODISUSER/PRIV=ALL
%UAF-I-PWDLESSMIN, new password is shorter than minimum password length
%UAF-I-ADDMSG, user record successfully added

*IF* you create a user, make sure to create his/her homedirectory and set the proper permissions:

$ CREATE/DIRECTORY DUA0:[ALVER]
$ SET DIRECTORY/OWNER=ALVER DUA0:[ALVER]

Coming up later: joining the two VAX-VMS machines in a VAXcluster. Enjoy!

Credits & thanks

Large parts of this howto are based on the RetroComputing SIMHNetworking information and Running VAX/VMS Under Linux Using SIMH by Phillip Wherry.

I wouldn't have gotten anywhere without the countless tips and VMS insights of Steve "Hoff" Hoffman, the Deathrow VMS cluster people and everyone in #vms on irc.2600.net. Thanks!