Preparing a Disk Image
Physical Disks
Logical Disks
Virtual Disks
Creating the Logical Disk Container
File
Bootable Disks
"Burning" the CD-R
CD-ROM Writing Software for OpenVMS
CDRECORD for OpenVMS
Writing CD-ROMs Using an InfoServer
Gear for Windows
Adaptec Easy CD Creator
Dual-Format (ISO-9660, ODS) CDs
ISO-9660 Vs. ODS
Creating an ISO-9660 Image
Summary
Related Links
The first step in writing an OpenVMS CD is to prepare a disk image. This includes building the directory tree and, if the disk will be bootable, writing the boot block. When the disk image is ready to be "cast in stone", and the CD-R will be burned on another machine, transfer the resulting disk image file to the system where you have software for burning the CD-ROM. Remember that all the file transfers MUST be done using BINARY mode (where appropriate).
There are at least three ways to prepare a disk image.
We will discuss these three here:
The easiest way to prepare the "image" of a CD-ROM disk is to copy your files onto a small disk drive, such as an RZ25 (about 450 MB). You can even use something as small as an RD54 (about 154 MB), if that's all you need. An InfoServer partition can also serve this purpose.
Just prepare your directory tree on a small disk drive. When you're satisfied that you're ready to "cast in stone" the work you've prepared, DISMOUNT the disk (preferably /NOUNLOAD), MOUNT it /FOREIGN and COPY the device to a file:
Example:
$ MOUNT/NOASSIST/FOREIGN ddcu:
$ COPY ddcu: CDROM.DSK
$ DISMOUNT/NOUNLOAD ddcu:
Although the COPY command will terminate with an error, the output file is complete and intact. If the CD-R will be burned on another machine, transfer the resulting file to the system where you have software for burning the CD-ROM. Remember that all the file transfers MUST be done using BINARY mode (where appropriate). Note that this is not necessary when using an InfoServer to burn CD-Rs.
You can also prepare your directory tree on a logical disk - a file on disk which can be logically connected to a virtual disk device.
First, you will need to install the Logical Disk software (freeware from Digital).
Simply create the logical disk container file and connect it to an LD device. See the following discussions of logical and virtual disks.
Glenn Everhart has a Virtual Disk driver and a program to "connect" Virtual Disk container files that you create using COPY/CONTIGUOUS or SYSGEN to virtual devices. Virtual disk container files MUST be contiguous.
The method of creating and connecting Virtual Disk containers is slightly different compared to Logical Disk containers. The CONNECT subcommand of the LD command provided with the Logical Disk driver software creates the logical device for you. With the Virtual Disk driver, you must create the device yourself.
The geometry considerations for virtual disk containers are slightly different. The CREATE subcommand of the LD command provided with the Logical Disk driver can be used to create and erase a container file of any suitable size that meets your needs. The size should be a multiple of 96 blocks. You must create Virtual Disk container files yourself. For example:
$ COPY NLA0: CDROM.DSK/ALLOC=90144/CONTIGUOUS
$ SET FILE/ATTRIB=(EFB=90145,FFB=0,RFM=FIX,LRL=512)
CDROM.DSK
Use SET FILE/ATTRIBUTES to set the End-of-File Block and First Free Byte pointers, as well as the Record ForMat and the Longest Record Length.
See the Virtual Disk driver "readme" files for more information. Otherwise, using Virtual Disk container files is the same as using Logical Disk container files. You can INITIALIZE and MOUNT them, COPY (or BACKUP) to them and DISMOUNT them.
For our purposes here, we'll discuss Logical Disks and container files.
Creating the Logical Disk Container File
There are 2048 disk blocks in a megabyte. A full 650 MB CD-ROM would represent 1,331,200 disk blocks.
The size of your Logical Disk container file MUST
be a multiple of 96 blocks. This satisfies three important criteria:
Example:
$ LD CREATE CDROM.DSK/SIZE=921600 ! 450 MB
$ LD CONNECT CDROM.DSK LDA1:
$ INIT LDA1: CDROM/CLUS=1/SYSTEM
$ MOUNT/NOASSIST LDA1: CDROM
(Create your directory tree on LDA1:)
$ DISMOUNT/NOUNLOAD LDA1:
$ LD DISCONNECT LDA1:
When you're satisfied that you're ready to "cast in stone" the work you've prepared, and the CD-R will be burned on another machine, transfer the resulting logical disk container file to the system where you have software for burning the CD-ROM. Remember that all the file transfers MUST be done using BINARY mode (where appropriate).
Note that OpenVMS normally expects its system (boot) disk to be writeable. This is not the case with CD-ROMs. Although you can boot from a properly made CD, the system will be only marginally usable.
There is something you can use for OpenVMS-VAX. One good application for this is what was once known as "stand-alone BACKUP". The STABACKIT.COM procedure which is found in the SYS$UPDATE path doesn't care if you try to build the SYSE root on a logical or virtual disk, so go for it!
If you're trying to build a bootable "stand-alone" interactive VMS on a CD, however, you'll need to find some way to overcome the "ROM" nature of CD-ROM.
We're looking into the "minimal OpenVMS" environment found on the newer installation CDs for VAX and Alpha. When we come up with a way to build such an environment, we'll post details here.
There is some software available for OpenVMS. Primarily, this is the CDRECORD program which has been ported to OpenVMS from the Linux world.
CD-R can also be written using InfoServers having CD-R drives.
For Windows/9x, there exists Adaptec's Easy CD Creator,
a program called Gear, WINonCD, and some other programs. Easy CD Creator
will only process ODS (ODS-2 or ODS-5) images if they have an embedded
ISO-9660 filesystem. See the dual-format area of this section for more
information. For this discussion, we'll focus on CDRECORD for OpenVMS,
Gear for Windows and Easy CD Creator.
CD-ROM Writing Software for OpenVMS
We are aware of the CDWRITE and CDRECORD software (freeware) for OpenVMS. These are programs that can be used to write CD-R discs using a CD-R recorder attached to an OpenVMS System.
Brian Schenkenberger has posted links to pre-built executables of CDRECORD for VAX (OpenVMS V6.0 and later) and Alpha (OpenVMS-Alpha V7.2 and later). This cautionary note about the MicroVAX 3100s was shamelessly lifted from Brian's web page, with one small edit for clarity:
"NOTE: When attempting to run CDRECORD on MicroVAX/VAXstation 3100 series machines, you must use the OpenVMS GKDRIVER. The DKDRIVER/PKNDRIVER combination on MicroVAX/VAXstation 3100 series machines will not properly handle the SCSI commands sent via IO$_DIAGNOSE $QIOs in CDRECORD. MicroVAX/VAXstation 4000 series machines do not have this limitation and CDRECORD can be used there with the device configured with the DKDRIVER. "
What he means is this: If your CD-R recorder is, for example, DKA500, then you must do this to make a suitable device available in OpenVMS-VAX on a MicroVAX-3100 series machine (including VAXtation3100s):
$ RUN SYS$SYSTEM:SYSGEN
SYSGEN> CONNECT GKA500/DRIVER=GKDRIVER
SYSGEN> EXIT
...or in your SYSTARTUP_VMS.COM file, you can include a command like this:
$ MCR SYSGEN CONNECT GKA500/DRIVER=GKDRIVER
GKDRIVER will get the information it needs (port, target, LUN) from the device name specified on the CONNECT command issued in SYSGEN. In the example, the "port" is the "A" SCSI controller, the target is SCSI ID 5 and the LUN is zero.
CD-ROM writing can also be done using DOS/Win, Win/9x,
Win/NT or UN*X.
Documentation on CDRECORD remains a bit scarce, and this author has no first hand experience with CDRECORD. Thus, the following is based on the best available information.
CDRECORD on OpenVMS uses the same I/O technique as, for example the INITIALIZE command. That is, the device need not be MOUNTed. All you need to know is the "port, target,lun" information. You can obtain this from CDRECORD like so:
$ CDRE*CORD :== $ddcu:<dir>CDRECORD
! Make a "foreign" command
$ CDRECORD -SCANBUS
This should cause CDRECORD to display the SCSI devices it can see, along with their associated "port,target,lun" information. For example, DKA500 would be specified as "DEV=0,5,0"; that is controller "A" (0), SCSI ID 5, LUN 0.
To "burn" a CD-R then, the command syntax would look like this:
$ CDRECORD -V SPEED=x DEV=port,target,lun -DATA cd_image_filespec
...where:
"x" is the appropriate writing speed for your CD-R recorder
and media,
"port" is a number associated with the controller id.
of the CD-R drive (A=0, B=1, C=2, D=4)
"target" is the SCSI ID of the CD-R drive
"lun" is always zero(0) for OpenVMS
"cd_image_filespec" is the filespecification of your
file containing the image of the CD-ROM.
According to the Linux "CD-Writing
HOWTO: Burning CD-Rs", the "-data" qualifier is not mandatory.
However, this may not be true for the OpenVMS port. Again, this author
has no first-hand experience with CDRECORD.
Writing CD-ROMs Using an InfoServer
There is a technique for writing CD-ROMs which involves using an InfoServer; however, the InfoServer and its operating software are discontinued products. Support is not available (AFAIK) and documentation is scarce.
As far as this author has been able to gather, the technique involves setting up a partition of 650MB or less on the InfoServer to be used for the ODS container, then offering that as a service. Connect to it from the VMS system using ESS$LADCP (InfoServer client software, included in most newer OpenVMS releases), MOUNT the associated DAD device, and build the CD-ROM image on it. Dismount it when you're finished building and disconnect from the service.
Example:
(Create the target partition on the InfoServer and offer
it as a service.)
$ MCR ESS$LADCP BIND service_name
$ INIT DAD$service_name volume_label
$ MOUNT DAD$service_name volume_label
(Create the directory structure and COPY in your files.)
$ DISMOUNT/UNLOAD DAD$service_name
$ MCR ESS$LADCP UNBIND service_name
$ DEASSIGN DAD$service_name
Then, connect to the InfoServer's remote console and issue
the appropriate RECORD command(s). The InfoServer's on-line HELP may be
of some assistance in this process. InfoServer support for CD-R recorders
is limited to old and somewhat rare CD-R drives. The list of supported
drives was not available to this author when this version of this page
was published.
Gear is the only program of which this author is aware that will burn any file system container onto a CD-R, regardless of it's contents. There is Adaptec's Easy CD Creator; however, Easy CD Creator will only process "foreign" CD images if they have an embedded ISO-9660 filesystem. See the following section on burning dual-format (ISO-9660 and ODS) CDs. Gear is a commercial program and must be purchased. It is not freeware or shareware.
Gear can also be used to generate an ISO-9660 disk image. Here, we'll discuss how to use Gear to burn an ODS (only) disk image onto a CD-R.
After transferring your disk image file to your Windows machine, open the Gear program.
From the "Gear Project" drop-down list, select the "Open external physical image" option.
Under "Output Device", select the "Settings" button. This opens the "Recorder Settings" dialogue box. Under the "Common" tab, for the recording method, select "Disk at once" from the drop-down list; select the appropriate "Writing Speed" (no more than double speed (2x) is recommended).
Under "Gear Project", select the "Open" button. This opens a file-open dialogue box. Select the appropriate disk image file, and click "OK". This brings up the "External image parameters" dialogue box. From the "Image type" drop-down list, select "CD-ROM mode 1, sector size 2048". Then, click "OK".
At this point, the "Test" and "Write" buttons are no longer
greyed-out. Select the appropriate button for the function you wish to
perform.
The Easy CD Creator program for W/9x ships with many CD-R and CD-RW recorders. So, while it's not "free", at least it's a "no additional cost" item, sort of. Gear is also a commercial program and must be purchased. Easy CD Creator is a commercial program and must be purchased, though it is included with some CD-R and CD-RW recorders.
The Easy CD Creator program for W/9x will burn "Joliet" format CDs for DOS/Win, of course, but also has the ability to burn ISO-9660 format CDs. To burn CDs for OpenVMS using Easy CD Creator, you must have at least a small ISO-9660 filesystem embedded in your disk image.
When transferring your disk image file to your Windows machine, give the output file a ".ISO" filetype extension. Then, open Easy CD Creator, select "Create CD from Disk Image" from the File menu, and use the file open dialogue box to select the disk image file you want to burn onto a CD-R. (Note that you should select "ISO Image Files (*.iso)" in the "Files of type" list in order to find your disk image file.)
Then, set your CD recorder options as needed.
Note:
You must select the "Disk at once" option under the "Advanced"
tab on the "CD Creation Setup" dialogue box.
Dual-Format (ISO-9660, ODS) CDs
You can burn ODS (ODS-2, ODS-5) only CDs using the Gear program for Windows. See the reference above. You can burn dual-format (ISO-9660 and ODS-2 or -5) CDs using both Gear and Easy CD Creator.
Because of the way the ISO-9660 standard defines the format, dual-formatting is possible by building an ISO-9660 disk image and then embedding that within an ODS disk image.
Brian Schenkenberger's Dual Format CD-ROM page details how the embedding of an ISO-9660 filesystem into an ODS image is done.
We have a DCL procedure that can be used to perform the task of embedding an ISO-9660 filesystem into an ODS image. The procedure, called MKISOCD.COM, can be used to perform the calculations and do the actual embedding. See the README.TXT file within the compressed archive for specifics of how to use the procedure.
We are also aware of a technique called "co-mapping" which maps the ODS filesystem structures to the extents within the ISO-9660 image wherein the files reside. Caution must be exercised with this technique. When pre-staging the files before building the ISO-9660 image, all files must be converted to an "operating system transparent" format. Text files must be converted to Stream_LF format. All other files (.ZIP files, tarballs (.TGZ or .TAR_GZ), .GIF, .JPG, .TLB, .OLB, BACKUP savesets, etc.) must be converted to Fixed-512 format. This is because non-OpenVMS operating systems typically lack support for RMS. Even if the ISO-9660 filesystem structure did contain the RMS file and record attributes, non-OpenVMS operating systems would still lack support for RMS and the data would not be retrievable in a usable format in most, if not all, cases. Also, as of this writing, OpenVMS and RMS do not provide for storing file and record attributes in non-ODS filesystems. As a result of this, files other than text and binary (Fixed-512) should not be included in ISO-9660 images to be co-mapped.
The ODS-2 and ODS-5 filesystems were designed to accomodate the RMS file system, including file attributes, among other features. ISO-9660, however, was designed to accomodate no specific file structures or formats, but has certain accomodations built into the specification.
There is an instance of the MKISOFS program which has been ported to OpenVMS. Links to the software can be found on Brian Schenkenberger's OpenVMS CD writing information page. MKISOFS_VMS, to our knowledge, adds no functionality such as storing RMS file attributes so that OpenVMS can find them when the CD is MOUNTed using /MEDIA_FORMAT=CDROM. As far as this author knows, it simply provides the basic functionality of writing OpenVMS files into an ISO-9660 filesystem, regardless of the nature of the files or their contents. It is assumed, therefore, that all RMS attributes are lost, as is the ODS version number.
However, to this author's knowledge (as of this writing, Aug-1999), there is no software available which provides for storing RMS attributes within the ISO-9660 filesystem in such a way that RMS can find them in an ISO-9660 filesystem MOUNTed to an OpenVMS system, nor does OpenVMS or RMS include such support.
Thus, while ISO-9660 provides a common filesystem for OpenVMS and other operating systems, there is (to this author's knowledge) no direct, compatible interface between OpenVMS / RMS and other operating systems which do not natively support RMS.
As far as is currently known, for any non-OpenVMS operating system, no versions of MKISOFS currently exist which provide for embedding file attributes such as text or binary into an ISO-9660 filesystem, with such attributes encoded such that RMS can detect and respond to them.
As far as is currently known, for any version of the OpenVMS operating system, no versions of MKISOFS currently exist which provide for embedding file attributes, either RMS attributes or simple attributes such as text or binary, into an ISO-9660 filesystem, with such attributes encoded such that operating systems which do not natively support RMS can detect and respond to them.
If information contrary to these statements is discovered, details will be posted here as soon as they become available.
There are a few ways known to create an ISO-9660 image.
For OpenVMS, there's the MKISOFS_VMS program. It requires a minimum of OpenVMS V7.1 and may be a bit tricky to compile under most versions of DEC-C. It's freeware, so you can get it inexpensively. However, like most freeware, it's unsupported.
The MKISOFS_VMS program is ported from and native to the UN*X world. Pre-compiled binaries are sometimes available for *BSD and Linux. The MKISOFS_VMS link here points to an archive containing a pre-compiled and linked executable for use on OpenVMS-Alpha V7.1 and later.
Another way to create an ISO-9660 image would be to use a W/9x or W/NT machine to run a program such as Easy CD Creator to create an ISO-9660 image, then transfer that disk image file to your OpenVMS system. (Remember to transfer the disk image file as BINARY!)
In any case, once you have your ISO-9660 image, you can then follow Brian's instructions to embed it manually into an ODS disk image, or you can use the MKISOCD DCL procedure to do this for you.
The MKISOFS_VMS program can only store in an ISO-9660 filesystem those files which have either Stream or Fixed-512 format. No RMS attributes can be preserved. Thus, object files (other than object libraries), indexed files, relative files, VFC ("print format") files, etc. cannot be stored intact. They must first be archived using BACKUP, the Zip program for OpenVMS, the VMS LIBRARIAN or by some other means such that their attributes can be restored at a later time.
When preparing files to be stored in an ISO-9660 filesystem
using MKISOFS_VMS, be careful to observe the following guidelines to ensure
that all the files can be read on non-VMS systems.
The CONVERT/FDL command is useful for converting ASCII files to a suitable format for inclusion in an ISO-9660 filesystem image.
So, here are some summaries of how to produce ODS-only and ODS/ISO-9660 dual-format CD-ROMs:
Creating an ODS-Only Disk:
Creating an ODS/ISO-9660 Dual-Format Disk:
For logical/virtual disks, use COPY/OVERLAY to lay
the ISO-9660 image over the unINITIALZEd container file connect the container
file to a logical/virtual device.
For further information, see the earlier reference
on how to use Gear for Windows, Easy CD Creator or CDRECORD for OpenVMS.
Here are a couple of links to some other CD-ROM / CD-R pages we've discovered for OpenVMS:
http://www.cd-info.com/CDIC/Technology/CD-R/vms.html - Information Page describing Istvan Dosa's (Doffy's) DFY$VMSCD program.
http://www.tmesis.com/CDrom/ - Brian Schenkenberger's OpenVMS CD writing information page.
http://www.geocities.com/SiliconValley/Lakes/9999/vmscdwri.htmlOpenVMS
CD-writing page on Geocities.
"DJE Systems" is a service mark of David J. Dachtera, doing business
as DJE Systems.
This page Copyright ©1996 by David J. Dachtera, All Rights Reserved.