Al principio fué VMS, entonces Digital agregó POSIX y renombró el sistema operativo a OpenVMS. OpenVMS actualmente corre en CPU’s VAX y AXP (ALPHA). La versión 8.2 liberada a finales de 2005 corre también en máquinas Intel con CPU Itanium de 64-bit.

DEC introdujo VMS en 1977 como VMS/VAX con la primera computadora VAX-11/780. En 1992 se convirtió en OpenVMS con la introducción de las computadoras de 64-bit Alpha.

DEC desarrollo VMS y las VAX(en) juntos, no es difícil conectar varias VAX para que funcionen como una sola, esto se refleja también en el sistema operativo.

VMS utiliza un conjunto de comandos que son palabras en Ingles fáciles de recordar y cuenta con ayuda en linea muy extensa e intuitiva.

VMS significa “Virtual Memory System” que deriva de la técnica que utiliza para administrar la memoria: el uso de memoria virtual es la habilidad de dar a los programar acceso a mas memoria de la que tiene la computadora.

Digital Equipement Corporation fué adquirida por Compaq en 1998 y en 2002 Compaq y Hewlett-Packard se fusionarón.

Actualmente existen emuladores comerciales y open source tanto de VAX como Alpha, Charon-VAX y Charon-AXP son comerciales con licencias gratuitas para uso personal, corren en Windows y Linux. Del lado open source, |SIMH tiene emulación de VAX y Alpha ES40 emula Alpha.

OpenVMS en SIMH

  1. Instala SIMH HowtoSimh
  2. Crea un directorio de trabajo y copia ahí el ejecutable vax y la imagen de CPU ka655x
  3. Crea el archivo de inicialización de SIMH para OpenVMS VAX
  4. Instala OpenVMS

Archivo de inicialización de SIMH

; ; Load CPU microcode
load -r ka655x.bin
; ; Attach non-volatile RAM to a file
attach nvr nvram.bin
; ; This virtual machine has 64M memory
set cpu 64m
; ; Define disk drive types. RA92 is largest-supported VAX drive.
set rq0 ra92
set rq1 ra92
set rq2 ra92
set rq3 cdrom
;; Attach defined drives to local files
attach rq0 d0.dsk
attach rq1 d1.dsk
attach rq2 d2.dsk
; ; Attach the CD-ROM to its file (read-only)
attach -r rq3 cd.iso
; ; Disable unused devices. It's also possible to disable individual devices,
; using a construction like "set rq2 disable" if desired.
; set rl disable
set ts disable
; ; Attach Ethernet to a network interface
set xq mac=08-00-2B-AA-BB-CC
attach xq eth0
; ; Now start the emulator
boot cpu

Inicia la simulación

./vax VAX simulator V3.8-1 NVR: creating new file NVR: buffering file in
memory RQ: creating new file RQ: creating new file RQ: creating new file
RQ: unit is read only Eth: opened eth0


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.

Inicia desde el CD-ROM

