Running OpenVMS 7.3 on mipsel Ci20 creator board

I have flashed the Ci20 board with the latest Debian 8 NAND from Imagination as it is described here https://elinux.org/CI20_Distros

The process is not hard, all that is needed is to follow the instructions properly (the board is almost impossible to brick)

Once you have the Ci20 up with Debian8 you can use the binary pkgsrc packages I have made for the board available here: http://45.76.81.249/pkgsrc/debian8-ci20/

You will need to get a decent version of SimH (since Debian8 ships with simh 3.8.1-5) I have used the version that comes with pkgsrc-current simh-4.0.0.20170406   https://github.com/simh/simh

Unfortunately simh-4.0.0.20170406 does not build properly via pkgsrc on the Ci20, so I had to build it manually and shuffle around a little with includes on the filesystem (binaries for the Ci20 mipsel are uploaded here -> http://45.76.81.249/pkgsrc/debian8-ci20/simh/

Here is a list of the Debian packages I had to install to get the SimH to compile

2018-03-01 22:11:15 install libgles2-mesa:mipsel <none> 10.3.2-1+deb8u1
2018-03-01 22:11:15 install libpcrecpp0:mipsel <none> 2:8.35-3.3+deb8u4
2018-03-01 22:11:17 install libsdl2-2.0-0:mipsel <none> 2.0.2+dfsg1-6
2018-03-01 22:11:18 install libxcb-randr0:mipsel <none> 1.10-3+b1
2018-03-01 22:11:19 install libasound2-dev:mipsel <none> 1.0.28-1
2018-03-01 22:11:19 install libavahi-common-dev:mipsel <none> 0.6.31-5
2018-03-01 22:11:19 install pkg-config:mipsel <none> 0.28-1
2018-03-01 22:11:20 install libdbus-1-dev:mipsel <none> 1.8.22-0+deb8u1
2018-03-01 22:11:20 install libavahi-client-dev:mipsel <none> 0.6.31-5
2018-03-01 22:11:21 install libdrm-dev:mipsel <none> 2.4.58-2
2018-03-01 22:11:21 install x11proto-dri2-dev:all <none> 2.8-2
2018-03-01 22:11:22 install x11proto-gl-dev:all <none> 1.4.17-1
2018-03-01 22:11:22 install x11proto-xext-dev:all <none> 7.3.0-1
2018-03-01 22:11:22 install libxext-dev:mipsel <none> 2:1.3.3-1
2018-03-01 22:11:23 install x11proto-xf86vidmode-dev:all <none> 2.3.1-2
2018-03-01 22:11:23 install libxxf86vm-dev:mipsel <none> 1:1.1.3-1+b1
2018-03-01 22:11:24 install x11proto-fixes-dev:all <none> 1:5.0-2
2018-03-01 22:11:24 install libxfixes-dev:mipsel <none> 1:5.0.1-2+deb8u1
2018-03-01 22:11:24 install x11proto-damage-dev:all <none> 1:1.2.1-2
2018-03-01 22:11:25 install libxdamage-dev:mipsel <none> 1:1.1.4-2+b1
2018-03-01 22:11:25 install libxcb-glx0-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:25 install libxcb-dri2-0-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:26 install libxcb-dri3-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:26 install libxcb-render0-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:26 install libxcb-randr0-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:26 install libxcb-shape0-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:27 install libxcb-xfixes0-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:27 install libxcb-sync-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:27 install libxcb-present-dev:mipsel <none> 1.10-3+b1
2018-03-01 22:11:28 install libxshmfence-dev:mipsel <none> 1.1-4
2018-03-01 22:11:28 install libx11-xcb-dev:mipsel <none> 2:1.6.2-3+deb8u1
2018-03-01 22:11:28 install libwayland-dev:mipsel <none> 1.6.0-2
2018-03-01 22:11:29 install libegl1-mesa-dev:mipsel <none> 10.3.2-1+deb8u1
2018-03-01 22:11:29 install mesa-common-dev:mipsel <none> 10.3.2-1+deb8u1
2018-03-01 22:11:30 install libgl1-mesa-dev:mipsel <none> 10.3.2-1+deb8u1
2018-03-01 22:11:30 install libgles2-mesa-dev:mipsel <none> 10.3.2-1+deb8u1
2018-03-01 22:11:31 install libpcre3-dev:mipsel <none> 2:8.35-3.3+deb8u4
2018-03-01 22:11:32 install libglib2.0-dev:mipsel <none> 2.42.1-1+b1
2018-03-01 22:11:36 install libglu1-mesa-dev:mipsel <none> 9.0.0-2
2018-03-01 22:11:37 install libice-dev:mipsel <none> 2:1.0.9-1+b1
2018-03-01 22:11:37 install libpulse-dev:mipsel <none> 5.0-13
2018-03-01 22:11:37 install libudev-dev:mipsel <none> 215-17+deb8u7
2018-03-01 22:11:38 install x11proto-render-dev:all <none> 2:0.11.1-2
2018-03-01 22:11:38 install libxrender-dev:mipsel <none> 1:0.9.8-1+b1
2018-03-01 22:11:38 install libxcursor-dev:mipsel <none> 1:1.1.14-1+deb8u1
2018-03-01 22:11:39 install libxi-dev:mipsel <none> 2:1.7.4-1+deb8u1
2018-03-01 22:11:40 install x11proto-xinerama-dev:all <none> 1.2.1-2
2018-03-01 22:11:40 install libxinerama-dev:mipsel <none> 2:1.1.3-1+b1
2018-03-01 22:11:40 install libxkbcommon-dev:mipsel <none> 0.4.3-2
2018-03-01 22:11:41 install x11proto-randr-dev:all <none> 1.4.0-2
2018-03-01 22:11:41 install libxrandr-dev:mipsel <none> 2:1.4.2-1+deb8u1
2018-03-01 22:11:41 install x11proto-scrnsaver-dev:all <none> 1.2.2-1
2018-03-01 22:11:42 install libxss-dev:mipsel <none> 1:1.2.2-1
2018-03-01 22:11:42 install libsm-dev:mipsel <none> 2:1.2.2-1+b1
2018-03-01 22:11:42 install libxt-dev:mipsel <none> 1:1.1.4-1+b1
2018-03-01 22:11:44 install x11proto-video-dev:all <none> 2.3.2-1
2018-03-01 22:11:44 install libxv-dev:mipsel <none> 2:1.0.10-1+deb8u1
2018-03-01 22:11:44 install libsdl2-dev:mipsel <none> 2.0.2+dfsg1-6

Just to give you an example here are the library locations for the vax binary

 libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x77dc7000)
 libm.so.6 => /lib/mipsel-linux-gnu/libm.so.6 (0x77d19000)
 librt.so.1 => /lib/mipsel-linux-gnu/librt.so.1 (0x77d01000)
 libpthread.so.0 => /lib/mipsel-linux-gnu/libpthread.so.0 (0x77cd6000)
 libpcreposix.so.3 => /usr/lib/libpcreposix.so.3 (0x77cc2000)
 libdl.so.2 => /lib/mipsel-linux-gnu/libdl.so.2 (0x77caf000)
 libvdeplug.so.2 => /usr/lib/libvdeplug.so.2 (0x77c99000)
 libc.so.6 => /lib/mipsel-linux-gnu/libc.so.6 (0x77b16000)
 libasound.so.2 => /usr/lib/libasound.so.2 (0x77a1e000)
 libpulse-simple.so.0 => /usr/lib/libpulse-simple.so.0 (0x77a0a000)
 libpulse.so.0 => /usr/lib/libpulse.so.0 (0x779ad000)
 libX11.so.6 => /usr/lib/libX11.so.6 (0x77866000)
 libXext.so.6 => /usr/lib/libXext.so.6 (0x77843000)
 libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x77829000)
 libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x77816000)
 libXi.so.6 => /usr/lib/libXi.so.6 (0x777f4000)
 libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x777d9000)
 libXss.so.1 => /usr/lib/libXss.so.1 (0x777c7000)
 libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x777b1000)
 libwayland-egl.so.1 => /usr/lib/libwayland-egl.so.1 (0x7779f000)
 libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x77783000)
 libwayland-cursor.so.0 => /usr/lib/libwayland-cursor.so.0 (0x7776b000)
 libxkbcommon.so.0 => /usr/lib/libxkbcommon.so.0 (0x7771f000)
 /lib/ld.so.1 (0x77ee6000)
 libpcre.so.3 => /lib/mipsel-linux-gnu/libpcre.so.3 (0x7769e000)
 libpulsecommon-5.0.so => /usr/lib/mipsel-linux-gnu/pulseaudio/libpulsecommon-5.0.so (0x77619000)
 libcap.so.2 => /lib/mipsel-linux-gnu/libcap.so.2 (0x77604000)
 libjson-c.so.2 => /lib/mipsel-linux-gnu/libjson-c.so.2 (0x775ea000)
 libdbus-1.so.3 => /lib/mipsel-linux-gnu/libdbus-1.so.3 (0x77590000)
 libxcb.so.1 => /usr/lib/libxcb.so.1 (0x77562000)
 libXrender.so.1 => /usr/lib/libXrender.so.1 (0x77547000)
 libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x77531000)
 libffi.so.6 => /usr/lib/libffi.so.6 (0x77518000)
 libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x77506000)
 libICE.so.6 => /usr/lib/libICE.so.6 (0x774dc000)
 libSM.so.6 => /usr/lib/libSM.so.6 (0x774c3000)
 libXtst.so.6 => /usr/lib/libXtst.so.6 (0x774ac000)
 libsystemd.so.0 => /lib/mipsel-linux-gnu/libsystemd.so.0 (0x77477000)
 libwrap.so.0 => /lib/mipsel-linux-gnu/libwrap.so.0 (0x7745e000)
 libsndfile.so.1 => /usr/lib/libsndfile.so.1 (0x773d7000)
 libasyncns.so.0 => /usr/lib/libasyncns.so.0 (0x773c1000)
 libattr.so.1 => /lib/mipsel-linux-gnu/libattr.so.1 (0x773ac000)
 libXau.so.6 => /usr/lib/libXau.so.6 (0x77399000)
 libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x77384000)
 libuuid.so.1 => /lib/mipsel-linux-gnu/libuuid.so.1 (0x7736d000)
 liblzma.so.5 => /lib/mipsel-linux-gnu/liblzma.so.5 (0x77339000)
 libgcrypt.so.20 => /lib/mipsel-linux-gnu/libgcrypt.so.20 (0x77276000)
 libresolv.so.2 => /lib/mipsel-linux-gnu/libresolv.so.2 (0x77250000)
 libnsl.so.1 => /lib/mipsel-linux-gnu/libnsl.so.1 (0x77227000)
 libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x771e2000)
 libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x7714f000)
 libgpg-error.so.0 => /lib/mipsel-linux-gnu/libgpg-error.so.0 (0x7712d000)
 libogg.so.0 => /usr/lib/libogg.so.0 (0x77115000)
 libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x770d9000)

