Thursday, April 23, 2020

Installing and Executing DFU - the awesome ODS-2 Disk and File Utilities for OpenVMS VAX and Alpha

SANYALnet Labs: DFU disk defragmentation and file utility tool for Digital Equipment Corporation DEC VAX Server VMS and OpenVMS VAX and Alpha AXP
DFU for VMS Main Menu

Introduction to DFU


The online help for DFU provides a great introduction to the tool:

"The ODS-2 Disk and File Utilities (DFU) is a collection of high performance utilities developed to perform routine maintenance and special purpose operations on disks, files and directories. The functionality offered by DFU is not or partly available through other DCL commands or VMS utilities.

DFU has the following functions:

  • DEFRAGMENT : defragment individual files
  • DELETE   : delete files by file-id, and delete directory(trees) fast
  • DIRECTORY functions
    • COMPRESS , DUMP or RECOVER directories
    • Search directories for files with multiple versions, alias files or empty directories
  • INDEXF   : analyze , defragment truncate and extend INDEXF.SYS
  • REPORT     : reports disk fragmentation
  • SEARCH   : search for files
  • SET        : set file attributes
  • UNDELETE   : recover deleted files
  • VERIFY   : analyze (and repair) the disk structure"

Installing DFU on OpenVMS VAX 7.3

The DFU tool for VAX servers running OpenVMS operating system is available free online for download. I installed it on MARIAH (31.70) - my real MicroVAX 3100-80.

To download DFU VAX:

[localuser@linuxpc tmp]$ wget https://www.digiater.nl/openvms/freeware/v50/dfu027a/dec-vaxvms-dfu-v0207-a-1.pcsi
--2020-04-21 03:13:50--  https://www.digiater.nl/openvms/freeware/v50/dfu027a/dec-vaxvms-dfu-v0207-a-1.pcsi
Resolving www.digiater.nl (www.digiater.nl)... 185.92.71.114
Connecting to www.digiater.nl (www.digiater.nl)|185.92.71.114|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 974848 (952K)
Saving to: ‘dec-vaxvms-dfu-v0207-a-1.pcsi’

100%[======================================>] 974,848     62.7KB/s   in 13s

2020-04-21 03:14:04 (73.5 KB/s) - ‘dec-vaxvms-dfu-v0207-a-1.pcsi’ saved [974848/974848]

Then FTP the PCSI installer to the VAX:

[localuser@linuxpc tmp]$ ftp 10.42.2.5
Connected to 10.42.2.5 (10.42.2.5).
220 sanyalnet-vax.sanyalnet.lan FTP Server (Version 5.1) Ready.
Name (10.42.2.5:localuser): sanyal
331 Username sanyal requires a Password
Password:
230 User logged in.
Remote system type is VMS.
ftp> cd temp
250-CWD command successful.
250 New default directory is DUA1:[SANYAL.TEMP]
ftp> bin
200 TYPE set to IMAGE.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> put dec-vaxvms-dfu-v0207-a-1.pcsi
local: dec-vaxvms-dfu-v0207-a-1.pcsi remote: dec-vaxvms-dfu-v0207-a-1.pcsi
227 Entering Passive Mode (10,42,2,5,192,20)
150 Opening data connection for DUA1:[SANYAL.TEMP]DEC-VAXVMS-DFU-V0207-A-1.PCSI; (10.42.2.11,43577)
########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
226 Transfer complete.
974848 bytes sent in 0.49 secs (1987.70 Kbytes/sec)
ftp> bye

Then log into the VAX and install DFU.

DUA1:[SANYAL.TEMP] dir *.pcsi

Directory DUA1:[SANYAL.TEMP]

DEC-VAXVMS-DFU-V0207-A-1.PCSI;1

Total of 1 file.
DUA1:[SANYAL.TEMP] product install *

The following product has been selected:
    DEC VAXVMS DFU V2.7-A                  Layered Product

Do you want to continue? [YES]

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 DFU V2.7-A: Disk and File Utilities for OpenVMS

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

    DEC VAXVMS VMS V7.3 [Installed]

    * Configuration options for this referenced product cannot
    * be changed now because the product is already installed.
    * (You can use PRODUCT RECONFIGURE later to change options.)

    Documentation in Text format [YES]

    Documentation in PostScript format [YES]

    Documentation in BookReader format [YES]

    Documentation in HTML format [YES]

