OpenVMS y SIMH

By | January 26, 2011

Introducción

OpenVMS es un OS de uso genérico que se puede ejecutar en hardware VAX, Alpha, y actualmente corre en Itanium. Esta considerado como uno de los sistemas operativos mas seguros y estables en la actualidad en el mercado. Una de las características que ayuda a esta estabilidad es su capacidades de clustering. DEC/Digital fueron pioneros en el mundo del clustering y ya en los años 80 tenían dichos sistemas. Se conocen sistemas de cluster con un uptime de mas de 10 años.

Si no disponemos de ningún hardware apropiado, siempre podemos usar el fantástico emulador SIMH para emular un VAX. SIMH es un emulador creado por Bob Supnick  que nos permite emular distintos sistemas:  PDPs,  VAX,  SDS, IBM,  Interdata, así hasta  26 maquinas. El intento de  SIMH no es obtener velocidad, sino una emulación lo mas similar a la realidad posible.

También hay disponibles una serie de ‘Software Kits’ para SIMH que nos permiten directamente instalar distintas versiones de sistemas operativos en este emulador. En futuros artículos hablaré de ellos con mas detenimiento.

Instalación de SIMH

 

Bueno, pues como queremos instalar OpenVMS en VAX, lo primero que vamos a hacer es instalar el emulador. Desde el principio asumo que estamos trabajando en un ordenador con alguna variante de UNIX (el procedimiento para Windows es similar), particularmente yo uso linux (que raro, no ?). SIMH también esta disponible para windows y OSX como paquetes precompilados. En linux puedes instalarlo mediante un apt o similar, o partir del fuente. Yo prefiero compilar mi propio ejecutable:

mkdir /tmp/simh
cd /tmp/simh
wget http://simh.trailing-edge.com/sources/simhv37-3.zip
unzip simhv37-3.zip
#           leer los obligados README
mkdir BIN # el makefile no lo crea pero lo necesita
make      # usar make USE_NETWORK=1 si queremos soporte de red. Ver configuración

Lo mas probable es que obtengas un error como este:

collect2: ld devolvió el estado de salida 1
make: *** [BIN/pdp1] Error 1

Esto es porque simh necesita la librería rt, pero no esta puesto en el makefile. Se puede corregir usando tu editor preferido, y añadiendo -lrt en la linea 11 del fichero makefile y que quede de esta forma:

OS_CCDEFS = -D_GNU_SOURCE -lrt

Ahora si, ya se puede compilar sin problemas. Una vez compilado, simplemente hay que copiar todos los ejecutables a un directorio que este en tu $PATH. Yo particularmente pongo mis ejecutables en $HOME/bin o en /usr/local/bin:

make    # usar make USE_NETWORK=1 si queremos soporte de red. Ver configuracion
cp BIN/* /usr/local/bin/ Configuración de SIMH

Configuración de SIMH

 

La configuracion de SIMH se realiza mediante un simple fichero de texto.  Como vamos a hacer distintos proyectos relacionados con emuladores y sistemas operativos, creo que es buena idea crear un directorio en el $HOME llamado emuladores y ahi ir poniendo lo que vayamos creando, en esta caso vms-vax.

En este caso concreto, necesitamos el firmaware del VAX, pero el la distribución del SIMH ya viene, asi que simplemente lo copiamos a nuestro directorio de trabajo.

mkdir -p $HOME/emuladores/vax-vms
cp VAX/ka655x.bin  $HOME/emuladores/vax-vms
cd  $HOME/emuladores/vax-vms

Nota sobre networking:

SIMH puede usar la tarjeta de red, es decir emula la ethernet, pero lo hace de una forma algo particular: pone la tarjeta de red en modo promiscuo, de forma que analiza todos los paquetes que pasan por la red,  captura los paquetes que tienen como destino la IP de nuestra maquina emulada, y se los entrega al emulador. Este modo de funcionamiento tiene como particularidad que es muy fácil de implementar, pero tiene dos desventajas:

  • Hay que poner la ethernet en modo promiscuo, es decir, hay que ser root.
  • No se puede iniciar sesión en la misma máquina, es decir, desde una consola no le puedes hacer un telnet al emulador (si lo puedes hacer si tienes dos tarjetas de red o desde cualquier otro nodo de la red).

También tener en cuenta que para tener soporte de red, necesitas tener la librería pcap instalada y definir  USE_NETWORK con el makefile (pero eso ya lo hemos leído en los README, ¿verdad ? )

Bueno, como ya lo tenemos, lo podemos lanzar:

$ vax

VAX simulator V3.7-3
sim> 

Difícil, ¿eh? Una vez lanzado, nos quedamos en una pseudo-shell que nos permite controlar el emulador. Dispone de bastantes opciones que podemos ver escribiendo help, pero en principio nosotros vamos a usar muy pocas, como el show device o el boot. Para salir del emulador basta un quit. Si estamos emulando una máquina y queremos cambiar alguna opción (como por ejemplo montar o desmontar una unidad de cinta), podemos volver a la pseudo-shell  simplemente pulsando ^E (tecla Ctrl+e) y para volver a la maquina emulada un cont.

A continuación pongo el fichero de configuración que vamos a usar,  vax.ini:

;
; Cargar el micro-código de la CPU 
load -r ka655x.bin
;

; Usar un fichero para mantener los valores de la RAM no-volátil
attach nvr nvram.bin
;
; Vamos a simular una maquina con 64M de memoria
set cpu 64m
; Queremos que la maquina no nos acapare todo la CPU del host
set cpu idle=VMS
;
; Estos son los discos, el RA92 es el tamaño máximo soportado por el VAX
set rq0 ra92
;set rq1 ra92
;set rq2 ra92
set rq3 cdrom
;
; Conectamos los discos a los fichero que tenemos
attach rq0 vax2_d0.dsk
;attach rq1 openvms_d1.dsk
;attach rq2 openvms_d2.dsk
;
; Conectamos el fichero con la ISO al CD-ROM (en modo solo lectura)
attach -r rq3 vax_hobby_vms073.dsk
;
; Conectamos la Ethernet a la tarjeta de rede correspondiente
set xq mac=08-00-2B-AA-BB-DD
attach xq eth0
;
; Arrancamos la máquina
boot cpu

Ponemos el anterior fragmento en nuestro directorio de trabajo, y ya lo tenemos listo para empezar a instalar el OpenVMS

 

Instalación de OpenVMS

2 thoughts on “OpenVMS y SIMH

Leave a Reply

Your email address will not be published. Required fields are marked *