Getting OpenVMS 7.3 images

Now there are of course official ways and these should be followed so please refer to this instruction https://astr0baby.wordpress.com/2017/10/22/setting-up-dw-motif-on-openvms-8-4-2-alphavm-linux64/  on how to register for DECUServe since we will need the hobbyist licenses for the OpenVMS anyway.

Or you can just grab a copy from the PirateBay (search for OpenVMS)  https://www.thepiratebay.org/torrent/4810604/OpenVMS_VAX_7.3

Setting up the environment

Now lets prepare the VMS environment on the Ci20 board.  Screenshot below is my layout, we will go through it step by step.

So obviously we need to upload the OpenVMS 7.3 CD ISO file to the board,  and place it in the simulator directory which I have called OpenVMS

Next we need to create the dua0 disk image disk.dd , I have used 512 MB size via the following command

dd if=/dev/zero of=disk.dd bs=1024 count=512K

We will also need the vax.ini configuration file populated, my example

;
; Load CPU microcode
load -r /home/ci20/OpenVMS/ka655x.bin
;
; This virtual machine has 64M memory
set cpu 128m
;
; Define disk drive types. RA92 is largest-supported VAX drive.
set rq0 ra92
set rq3 cdrom
;
; Attach defined drives to local files
attach rq0 /home/ci20/OpenVMS/disk.dd
;
; Attach the CD-ROM to its file (read-only)
attach -r rq3 /home/ci20/OpenVMS/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 tap:tap0
;
; Now start the emulator
boot cpu