Do you want to review the options? [NO]

Execution phase starting ...

The following product will be installed to destination:
    DEC VAXVMS DFU V2.7-A                  DISK$OPENVMS$7_3:[VMS$COMMON.]

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

The following product has been installed:
    DEC VAXVMS DFU V2.7-A                  Layered Product
DUA1:[SANYAL.TEMP]


Attempting to run DFU straightaway fails. We need the identifier DFU_ALLPRIV to be granted to the user.

DUA1:[SANYAL] dfu defrag vaxgames.sav

%DFU-E-NOPRIV, No privilege to perform this function (DFU_ALLPRIV not granted)

Proceed to grant the required identifier to the user.

DUA1:[SANYAL.TEMP] cd sys$system
SYS$SYSROOT:[SYSEXE] mc authorize
UAF>
UAF> grant/identifier DFU_ALLPRIV SANYAL
%UAF-I-GRANTMSG, identifier DFU_ALLPRIV granted to SANYAL
UAF> exit
%UAF-I-NOMODS, no modifications made to system authorization file
%UAF-I-NAFNOMODS, no modifications made to network proxy database
%UAF-I-RDBDONEMSG, rights database modified

LOGOUT  and log back in. Once the identifier is granted, DFU can be used.

$ set proc/priv=all
DUA1:[SANYAL] dfu defrag vaxgames.sav

┌──────────────────────────< DFU V2.7-A (Freeware) >───────────────────────────┐
│%DFU-I-DEFRAG, Start defragmenting file(s) ...                                │
│%DFU-S-MOVED, File DUA1:[SANYAL]VAXGAMES.SAV;2 defragmented                   │
│                                                                              │
│%DFU-I-READY, DEFRAG command ready                                            │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                             │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
├──────────────────────────────────Statistics──────────────────────────────────┤
│                                                                              │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘




DUA1:[SANYAL] dfu search dua2 /version_num=min=500


┌──────────────────────────< DFU V2.7-A (Freeware) >───────────────────────────┐

│%DFU-I-SEARCH, Start search on DUA2: (QCOCAL$DUA2:)                           │
│                                                                              │
│QCOCAL$DUA2:[FAL$SERVER]INTRUSIONS.TXT;880 19/21                            │
│                                                                              │
│%DFU-I-EOF, End of file INDEXF.SYS, Primary headers : 3491                    │
│                                                                              │
│%DFU-S-FND , Files found : 1, Size : 19/21                                    │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                             │
│                                                                              │ 
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
├──────────────────────────────────Statistics──────────────────────────────────┤
│  Progress : |                       100%                       |             │
│  Status   : READY                                                            │
└──────────────────────────────────────────────────────────────────────────────┘





Installing DFU on OpenVMS Alpha 8.3


Installing DFU on OpenVMS/Alpha is just like installing on VAX VMS. I installed it on RAPTOR (31.18) - an AlphaServer ES40 833 MHz running OpenVMS Alpha 8.3:

$ SHOW CPU

System: RAPTOR, AlphaServer ES40 833 MHz

CPU ownership sets:
   Active            0
   Configure         0

CPU state sets:
   Potential         0
   Autostart         0
   Powered Down      None
   Not Present       None
   Failover          None
$


First, download the OpenVMS/Alpha edition of DFU on a local Linux machine:

[localuser@linuxpc ~]$ wget https://www.digiater.nl/openvms/freeware/v70/dfu/dec-axpvms-dfu-v0301-1-1.pcsi
--2020-04-22 01:45:43--  https://www.digiater.nl/openvms/freeware/v70/dfu/dec-axpvms-dfu-v0301-1-1.pcsi
Resolving www.digiater.nl (www.digiater.nl)... 185.92.71.114
Connecting to www.digiater.nl (www.digiater.nl)|185.92.71.114|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1392640 (1.3M)
Saving to: ‘dec-axpvms-dfu-v0301-1-1.pcsi.1’

100%[======================================>] 1,392,640    138KB/s   in 13s

