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!