I have some original VMS CDROMs. I was looking for a way to image these (for use with SIMH) and also a way to write ISO images back to blank CDs, to use on real hardware. This should be a fairly simple process using a modern Linux computer and the “dd” command, except for one anticipated complication: “block size”.
The problem (or what I thought would be a problem) is that VAX/VMS CDs use a block size of 512 bytes, whereas a PC CDROM drive uses a block size of 2048 bytes. So I was expecting that I would need to hookup an older-style DEC CDROM drive (such as the RRD42) to a SCSI card on the PC, in order to image the DEC CDs. But because the DEC CD drives are read-only, how would I make CDs from ISO images, to use on real hardware, without a CD/DVD writer that supports a block size of 512?
Well it turns out that the solution is easier than I expected. My “imaging station” for this experiment is a Dell Optiplex 780 with an internal SATA CD/DVD drive, running Ubuntu 14.04. Ubuntu reports that the drive is a “PLDS DVD+/-RW DH-16AAS”. This was a low-cost (approx $300) system that I bought second hand a few years ago.
What I’ve found is that the PLDS drive seems to be able to detect the block size and switch to 512-byte mode to successfully image a VMS distribution CDROM. Either that, or block size is irrelevant when reading and writing ISO images. I’m really not sure at this point. Either way, it seems there’s no need for a SCSI interface board, or a SCSI CDROM R/W drive. I don’t know if this capability of the PLDS drive is unusual, or whether most “modern” CD/DVD drives in budget desktop systems can do this.
More details are provided below.
Finding the CDROM device name in Ubuntu
The “lsscsi” command can be used to view all SCSI drives connected to an Ubunutu system. On my Dell Optiplex 780, this command also lists all connected SATA drives.
Here’s what the command shows on my system:
malcolm@malcolm-OptiPlex-780:~$ lsscsi ⤶ [0:0:0:0] disk ATA ST3160318AS CC45 /dev/sda [1:0:0:0] cd/dvd PLDS DVD+-RW DH-16AAS JD12 /dev/sr0 [6:0:4:0] cd/dvd DEC RRD43 (C) DEC 1084 /dev/sr1 malcolm@malcolm-OptiPlex-780:~$
On my system, the internal SATA CD/DVD drive always appears as /dev/sr0.
My system also has an Adaptec AHA-2930CU internal SCSI adapter installed. When I connect an external SCSI CD reader to the AHA-2930CU, it shows up at /dev/sr1. But Ubuntu has to be power cycled for it to show up.
The external CD reader that I’ve been using is a RRD43. Unlike the RRD42, it doesn’t require a caddy. And unlike the RRD46, it doesn’t have a motorised tray. Instead, when you press the eject button, the tray pops open about an inch. You then manually open it from there, and close it again.
I usually use the internal PLDS drive for imaging VMS CDs, because of its convenience. But I’ve also had success in imaging the same CDs using the external RRD43 CD reader. But the RRD43 (connected to my AHA-2930CU interface) is much slower. I found that a 624MB CD takes 337 seconds (1.9 MB/s) to image using the internal PLDS drive. The same operation with the same CD on the external RRD43 takes 2038 seconds (306 kB/s).
Ejecting a CD from the external RRD43 drive
I sometimes find that I can’t eject a CD by pressing the eject button on the front of the RD43.
When this happens, I just use the eject command, which works just fine. Here’s an example:
malcolm@malcolm-OptiPlex-780:~$ eject /dev/sr1 ⤶ malcolm@malcolm-OptiPlex-780:~$
Imaging a VAX/VMS 6.1 CDROM
My distribution of OpenVMS Version 6.1 is a 3-CD set in a 2-CD case (identical to what an audio double-CD set used to be distributed). Opening the front of the case provides access to the first two CDs. The third CD, and the various brochures distributed with the CDs, is via the back of the case.
The 3 CDs are:
- OpenVMS VAX Version 6.1, Binaries & Documentation 1/1. DEC Part Number AG-PXKUC-RE. Volume Label is VAXVMS061
- OpenVMS AXP Operating System V6.1, Software & Documentation. DEC Part Number AG-PX8XB-RE. Volume Label is AXPVMS061.
- Alpha AXP Systems Firmware Update V2.8. DEC Part Number AG-PTMWK-BE. Volume Label is UPDATE.
I was mainly interested in the first CD, being the VAX/VMS 6.1 distribution disk. I slipped it into the Optiplex’s internal SATA CD/DVD R/W drive. To my surprise, the “dd” command was able to image the CD seemingly without error.
Here’s the dialog:
malcolm@malcolm-OptiPlex-780:~$ dd if=/dev/sr0 of=vms061-1.iso ⤶ 833728+0 records in 833728+0 records out 426868736 bytes (427 MB) copied, 107.256 s, 4.0 MB/s malcolm@malcolm-OptiPlex-780:~$ ls -l vms061* ⤶ -rw-rw-r-- 1 malcolm malcolm 426868736 Jun 10 20:15 vms061-1.iso
By dividing the filesize by the number of records, we can see that the dd command used a block size of 512 bytes.
I was then able to successfully install VAX/VMS 6.1 on the SIMH MicroVAX3900 simulator (more detail on this is set out below).
Encouraged by this result, I continued on and imaged the second and third CDs in the OpenVMS 6.1 case.
Here’s the results for the second CD (AXP/VMS 6.1):
malcolm@malcolm-OptiPlex-780:~$ dd if=/dev/sr0 of=vms061-2.iso ⤶ 1001208+0 records in 1001208+0 records out 512618496 bytes (513 MB) copied, 323.944 s, 1.6 MB/s malcolm@malcolm-OptiPlex-780:~$ ls -l vms061-2* ⤶ -rw-rw-r-- 1 malcolm malcolm 512618496 Jun 10 21:25 vms061-2.iso malcolm@malcolm-OptiPlex-780:~$
Finally, here’s the results for the third CD (AXP firmware update):
malcolm@malcolm-OptiPlex-780:~$ dd if=/dev/sr0 of=vms061-3.iso ⤶ 421200+0 records in 421200+0 records out 215654400 bytes (216 MB) copied, 167.558 s, 1.3 MB/s malcolm@malcolm-OptiPlex-780:~$ ls -l vms061-3* ⤶ -rw-rw-r-- 1 malcolm malcolm 215654400 Jun 10 21:37 vms061-3.iso malcolm@malcolm-OptiPlex-780:~$
I’ve not yet tried to use the ISO images that I made from the second and third CDs.
Using the ISO image in SIMH
I was able to use the VAX/VMS 6.1 ISO image (vms061-1.iso) to install VMS in the SIMH MicroVAX 3900 simulator. My configuration was fairly straight forward: Drive DUA0 was a simulated RA82 hard drive, and drive DUA3 was a simulated RRD40 CDROM drive. The simulator was V4.0-0 Beta, with git commit id: 3a4e879c.
For reference purposes, here are some files that may be helpful in replicating this process:
You will need a VAX-VMS “Product Authorization KEY” (or “PAK”) to run VAX/VMS. These are as at March 2016 still available free of charge for Hobbyist use from HP. The process of applying for a Hobbyist PAK is a little convoluted, so I won’t go into detail about it here. HP seem to be very responsive in delivering the PAKs and responding to follow up emails. The only downsides are: (1) the PAKs are only good for 12 months, so you’ll need to apply for new ones each year; and (2) HP will provide links to download VMS and the layered products but only for the latest versions.
You will be given the option to install PAKs during the VMS install process. If you have the PAKs available, it’s a good idea to enter the VAX-VMS PAK then. I’d also install the DVNETRTG PAK (needed for DECnet Level 2 routing). However, both of these PAKs are entirely optional during the install process. You can always install them later, after you boot into your newly installed VMS 6.1 environment.
Burning a CD from an ISO image
I was unable to get the “dd” command to write out an image to the CDROM drive. It complained that the drive was read only (which it isn’t).
But the “wodim” command did succeed in writing the ISO image out to the CD/DVD writer.
Here’s the dialog:
malcolm@malcolm-OptiPlex-780:~$ wodim dev=/dev/sr0 vms061-1.iso ⤶ wodim: No write mode specified. wodim: Assuming -tao mode. wodim: Future versions of wodim may have different drive dependent defaults. wodim: Operation not permitted. Warning: Cannot raise RLIMIT_MEMLOCK limits. Device type : Removable CD-ROM Version : 5 Response Format: 2 Capabilities : Vendor_info : 'PLDS ' Identification : 'DVD+-RW DH-16AAS' Revision : 'JD12' Device seems to be: Generic mmc2 DVD-R/DVD-RW. Using generic SCSI-3/mmc CD-R/CD-RW driver (mmc_cdr). Driver flags : MMC-3 SWABAUDIO BURNFREE FORCESPEED Supported modes: TAO PACKET SAO SAO/R96P SAO/R96R RAW/R16 RAW/R96P RAW/R96R Speed set to 8468 KB/s Starting to write CD/DVD at speed 48.0 in real TAO mode for single session. Last chance to quit, starting real write in 0 seconds. Operation starts. Track 01: Total bytes read/written: 426868736/426868736 (208432 sectors). malcolm@malcolm-OptiPlex-780:~$
See the numbers at the end of the above dialog? If you divide 426868736 by 208432, it gives a sector size of 2048 bytes. But when I read the CD back in using the dd command, it shows a block size of 512 (426868736 divided by 833728). So I’m really not sure what is going on here.
However all of this block size confusion doesn’t seem to matter much, as shown in the next section below.
Using the newly burned CD on a MicroVAX 3100 Model 90
When I take the CD that’s just been made and load it into a DEC RRD43 CDROM drive (which is actually a DEC re-badged Toshiba XM-4101B) attached to my MicroVAX 3100 Model 90, I was successful in installing VMS 6.1 on a DEC RZ23 SCSI hard drive inside the MicroVAX.
I’ve not included the dialog showing the install process on the MicroVAX 3100 Model 90 in this post, as it is very similar to the dialog shown above for the SIMH MicroVAX 3900.
26 June 2016: Posted initial version
13 August 2016: Inserted new section showing how to identify connected CDROM drives