2020-04-22 01:45:57 (104 KB/s) - ‘dec-axpvms-dfu-v0301-1-1.pcsi.1’ saved [1392640/1392640]

Then FTP the DFU PCSI installer to the Alphaserver:

[localuser@linuxpc ~]$ ls *pcsi
dec-axpvms-dfu-v0301-1-1.pcsi  dec-vaxvms-dfu-v0207-a-1.pcsi
[localuser@linuxpc ~]$ ftp 10.42.2.12
Connected to 10.42.2.12 (10.42.2.12).
220 raptor.sanyalnet.lan FTP Server (Version 5.6) Ready.
Name (10.42.2.12:localuser): sanyal
331 Username sanyal requires a Password
Password:
230 User logged in.
Remote system type is VMS.
ftp> bin
200 TYPE set to IMAGE.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> put dec-axpvms-dfu-v0301-1-1.pcsi
local: dec-axpvms-dfu-v0301-1-1.pcsi remote: dec-axpvms-dfu-v0301-1-1.pcsi
227 Entering Passive Mode (10,42,2,12,192,16)
150 Opening data connection for SYS$SYSDEVICE:[SANYAL]dec-axpvms-dfu-v0301-1-1.pcsi; (10.42.2.11,37666)
################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
226 Transfer complete.
1392640 bytes sent in 0.241 secs (5784.11 Kbytes/sec)
ftp>  bye
221 Goodbye.


Invoke the PCSI installer as usual:


$ DIR *.PCSI

Directory SYS$SYSDEVICE:[SANYAL]

dec-axpvms-dfu-v0301-1-1.pcsi;1

Total of 1 file.
$


$ PRODUCT INSTALL *
%PCSI-I-CANNOTVAL, cannot validate RAPTOR$DKA0:[SANYAL]dec-axpvms-dfu-v0301-1-1.
pcsi;1
-PCSI-I-NOTSIGNED, product kit is not signed and therefore has no manifest file

The following product has been selected:
    DEC AXPVMS DFU V3.1-1                  Layered Product

Do you want to continue? [YES]

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 AXPVMS DFU V3.1-1: Disk and File Utilities for OpenVMS Alpha

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

    DEC AXPVMS VMS V8.3 [Installed]

    * Configuration options for this referenced product cannot
    * be changed now because the product is already installed.
    * (You can use PRODUCT RECONFIGURE later to change options.)

    Documentation in Text format [YES]

    Documentation in PostScript format [YES] NO

    Documentation in Adobe (R) PDF format [YES] NO

    Documentation in HTML format [YES] NO

Do you want to review the options? [NO]

Execution phase starting ...

The following product will be installed to destination:
    DEC AXPVMS DFU V3.1-1                  DISK$ALPHASYS:[VMS$COMMON.]

Portion done: 0%...10%...20%...60%...70%...100%

The following product has been installed:
    DEC AXPVMS DFU V3.1-1                  Layered Product
$
$ DIR SYS$SYSTEM:DFU.EXE

Directory SYS$COMMON:[SYSEXE]

DFU.EXE;1

Total of 1 file.

Define a symbol to make running DFU easier (this same symbol can be defined in SYS$MANAGER:SYLOGIN_VMS.COM too), and away we go running the great tool.


$ DFU :== "$SYS$SYSTEM:DFU.EXE"

$ DFU HELP

┌─────────────────────────────< DFU Help Screen >──────────────────────────────┐
│                                                                              │
│DFU                                                                           │
│                                                                              │
│                                                                              │
│  The ODS-2 Disk and File Utilities is a high performance utility             │
│  developed to perform routine maintenance and special purpose operations     │
│  on disks, files and directories. The functionality offered by DFU           │
│  is not or partly available through other DCL commands or VMS utilities.     │
│                                                                              │
│  DFU has the following functions:                                            │
│                                                                             │
│    o DEFRAGMENT : defragment individual files                                │
│    o DELETE   : delete files by file-id, and delete directory(trees) fast    │
│    o DIRECTORY functions                                                     │
│          : COMPRESS , DUMP or RECOVER directories                            │
│          : search directories for files with multiple versions ,             │
│             alias files , or empty directories                               │
│    o INDEXF   : analyze , defragment truncate and extend INDEXF.SYS          │
│    o REPORT     : reports disk fragmentation                                 │
│                                                                              │
│Press RETURN to continue...                                                   │
└──────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────< DFU Help Screen >──────────────────────────────┐
│    o SEARCH   : search for files                                             │
│    o SET        : set file attributes                                        │
│    o UNDELETE   : recover deleted files                                      │
│    o VERIFY   : analyze (and repair) the disk structure                      │
│                                                                              │
│                                                                              │
│                                                                              │
│  Additional information available:                                           │
│                                                                              │
│  New_features          Restrictions        DEFRAG   DELETE                   │
│  DIRECTORY  EXIT       HELP       INDEXF     REPORT   Screen_Management      │
│  SEARCH     SET        SPAWN      UNDELETE   VERIFY                          │
│                                                                             │
│DFU Subtopic?                                                                 │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                             │
│                                                                              │
│                                                                              │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘



