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: https://45.76.81.249:8000/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 -> https://45.76.81.249:8000/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
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)
- Download Xming from https://sourceforge.net/projects/xming/files/Xming/6.9.0.31/
- Make sure you have Wine configured on your linux machine
- add the following in the .wine/drive_c/Program Files (x86)/Xming/X1.hosts (192.168.11.10 is the IP of the CI20 device)
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