From the above configuration we are looking at these custom locations and files

/home/ci20/OpenVMS/ka655x.bin   <--- thats the Vax ROM file you can 
downlod from https://github.com/simh/simh/blob/master/VAX/ka655x.bin
attach rq0 /home/ci20/OpenVMS/disk.dd  <--- this is out dua0 disk
attach -r rq3 /home/ci20/OpenVMS/cd.iso <-- this is the VMS cdrom

Next we need to configure the networking part to be able to use TCPIP on the simulated OpenVMS.

Please install these tools for the bridging

# apt-get install libpcap-dev  bridge-utils uml-utilities

And here is my networking script (networking.sh)  to get all the needed to run (execute this before we load the simulator with root privs)

#Setup tap and bridge 
tunctl -t tap0 -u ci20 
ifconfig tap0 up
brctl addbr br0
brctl addif br0 eth0 
brctl setfd br0 0
ifconfig eth0 10.0.2.1 up 
ifconfig br0 10.0.2.2 netmask 255.255.255.0 broadcast 10.0.2.255 up
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 
sysctl net.ipv4.ip_forward=1
iptables -A FORWARD --in-interface eth0 -j ACCEPT
iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE

Next we place the actual simulator binary vax into our working directory and create a simple loader called run.sh that will initiate the simulator and which contains this:

./vax vms.ini

we are now ready for the first boot

Booting up OpenVMS 7.3 and installing it

follow these steps to boot up the simulator – please note that we will be running under root here most of the time – not for the faint hearted :)

#./networking.sh 
#./run.sh

Once inside the SIM> list all devices by >>> sho dev     as seen below

KA655X-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.
>>>sho dev
UQSSP Disk Controller 0 (772150)
-DUA0 (RA92)
-DUA1 (RD54)
-DUA2 (RD54)
-DUA3 (RRD40)

UQSSP Tape Controller 0 (774500)
-MUA0 (TK50)
-MUA1 (TK50)
-MUA2 (TK50)
-MUA3 (TK50)

Ethernet Adapter 0 (774440)
-XQA0 (08-00-2B-AA-BB-CC)
>>>

We will see all the devices that we will use, for now what is important is the CDROM DUA3 device and the DISK.DD DUA0 device.

To boot the CDROM image simply issue boot dua3 command

>>> boot dua3

Next we will be using instructions from Phillip Wherry located here  https://www.wherry.com/gadgets/retrocomputing/vax-simh.html which are wery well written and cointain very detailed OpenVMS installation procedure.

Please read from section “Install the OpenVMS Operating System

I will only be including the differences I did here from Phillips document

We only have one disk dua0 !! so change the commands accordingly

When asked for DECwindows install them 
* Do you want the DECwindows base support? (Y/N) Y

Before installing TCPIP please make sure you set the INTSTKPAGES to 
value at least 40 (needed for the DW-MOTIF as well) 

$ set proc/priv=all 
$ r sys$system:sysgen 
SYSGEN> SET INTSTKPAGES 40 
SYSGEN> WRITE CURRENT 
SYSGEN> EXIT
$ shutdown 

During TCPIP setup dont configure domain 
* Configuration options:

1 - Domain           <--- NO 
2 - Interfaces       <--- YES 
3 - Routing          <--- YES 
4 - BIND Resolver    <--- YES 
5 - Time Zone        <--- NO 

Please use the following TCPIP configuration options to get network
running on your CI20 OpenVMS 

Interfaces

Routing

Resolver

Choose google DNS for exampe 8.8.8.8 and name it googleresolver

Getting the DW-MOTIF up

to mount a cdrom image 
$ set proc/priv=all
$ mount/over=id dua3:


to browse it 
$ set def DUA3:[000000]

To install DW-MOTIF stuff
$ set def [DWMOTIF_VAX126.kit]
$ product install *

Once the above sets install you can enable the remote X desktop via the following sequence  (192.168.11.3 is an IP of my other laptop that runs Linux and Xming via wine)

CI20
CI20
192.168.11.10

On OpenVMS Ci20

set display/create/node=192.168.11.3/transport=tcpip/server=3 
run sys$system:decw$startlogin.exe

And on the Linux machine with the installed Xming execute the following

$ cd .wine/drive_c/Program\ Files\ \(x86\)/Xming/
$ wine Xming.exe :3

You will get the following screen

Troubleshooting

Sometimes the simulator bails out on this error,  to fix it simple reload the simh

>>>boot dua0
(BOOT/R5:0 DUA0

2..
?4C DEVINACT, DUA0
HALT instruction, PC: 00000C1A (MOVL (R11),SP)
sim> exit
Goodbye
Eth: closed tap0

Video Demonstration

Advertisement

About astr0baby

Please run Adblock or similar... we have been told to do so since Carl Sagan wrote the Contact .
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.