$ DFU

┌────────────────────────────────< DFU V3.1-1 >────────────────────────────────┐
│                                                                              │
│     Disk and File Utilities for OpenVMS V3.1-1                               │
│     DFU functions are :                                                      │
│                                                                              │
│     DEFRAGMENT : Defragment files                                            │
│     DELETE : Delete files by File-ID; delete directory (trees)              │
│     DIRECTORY  : Manipulate directories                                      │
│     INDEXF : Modify /View INDEXF.SYS                                        │
│     REPORT : Generate a complete disk report                                │
│     SEARCH : Fast file search                                               │
│     SET : Modify file attributes                                            │
│     UNDELETE : Recover deleted files                                        │
│     VERIFY : Check and repair disk structure                                │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
├──────────────────────────────────Statistics──────────────────────────────────┤
│                                                                              │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘
 DFU> exit
$

$ DFU SEARCH DKA0 /VERSION=MINIMUM=2000

┌────────────────────────────────< DFU V3.1-1 >────────────────────────────────┐
│%DFU-I-SEARCH, Start search on DKA0: (RAPTOR$DKA0:)                           │
│                                                                              │
│RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG;28983 2/16                       │
│RAPTOR$DKA0:[SYS0.TCPIP$SMTP]TCPIP$SMTP_RECV_RUN.LOG;32767                    │
│                                                                2/16          │
│RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG;28984                2/16          │
│RAPTOR$DKA0:[SYS0.TCPIP$NTP]TCPIP$NTP.DRIFT;17209 1/16                      │
│RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG;28981 2/16                       │
│RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG;28982        2/16                 │
│RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG;28980 2/16                       │
│                                                                             │
│%DFU-I-EOF, End of file INDEXF.SYS, Primary headers : 11455                   │
│                                                                              │
│%DFU-S-FND , Files found : 7, Size : 13/112                                   │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
├──────────────────────────────────Statistics──────────────────────────────────┤
│  Progress : |                       100%                       |             │
│  Status   : READY                                                            │
└──────────────────────────────────────────────────────────────────────────────┘

$
$ DFU DEFRAG RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG

┌────────────────────────────────< DFU V3.1-1 >────────────────────────────────┐
│%DFU-I-DEFRAG, Start defragmenting file(s) ...                                │
│%DFU-S-MOVED, File RAPTOR$DKA0:[SYS0.NML$SERVER]NETSERVER.LOG;28984 defragment│
│ed                                                                            │
│                                                                              │
│%DFU-I-READY, DEFRAG command ready                                            │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                             │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
│                                                                              │
├──────────────────────────────────Statistics──────────────────────────────────┤
│                                                                              │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

$

My own 27-year old classic Digital DEC MicroVAX 3100-80 + VT-220 terminal and keyboard with StorageWorks disk array, DLT tape drive, RRD42 CD-ROM drive, DECnet over BNC and AUI networking with a Raspberry Pi, MMJ and DB25/DB9 serial interfacing to a PC and more

Supratim Sanyal's Blog: MicroVAX 3100-80 Installation Guide for HECnet node MARIAH
MARIAH (31.70) - My MicroVAX 3100-80


This post is a work in progress - notes being captured here ....


MMJ

VAX has 3 MMJ connectors

Part number for MMJ-male to MMJ-male crossover cable is BC16E