>>>boot dua3
(BOOT/R5:0 DUA3



  -.  -DUA3 -.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

Ingresa la fecha y hora cuando se requiera

OpenVMS (TM) VAX Version X7G7 Major version id %WBM-I-WBMINFO Write
Bitmap has successfully completed initialization.  PLEASE ENTER DATE AND
TIME (DD-MMM-YYYY  HH:MM)

Despues de ingresar fecha y hora y revisar que todos los dispositivos esten disponibles, te encuentras en un sistema “standalone” utilizado para respaldo y recuperación.

Restaura el sistema desde el CD-ROM

{i} '''''HELP
backup_command''

%BACKUP-I-IDENT, Stand-alone BACKUP T7.2; the date is 16-JUN-2011
13:15:24.93 $ backup dua3:vms073.b/save_set dua0:

Hasta este punto el sistema ha sido copiado a tu disco duro virtual, deten ( CTRL+E ) la simulación para re-iniciar la máquina virtual y continuar con la instalación.

If you do want to perform another standalone BACKUP operation, ensure
the standalone application volume is online and ready.  Enter "YES" to
continue: Simulation stopped, PC: 839ABD34 (CLRL R6) sim> boot cpu


?C6 2 03 FF 00 0000

P1=20140100  P2=00000000  P3=20084004  P4=00000000  P5=20084000
P6=00000000  P7=00000004  P8=00D40077  P9=0000000F P10=00000000
r0=00D40077  r1=2014079C  r2=201404B2  r3=201407A4  r4=2004D2F0
r5=2004D310  r6=2004D317  r7=00000000  r8=00000000 ERF=80000000


KA655-B V5.3, VMB 2.7 Performing normal system tests.  40..39..38..

?33 2 01 FF 00 0001

P1=00000000  P2=00000000  P3=00000000  P4=00000000  P5=00000000
P6=00000000  P7=00000000  P8=00000000  P9=0000000F P10=00000000
r0=80000017  r1=20080100  r2=00000012  r3=20140784  r4=2004D534
r5=2004D54E  r6=20055157  r7=00000000  r8=00000000 ERF=80000000
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..  Normal operation not possible.

Inicia desde el disco duro

set boot dua0 boot (BOOT/R5:0 DUA0



  -.  -DUA0 -.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-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
%WBM-I-WBMINFO Write Bitmap has successfully completed initialization.

           OpenVMS VAX V7.3 Installation Procedure

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



* Please enter the date and time (DD-MMM-YYYY HH:MM)

Login

“Logging on” a una computadora OpenVMS lleva a cabo dos funciones pricipales. Primero prepara la computadora para aceptar comandos y segundo le hace saber a la computadora quien eres. Permitiendole saber cuales son los recursos y archivos que tienes permitido accesar.

Para conectarse a un sistema VMS debemos contar con nuestro Username y Password, lo mismo aplica si estamos accediendo desde una terminal conectada directamente a la computadora o a traves de la red por ejemplo con Telnet o Secure SHell (SSH).

 Welcome to OpenVMS (TM) Alpha Operating System, Version V8.3

Username:

Es común que después de un acceso exitoso, se desplieguen en la terminal mensajes del administrador del sistemas con anuncios importantes u otra información de utilidad para los usuarios. Al terminar debe mostrarnos el prompt que normalmente es un signo $

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

             WELCOME to CCSS Interactive Learning this is the OpenVMS
             Alpha Lab System

            This system is provided by Stromasys SA.

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

$

Logout

Para terminar la sesión de trabajo en el sistema siempre debes cerrar todos los programas y utilizar el comando LOGOUT o LO, para evitar perdida de datos o daño al sistema de archivos.

$ LOGOUT Connection closed by foreign host.P-2011 15:34:06.04

Cambiar password

Para cambiar el password utiliza el comando SET PASSWORD, algunos sistemas implementan todas o algunas de las siguientes reglas para los passwords:

  • El password no puede ser el mismo que el anterior.
  • El password no puede ser el mismo que el username.
  • Password history, el nuevo password no puede haber sido usado por el mismo usuario en ‘‘N’’ número de meses.
  • Password dictionary, el password no puede ser una palabra en el diccionario Inglés.
  • Password dictionary, el password es una palabra agregada al diccionario de passwords por el administrador del sistema.
$ SET PASSWORD Old password: New password: Verification: $

Como se menciono, no es raro encontrar los sistemas VMS en configuración de cluster, para acceder a otro nodo dentro del mismo cluster usamos el comando ‘‘SET HOST’’ que conecta tu terminal a traves del procesador del host actual a otro procesador, llamado el procesador remoto. Es requisito tener una cuenta de usuario en el procesador remoto.

MANSON $ SET HOST GEIN

DIGITAL Command Language (DCL)

OpenVMS DCL es el lenguaje desarrollado por DEC para decirle a VMS que hacer, los archivos de comandos de VMS se llaman “DCL command procedures”.

La mayoría de los comandos DCL son palabras en Inglés pero es posible escribir solo las primeras 3 o 4 letras de un comando DCL ya que ningún comando inicia con las mismas 4 letras.

VMS no es sensible a Mayusculas y Minusculas, por lo tanto es posible escribir nombres de archivos y comandos en minusculas o mayusculas o una conbinacion de ambas, VMS los transforma en Mayusculas.

Historia de comandos

OpenVMS recuerda los comandos que se han tecleado y pueden usarse nuevamente presionando la ‘‘tecla de flecha arriba’’. Por lo menos 20 comandos se guardan. También podemos usar la ‘‘flecha abajo’’.

El comando ‘‘RECALL/ALL’’ muestra una lista de todos los comandos en el buffer.

Total of 3 files.  $ RECALL/ALL 1 DIR 2 RECALL/ALL

Ejecuta un comando en el historial.

$ RECALL 1 $ DIR

Directory DISK$USERDISK:[ECELIS]

CC-001.DIR;1        MAIL.MAI;1          WORK.DIR;1

Total of 3 files.

Limpiar el buffer

$ RECALL/ERASE

Discos

Los discos también llamados dispositivo en OpenVMS se identifican por el nombre del disco seguido por ‘’’:’’’ y su nombre puede ser de hasta 255 caracteres. OpenVMS puede representar directorios como dispositivos de disco.

Nombres típicos par los discos pueden ser:

’'’DKA100:’’’ (este es un nombre de hardware asignado al momento del incio por la computadora)

’'’DSA2:

’'’USER$:

’'’DISK$SYSTEM:

Estos 3 últimos son nombres de dispositivo creados por un programador para ser descriptivos de su localización, función, propietario, etc.

Nombres lógicos son cadenas de texto usadas principalmente para reemplazar parte o completamente una especificación de dispositivo, especialmente las partes DISPOSITIVO y DIRECTORIO. Existen varios nombres lógicos como por ejemplo:

'’SYS$OUTPUT:’’ el lugar donde la salida estandar es enviada. ‘‘SYS$ERROR:’’ el lugar donde los mensajes de error se envian. ‘‘SYS$INPUT:’’ el lugar de donde se leen los datos. ‘‘SYS$COMMAND:’’ el lugar de donde se leen comandos DCL. ‘‘TT:’’ otro nombre para la terminal. ‘‘NLA0:’’ el dispositivo null, todo lo enviado aquí desaparece.

Al iniciar sesión la computadora coloca al usuario en el directorio hogar. En cual dispositivo esta albergado este directori lo decide el administrador al momento de crear la cuenta.

Muestra el directorio hogar

$ SHOW DEFAULT DISK$USERDISK:[ECELIS]

Este comando muestra que los archivos están en el dispositivo DISK$USERDISK:’’’ en el directorio llamado ‘'’ECELIS’’’. A esta combinación de dispositivo y directorio se le llama ‘'’ruta del directorio’’’. Otra ruta importante es ‘'’SYS$LOGIN’’’, que es un puntero al directorio inicial.

Ir al directorio inicial

$ SET DEFAULT SYS$LOGIN

Los directorio en OpenVMS van encerrados en brackets [] y los sub-directosio son separados con puntos ‘’’.’’’. OpenVMS puede tener un jerarquía de hasta 7 niveles de subdirectorios.

[ECELIS.TRABAJO]

Los nombres de archivo que terminan con ‘’‘.DIR’’’ en el listado de archivos son directorios.

Un directorio arriba

dir [-]

Archivos

En OpenVMS los archivos se identifican con un nombre de archivo, un punto un tipo de archivo, un punto y coma y un número de versión.

nombre.tipo;n

Los nombres de archivo no pueden iniciar con un punto, ‘’’-‘’’ y ‘'’_ pueden ser parte del nombre de archivo, pero solo en medio del nombre, si se encuentran al final VMS lo interpreta como si fuera a haber una línea de continuación.

A partir de la versión 4, VMS permite hasta 39 caracteres para el nombre y ahora hay también una extensión que permite hasta 236 sin contar la versión y permite usar caracteres del conjunto LATIN-1.

En DCL Wilcards son caractéres, ‘’‘*’’’ representa muchos caracteres, % representa un solo caracter.

[.*] funciona para todos los irectorios.

$ COPY login.com [.work]
$ RENAME login.com [.work]nuevo_nombre.com
$ DELETE login.com;2
CREATE/DIRECTORY [.mail]
$ PURGE $ PURGE/LOG $ PURGE/CONFIRM
$ CREATE mi_archivo.txt Hola esta es una linea esta es otra y esta es la
ultima "CTRL-Z" para finalizar Exit
$ TYPE/PAGE mi_archivo.txt Hola esta es una linea esta es otra y esta es
la ultima "CTRL-Z" para finalizar
TYPE/TAIL[=100]


$ SEARCH login.com "login" $! Template '''login'''.com procedure for
DECUServe users.
$ DIFFERENCES test.txt;1 test.txt;3 ************ File
EISNER$DRA3:[DECUSERVE_USER.CELIS]TEST.TXT;1 ****** File
EISNER$DRA3:[DECUSERVE_USER.CELIS]TEST.TXT;3 4   ahora use EDT para
modificarlo ************

Number of difference sections found: 1 Number of difference records
found: 1

DIFFERENCES /IGNORE=()/MERGED=1-
EISNER$DRA3:[DECUSERVE_USER.CELIS]TEST.TXT;1-
EISNER$DRA3:[DECUSERVE_USER.CELIS]TEST.TXT;3

Define un valor lógico especificando un lugar’’’ y copia un archivo de ese lugar al directorio actual.

$ DEFINE ahi DISK1:[USERS.JUAN] $ COPY ahi:archivo.txt []

Permisos

$ DIRECTORY/OWNER/PROTECTION

Directory EISNER$DRA3:[DECUSERVE_USER.CELIS]

FTP_SERVER.LOG;1     [CELIS]                          (RWED,RWED,,)
LOGIN.COM;1          [CELIS]                          (RWED,RWED,,)
MAY_TEXT_FILE.TXT;1 [CELIS]                          (RWED,RWED,,)
NOTES$NOTEBOOK.NOTE;1 [DECUSERVE]                      (RWE,RWE,,)
$ SET SECURITY/PROTECTION=(owner:read,write,execute,delete) work.dir;1

CREATE/DIRECTORY/OWNER_UIC=PARENT
Hmm.  I did nothing special.  Make certain that the WWW directory is
accessible.  Here's the output of DIRECTORY/SECURITY for my WWW.DIR:

WWW.DIR;1            [SUPPORT,SCHENKENBERG]           (RWE,RWE,,E)

Also, the INDEX.HTML file much be accessible as well.  Here's what mine
looks like:

INDEX.HTML;2         [SUPPORT,SCHENKENBERG]           (RWED,RWED,,RE)

Access it with:

Muchos comandos requiere cierta información para hacer su trabajo, como por ejemplo ‘’’'’COPY’’’’’, si solo escribimos el comando si pasarle los parámetros de cual objeto copiar y donde hacer la copia, DCL amablemente nos pregunta por la información que le hace falta.

MANSON $ COPY

_From: notebook.note _To: note.bak

MANSON $ DIR

Directory DISK$USERS:[USERS.ECELIS] MAIL.DIR;1          NOTE.BAK;1
NOTEBOOK.NOTE;1     SRC.DIR;1

Total of 4 files.

MANSON $

LOGIN.COM es el archivo de onfiguracion de nuestro ambiente de trabajo

DEFINE EVE$INIT SYS$LOGIN:EVE$INIT.EVE EVE :== EDIT/TPU

Podemos hacer cambios en LOGIN.COM y hacerlos efectivos ejecutando

$ @LOGIN.COM
SHOW NET/FULL

Is it closer to a unix lsof -i4 command than to a netstat.

When you have an attack, this is the tool you use to find out what IP address is connecting to what service(s).

Muestra las caracteisticas de la terminal

$ show terminal Terminal: _TNA51:     Device_Type: Unknown       Owner:
ECELIS Remote Port Info: Host:
dsl-201-103-149-199-dyn.prod-infinitum.com

   Input:    9600     LFfill:  0      Width:  80      Parity: None
   Output:   9600     CRfill:  0      Page:   24

Terminal Characteristics: Interactive        Echo
Type_ahead         No Escape Hostsync           TTsync
Lowercase          No Tab Wrap               Scope              No
Remote          No Eightbit Broadcast          No Readsync        No
Form            Fulldup No Modem           No Local_echo      No
Autobaud        Hangup No Brdcstmbx       No DMA             No
Altypeahd       Set_speed No Commsync        Line Editing
Overstrike editing No Fallback No Dialup          No Secure server   No
Disconnect      No Pasthru No Syspassword     No SIXEL Graphics  No Soft
Characters No Printer Port Numeric Keypad     No ANSI_CRT        No
Regis           No Block_mode No Advanced_video  No Edit_mode       No
DEC_CRT         No DEC_CRT2 No DEC_CRT3        No DEC_CRT4        No
DEC_CRT5        No Ansi_Color VMS Style Input    <CTRL-H> Backspace

Cambiar caateristicas de la terminal

$ SET TERMINAL

Mail

Por default OpenVMS coloca los mensajes en un folder ‘'’MAIL’’’, si no hay correos, o todos los mensjaes se borran, este folder desaparece. Cuando se eliminan mensajes van a dar al folder ‘'’WASTEBASKET’’’, para vaciar este folder se utiliza el comando ‘’’'’PURGE’’’’’; igual que

MAIL’’’ este folder desaparece si no tiene mensajes.

Lista los folders

MAIL> DIRECTORY/FOLDER

Crea un folder

MAIL> FILE/MIFOLDER

Cambia al directorio ‘’’'’Wastebasket’’’’’.

MAIL> SET FOLDER WASTEBASKET

'’SENT’’ o ‘‘MAIL’’ envian mensajes, o ‘‘NODO::”smtp%destinoo@top.lvl.dom”’’

'’DELETE’’’’’ elimina los mensajes del folder actual y los envía a WASTEBASKET’’’, podemos eliminar el mensaje que estams leyendo actualmente, especificar los mensajes que deseamos borrar en particular, separados por comas o en rangos. Los mensajes eliminados se mantienen en el folder ‘'’WASTEBASKET’’’ hasta que se ejecuta el comando ‘‘PURGE’’’’’.

MAIL> DELETE 1,4-6 MAIL> DELETE/ALL MAIL> PURGE
MAIL> SHOW ALL Your mail file directory is DISK$USERDISK:[ECELIS.MAIL].
Your current mail file is DISK$USERDISK:[ECELIS.MAIL]MAIL.MAI.  No
folder is currently selected.  The wastebasket folder name is
WASTEBASKET.  Mail file DISK$USERDISK:[ECELIS.MAIL]MAIL.MAI contains 951
deleted message bytes.

You have 0 new messages.

You have not set a forwarding address.  Your personal name is "Ernesto
Celis".  Your editor is TPU.  CC prompting is disabled.  Automatic
copies to yourself are disabled.  Automatic deleted message purge is
enabled.  Your default print queue is SYS$PRINT.  You have not specified
a default print form.  You have not specified a default signature file.

MAIL> SET PERSONAL_NAME "Ernesto Celis"

MAIL> SET MAIL [.mail] %MAIL-I-CREATED, DISK$USERDISK:[ECELIS.MAIL]
created

Muestra la cola de impresion default.

SHOW LOGIAL SYS$PRINT

Define la impresora default para la sesion actual

DEFINE SYS$PRINT

envia login.com a la cola sales$print sin necesidad de definr una cola default

PRINT/QUEUE=SALES$PRINT LOGIN.com

muestra los trabajos de impresion en todas las colas.

SHOW QUEUE/ALL

Algo

CC NAVBAT.C LINK NAVBAT.O RUN NAVBAT.EXE

Edición de Texto

VMS cuenta con varios editores disponibles, los dos mas comunes son EVE (Extensible Versatile Editor) que implementa la Utilidad de Procesamiento de Texto (TPU) de VMS. Y EDT un desarrollado como editor comun a traves de los diferentes sistemas operativos de DEC. EVE esta pensado para su uso en pantalla, mientras EDT tiene un modo de linea.

Si al invocar el comando ‘'’EDIT’’’ se te pregunta por el nombre de archivo, entonces el editor por default es ‘'’EDT’’’, por el contrario si aparece una barra de estado en la parte de abajo de la pantalla que dice Buffer: a la izquierda y |Write|Insert|Forward a la derecha EVE es el editor pre-determinado.

Para salir de EDT presionamos ‘'’CTRL+C’’’, para salir de EVE presiona

CTRL+Z’’’ y se te ofrece la linea de comando de EVE, donde debes

escribir EXIT para regresar al prompt DCL.

CTRL+Z’’’ tembien funciona para cambiar entre modo de comandos y

edicion en pantalla para EDT.

Formas de invocar los editores de VMS

$ EDIT/EDT
$ EDIT/TPU

EVE$INIT.EVE es el archivo de configuracion del editor EVE.

! Make keypad act like EDT keypad
SET KEYPAD EDT
! Instead of EXIT, CONTORL-Z will prompt for Command:
! Very handy for PC's with no F16 (DO) key
DEFINE KEY=CTRL-Z DO
! Makes cursor go to begining of next line from
! end of previous line like EDT
SET CURSOR BOUND
! Keeps DECwindows motif mouse from affecting
!EVE functions [End of file] TPU
SET(MOUSE,OFF)

El comando ‘'’SPAWN’’’ de EVE nos permite ir al prompt DCL para ejecutar comandos sin abandonar la sesion de edicion, para regresar al editor solo es necesario ejecutar ‘'’LOGOUT

El comando ‘'’WRITE’’’ guarda los cmabios en la sesion de edicion actual sin salir del archivo, tambien genera una nueva version del archivo en el sistema.

Imposible determinar el tipo de terminal.

$ EDIT

%TPU-E-NONANSICRT, SYS$INPUT must be supported CRT

$ SET TERMINAL/INQUIRE
TIME SHOW LOGICAL SYS$LOGIN
  • ’'’CTRL+Y’’’ es la interrupción. Si un comando despliega información en la pantalla y ya no quieres verla, presiona ‘'’CTRL+Y’’’. Esto también es útil si algo va mal con algu n programa, ‘'’CTR+Y abortara cualquier actividad actual de la sesión.

Referencias

  • http://www.wherry.com/gadgets/retrocomputing/vax-simh.html
  • http://mailman.trailing-edge.com/pipermail/simh/2006-November/000773.html
  • http://h71000.www7.hp.com/doc/73final/6489/6489pro.html]
  • http://alpha.mike-r.com/VMS_beginners_faq.html
  • http://www.hoffmanlabs.com/vmsfaq/vmsfaq.html
  • CCSS Interactive Learning - Entrenamiento On-Line
  • http://deathrow.vistech.net
  • http://kuhl-us.com/gadgets/retrocomputing/vax-simh.html
  • http://mailman.trailing-edge.com/pipermail/simh/2006-November/000773.html