MMJ #0 connects to OPA0:

MMJ to serial adapter for connecting to PC serial port; PC serial port is male DB9 9-pin.

- MMJ female to 9-pin RS-232 DB9 female adapter: Digital part number H8571-J

Serial

VAX has one 25-Pin RS-232 DB25 Male connector

- Female DB25 RS232 to female MMJ adapter part number: H8575-A. MMJ cable can be plugged into this. Other end of MMJ cable can be plugged into the H8571-J adapter for connecting to PC DB9 serial port.

Currently connected via BCC09 cable and NULL modem adpater to PC masquerading as a printer (described more further down in this post).

SCSI

The Digital StorageWorks SCSI connector is HD-50 type.


Reference: https://www.lammertbies.nl/comm/cable/dec-mmj#h71j (PDF Here).


Enclosure


BA42B enclosure: 18.259843 inches Wide, 5.9015748 inches High, 15.748 inches Deep


Dimensions:46.38x14.99x40.00 cm (WxHxD) 16kgBus details:No bus
Drive bays:Five - unknown size (?)Power supply:Unknown (?)
Used in:MicroVAX 3100 M20MicroVAX 3100 M20eVAXstation 3100 M40, and VAXstation 3100 M48
Last updated:1998-01-24
Reference:


BURN ISO ON Mac OS X AT 1X or 2X SPEEDS

OpenVMS images work best when burnt to CD-R at very low speeds - 1x or 2x. On Mac OS X High Sierra, the following command line from terminal shell prompt writes an ISO image to a blank CDR at 2X speed:

hdiutil burn -testburn -imagekey diskimage-class=CRawDiskImage -speed 2 Downloads/DEC\ VMS\ 5.5-2H4\ \(Jul\ 1993\)\ \[VAX\]\ \(ISO\)/VMS\ 552h4\ VAX.iso

Remove the "-testburn" switch to turn the laser on (i.e. actually burn the image to the CD instead of a simulation run).


SYS$PRINT Print Queue to TTA2: DB25 Serial Port connected to PC RS-232 DB9 accessible via minicom


Cable: DEC BCC05

Connection: DB25 to MicroVAX's TTA2: port; DB9 to NULL modem adapter; NULL modem adapter to PC DB9 RS-232 serial connector. BCC05 details (re: http://antinode.info/dec/console_cable.html):

Cable number              BCC05                      BCC08
                  ----------+----------      ----------+----------
Connector label        PR1  |    PR               PR1  | CONSOLE
                  ----------+----------      ----------+----------
Connector type       DB-9-F | DB-25-F           DB-9-F | DB-25-F
                  ----------+----------      ----------+----------
Signal, pin        PGND  1  |  1  PGND         PGND  1 |  1  PGND
                    TXD  2  |  3  RXD           TXD  2 |  3  RXD
                    RXD  3  |  2  TXD           RXD  3 |  2  TXD
                    RTS  4  |  5  CTS           RTS  4 |  5  CTS
                    DTR  5  |  6  DSR           DTR  5 |  6  DSR
                  ----------+----------      ----------+----------
                    DSR  6  | 20  DTR           DSR  6 | 20  DTR
                   SGND  7  |  7  SGND         SGND  7 |  7  SGND
                         8  | --                 ,-- 8 | --
                         9  | --                 `-- 9 | --


   As the connector labels suggest, the BCC05 is used with a printer,
and the BCC08 enables the printer port as a serial console port.


Setup Print Queue on OpenVMS 7.3:

$ define/system $printer _tta2:

$ SET TERMINAL $PRINTER /PERMANENT /NOBROADCAST /NOTYPEAHEAD /NOWRAP /SPEED=(19200) /WIDTH=(80) /PAGE=(24) /DEVICE_TYPE=(VT102) /NOMODEM

$ SET DEVICE /SPOOLED=(SYS$PRINT, SYS$SYSDEVICE) $PRINTER

$ INITIALIZE/QUEUE/DEFAULT=(FLAG,TRAILER=ONE) /ON=$PRINTER SYS$PRINT

$ start/queue sys$print

SEE https://gist.github.com/tuklusan/f36d366b5bd5038f1a2e2ba9c961d9a4 for example output.