Skip to main content

Raymii.org Logo (IEC resistor symbol)logo

Quis custodiet ipsos custodes?
Home | About | All pages | RSS Feed | Gopher

Installing the es40 AlphaServer emulator 0.18 on Ubuntu 16.04, and trying to install OpenVMS 8.4 on es40

Published: 24-04-2018 | Author: Remy van Elst | Text only version of this article


Table of Contents


openvms

(You can read all my OpenVMS articles by clicking the picture above)

OpenVMS 7.3 is the latest version of OpenVMS for the VAX architecture. Since theDECUS system uses OpenVMS 8.4 there were some version differences. I couldnot set my 'BACKSPACE=DELETE' (see my article here) on 7.3. The hobbyistlicense also covers the Alpha and Itanium versions of OpenVMS so I want to trythe Alpha version, which is consequently also 8.4, the latest release. Thisarticle describes my attempt to compile and install the es40 open source Alphaemulator on Ubuntu 16.04 and subsequently the installation of OpenVMS Alpha. Theemulator is not under active development since 2008, and the installation ofOpenVMS fails. OpenVMS does boot however, very very slowly.

If you like this article, consider sponsoring me by trying out a Digital OceanVPS. With this link you'll get $100 credit for 60 days). (referral link)

AlphaServer and ES40

Wikipedia defines the Alphaserver, of which ES40 is a type:

AlphaServer was the name given to a series of server computers, produced from1994 onwards by Digital Equipment Corporation, and later by Compaq and HP. Asthe name suggests, the AlphaServers were based on the DEC Alpha 64-bitmicroprocessor. As part of the roadmap to phase out Alpha-, MIPS- and PA-RISC-based systems in favor of Itanium-based systems at HP, the most recentAlphaServer systems reached their end of general availability on 27 April 2007.The availability of upgrades and options was discontinued on 25 April 2008,approximately one year after the systems were discontinued.

The es40 project is the only open source Alpha emulator for Linux but sadlythe development halted around 2009. The author, Camiel Vanderhoeven, is nowworking for VMS Software inc, the company that now develops OpenVMS and the x86port. He is also doing talks and video's on OpenVMS:

The ES40 Emulator Project aims to create portable emulator for the HP (DEC,Compaq) AlphaServer ES40.

There are other Alpha emulators, like FreeAXP, but those are Windows only.

Via this page I found a picture of the actual hardware ES40:

Here are more pictures and manuals of the ES40 hardware.

Dependencies

To build the emulator on Ubuntu 16.04, a lot of development dependencies arerequired. Install all of them using apt:

apt-get install libpcap-dev build-essential unzip libx11-dev libsdl-dev automake autotools-dev libpoco-dev libxt-dev checkinstall

The actual source code is hosted on sourceforge and you can do a CVS checkout,but that is slow and someone put the code on Github, so lets check out therepository:

git clone https://github.com/RaymiiOrg/es40

Output:

Cloning into 'es40'...remote: Counting objects: 317, done.remote: Total 317 (delta 0), reused 0 (delta 0), pack-reused 317Receiving objects: 100% (317/317), 867.65 KiB | 733.00 KiB/s, done.Resolving deltas: 100% (112/112), done.Checking connectivity... done.

./configure

This was one of the parts that gave me problems. First go into the code folder:

cd es40

If all the dependencies are installed, the output should be like this:

$ ./configure

Output:

checking for a BSD-compatible install... /usr/bin/install -cchecking whether build environment is sane... yeschecking for a thread-safe mkdir -p... /bin/mkdir -pchecking for gawk... gawkchecking whether make sets $(MAKE)... yeschecking whether make supports nested variables... yeschecking for g++... g++[...]checking for strncasecmp... yeschecking for _stricasecmp... nochecking for strspn... yeschecking that generated files are newer than configure... doneconfigure: creating ./config.statusconfig.status: creating Makefileconfig.status: creating doc/Makefileconfig.status: creating m4/Makefileconfig.status: creating src/Makefileconfig.status: creating src/config.hconfig.status: executing depfiles commands

Start the compilation. This gave me an error right away:

$ make

Output:

CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/username/tmp/es40/missing aclocal-1.14 -I m4/home/username/tmp/es40/missing: line 81: aclocal-1.14: command not foundWARNING: 'aclocal-1.14' is missing on your system.         You should only need it if you modified 'acinclude.m4' or         'configure.ac' or m4 files included by 'configure.ac'.         The 'aclocal' program is part of the GNU Automake package:         <http://www.gnu.org/software/automake>         It also requires GNU Autoconf, GNU m4 and Perl in order to run:         <http://www.gnu.org/software/autoconf>         <http://www.gnu.org/software/m4/>         <http://www.perl.org/>Makefile:383: recipe for target 'aclocal.m4' failedmake: *** [aclocal.m4] Error 127

I had to make two symlinks to these specific versions to get make to continue:

$ sudo ln -s /usr/bin/aclocal /usr/bin/aclocal-1.14$ sudo ln -s /usr/bin/automake /usr/bin/automake-1.14

The next try also failed:

$ make

Output:

config.status: creating m4/Makefilemake[1]: Nothing to be done for 'all'.make[1]: Leaving directory '/home/username/tmp/es40/m4'Making all in srcmake[1]: Entering directory '/home/username/tmp/es40/src' cd .. && /bin/bash ./config.status src/Makefile depfilesconfig.status: creating src/Makefileconfig.status: executing depfiles commandsmake  all-ammake[2]: Entering directory '/home/username/tmp/es40/src'depbase=`echo AliM1543C.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\g++ -DHAVE_CONFIG_H -I.     -g -O2 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DHAVE_SDL -I/usr/include -DHAVE_PCAP nope -DHAVE_X11 -pthread -MT AliM1543C.o -MD -MP -MF $depbase.Tpo -c -o AliM1543C.o AliM1543C.cpp &&\mv -f $depbase.Tpo $depbase.Pog++: error: nope: No such file or directoryMakefile:1065: recipe for target 'AliM1543C.o' failedmake[2]: *** [AliM1543C.o] Error 1make[2]: Leaving directory '/home/username/tmp/es40/src'Makefile:557: recipe for target 'all' failedmake[1]: *** [all] Error 2make[1]: Leaving directory '/home/username/tmp/es40/src'Makefile:404: recipe for target 'all-recursive' failedmake: *** [all-recursive] Error 1

Where does this error come from: g++: error: nope: No such file or directory?I don't know any Nope binary. Lets see if it's in the Makefile:

$ grep nope Makefile

Output:

X11_CFLAGS = nopeCXXFLAGS = -g -O2 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DHAVE_SDL -I/usr/include -DHAVE_PCAP nope -DHAVE_X11 -pthread

Looking in the macro, the nope is there as well.https://github.com/RaymiiOrg/es40/blob/master/m4/x11.m4#L52

It looks for the following C header file:

X11/Intrinsic.h

According to the Ubuntu package site that file is in the libxt-devpackage. I missed that when installing the dependencies. After installing it,the make ran without breaking errors:

make

Output:

Making all in m4make[1]: Entering directory '/home/username/tmp/es40/m4'make[1]: Nothing to be done for 'all'.make[1]: Leaving directory '/home/username/tmp/es40/m4'Making all in srcmake[1]: Entering directory '/home/username/tmp/es40/src'make  all-ammake[2]: Entering directory '/home/username/tmp/es40/src'depbase=`echo AliM1543C.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\g++ -DHAVE_CONFIG_H -I.     -g -O2 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DHAVE_SDL -I/usr/include -DHAVE_PCAP  -DHAVE_X11 -pthread -MT AliM1543C.o -MD -MP -MF $depbase.Tpo -c -o AliM1543C.o AliM1543C.cpp &&\mv -f $depbase.Tpo $depbase.PoAliM1543C.cpp: In member function 'virtual int CAliM1543C::RestoreState(FILE*)':AliM1543C.cpp:1237:33: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]   fread(&ss, sizeof(long), 1, f);                                 ^AliM1543C.cpp:1250:37: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]   fread(&state, sizeof(state), 1, f);                                     ^depbase=`echo AliM1543C_ide.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\g++ -DHAVE_CONFIG_H -I.     -g -O2 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DHAVE_SDL -I/usr/include -DHAVE_PCAP  -DHAVE_X11 -pthread -MT AliM1543C_ide.o -MD -MP -MF $depbase.Tpo -c -o AliM1543C_ide.o AliM1543C_ide.cpp &&\mv -f $depbase.Tpo $depbase.PoAliM1543C_ide.cpp: In member function 'virtual int CAliM1543C_ide::RestoreState(FILE*)':AliM1543C_ide.cpp:484:33: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result [-Wunused-result]   fread(&ss, sizeof(long), 1, f);[...].o es40-cfg.cpp &&\mv -f $depbase.Tpo $depbase.Pog++  -g -O2 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -DHAVE_SDL -I/usr/include -DHAVE_PCAP  -DHAVE_X11 -pthread   -o es40_cfg es40-cfg.o base/Exception.o  -L/usr/lib/x86_64-linux-gnu -lSDL -L/usr/ng/lib -lpcap -lX11make[2]: Leaving directory '/home/username/tmp/es40/src'make[1]: Leaving directory '/home/username/tmp/es40/src'Making all in docmake[1]: Entering directory '/home/username/tmp/es40/doc'make[1]: Nothing to be done for 'all'.make[1]: Leaving directory '/home/username/tmp/es40/doc'make[1]: Entering directory '/home/username/tmp/es40'make[1]: Nothing to be done for 'all-am'.make[1]: Leaving directory '/home/username/tmp/es40'

So it seems it worked? At least in the src/ folder there now are binaries.

SIGSEGV

Lets try to run the compiled binary:

$ ./src/es40

Output:

   **======================================================================**   ||                             ES40  emulator                           ||   ||                              Version 0.18+                           ||   ||                                                                      ||   ||  Copyright (C) 2007-2008 by the ES40 Emulator Project                ||   ||  Website: http://sourceforge.net/projects/es40                       ||   ||  E-mail : camiel@camicom.com                                         ||   ||                                                                      ||   ||  This program is free software; you can redistribute it and/or       ||   ||  modify it under the terms of the GNU General Public License         ||   ||  as published by the Free Software Foundation; either version 2      ||   ||  of the License, or (at your option) any later version.              ||   **======================================================================**Segmentation fault (core dumped)

My favorite program output, I love me a good segfault. Lets debug with strace.

strace -Tfe trace=open,read,write,close ./src/es40

Relevant output:

open("./es40.cfg", O_RDONLY)            = -1 ENOENT (No such file or directory)open("/etc/es40.cfg", O_RDONLY)         = -1 ENOENT (No such file or directory)open("/usr/etc/es40.cfg", O_RDONLY)     = -1 ENOENT (No such file or directory)open("/usr/local/etc/es40.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)open("/usr/local/etc/es40.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---+++ killed by SIGSEGV (core dumped) +++Segmentation fault (core dumped)

So maybe it is missing the configuration. I did not do a make install since Ihoped that would't be needed. Using checkinstall we can create a debianpackage. I like that over just a make install since it allows you to removethe software from your system and overall general house keeping. Aftercheckinstall I copied the provided default configuration:

cp src/es40.cfg /etc/es40.cfg

Since there is no documentation on the configuration format, I'll run it and seewhere the ship sails.

Let's run it again.

es40

Output:

   **======================================================================**   ||                             ES40  emulator                           ||   ||                              Version 0.18+                            ||   ||                                                                      ||   ||  Copyright (C) 2007-2008 by the ES40 Emulator Project                ||   ||  Website: http://sourceforge.net/projects/es40                       ||   ||  E-mail : camiel@camicom.com                                         ||   ||                                                                      ||   ||  This program is free software; you can redistribute it and/or       ||   ||  modify it under the terms of the GNU General Public License         ||   ||  as published by the Free Software Foundation; either version 2      ||   ||  of the License, or (at your option) any later version.              ||   **======================================================================**%GUI-I-INS: Installing sdl module as the ES40 GUIsys0(tsunami): $Id: System.cpp,v 1.79 2008/06/12 07:29:44 iamcamiel Exp $%FLS-F-NOREST: Flash could not be restored from rom\flash.romsys0(tsunami): $Id: Flash.cpp,v 1.19 2008/03/24 22:11:50 iamcamiel Exp $dma: $Id: DMA.cpp,v 1.9 2008/04/29 09:24:52 iamcamiel Exp $pci0.15(ali_ide).disk0.0(file): Could not open file img\disk0.img!pci0.15(ali_ide).disk0.0(file): writing 600 1kB blocks: 100%pci0.15(ali_ide).disk0.0(file): 600 MB file img\disk0.img created.pci0.15(ali_ide).disk0.0(file): Mounted file img\disk0.img, 1228800 512-byte blocks, 1536/16/50.pci0.15(ali_ide).disk1.0(file): Could not open file img\vms83.iso!*** Error in `es40': double free or corruption (fasttop): 0x0000000001167df0 ***======= Backtrace: =========/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f8245d977e5]/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f8245da037a]/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f8245da453c]es40[0x43b4b3]es40[0x4321cf]es40[0x4319b8]es40[0x4319b8]es40[0x432f80]es40(main+0x19f)[0x40573f]/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f8245d40830]es40[0x405c09]======= Memory map: ========00400000-00497000 r-xp 00000000 00:00 489903                     /usr/local/bin/es4000696000-00697000 r--p 00096000 00:00 489903                     /usr/local/bin/es4000697000-0069d000 rw-p 00097000 00:00 489903                     /usr/local/bin/es400069d000-006bf000 rw-p 00000000 00:00 0010c3000-01188000 rw-p 00000000 00:00 0                          [heap]7f81fc000000-7f81fc021000 rw-p 00000000 00:00 0

The output gave a lot more debug information, the actual relevant issue was atthe top:

Could not open file img\vms83.iso!

From the HP hobbyist download server I downloaded the ALPHA084.ISO file. Copyit to the right place and edit es40.cfg to reflect the correct filesystempath.

Run it again and see what breaks:

%GUI-I-INS: Installing sdl module as the ES40 GUIsys0(tsunami): $Id: System.cpp,v 1.79 2008/06/12 07:29:44 iamcamiel Exp $%FLS-F-NOREST: Flash could not be restored from rom\flash.romsys0(tsunami): $Id: Flash.cpp,v 1.19 2008/03/24 22:11:50 iamcamiel Exp $dma: $Id: DMA.cpp,v 1.9 2008/04/29 09:24:52 iamcamiel Exp $pci0.15(ali_ide).disk0.0(file): Could not open file img\disk0.img!pci0.15(ali_ide).disk0.0(file): writing 600 1kB blocks: 100%pci0.15(ali_ide).disk0.0(file): 600 MB file img\disk0.img created.pci0.15(ali_ide).disk0.0(file): Mounted file img\disk0.img, 1228800 512-byte blocks, 1536/16/50.pci0.15(ali_ide).disk1.0(file): Mounted file ALPHA084.ISO, 337251 2048-byte blocks, 112417/3/1.Emulator Failure: Illegal state: More than one SCSI device at the same ID: SCSIBus.cpp, line 78Segmentation fault (core dumped)

There is an IDE controller defined in the config and an SCSI controller. Commentout the SCSI controller:

  // Symbios SCSI controller  //  // There are two flavors of SCSI controllers on the emulator; 53c810  // and 53c895. The 53c810 supports 7 disks (0.0..0.6), the 53c895  // supports 15 disks (0.0..0.6 and 0.8..0.15).  //  // Right now, the 53c810 is the only controller that works with OpenVMS.//  pci0.3 = sym53c810//  {//   disk0.0 = file//    {//      file =          "img\dka0.img";//      read_only  //    }//  }

The next issue had to do with another file not found:

%GUI-I-INS: Installing sdl module as the ES40 GUIsys0(tsunami): $Id: System.cpp,v 1.79 2008/06/12 07:29:44 iamcamiel Exp $%FLS-F-NOREST: Flash could not be restored from rom\flash.romsys0(tsunami): $Id: Flash.cpp,v 1.19 2008/03/24 22:11:50 iamcamiel Exp $dma: $Id: DMA.cpp,v 1.9 2008/04/29 09:24:52 iamcamiel Exp $pci0.15(ali_ide).disk0.0(file): Mounted file img\disk0.img, 1228800 512-byte blocks, 1536/16/50.pci0.15(ali_ide).disk1.0(file): Mounted file ALPHA084.ISO, 337251 2048-byte blocks, 112417/3/1.pci0.15(ali_ide).disk1.1(ramdisk): Mounted RAMDISK, 20480 512-byte blocks, 32/16/40.pci0.19(ali_usb): $Id: AliM1543C_usb.cpp,v 1.6 2008/03/14 15:30:50 iamcamiel Exp $%DPR-F-NOREST: DPR could not be restored from rom\dpr.romsys0(tsunami): $Id: DPR.cpp,v 1.23 2008/06/12 07:29:44 iamcamiel Exp $cpu0(ev68cb)(0): $Id: AlphaCPU.cpp,v 1.82 2009/03/16 01:33:27 iamcamiel Exp $cpu1(ev68cb)(1): $Id: AlphaCPU.cpp,v 1.82 2009/03/16 01:33:27 iamcamiel Exp $pci0.7(ali): $Id: AliM1543C.cpp,v 1.66 2008/05/31 15:47:07 iamcamiel Exp $kbc: $Id: Keyboard.cpp,v 1.10 2008/05/31 15:47:09 iamcamiel Exp $%IDE-I-INIT: New IDE emulator initialized.Emulator Failure: File not found: cirrus rom file rom\vgabios-0.6a.debug.bin not found.: Cirrus.cpp, line 295Stop threads:Freeing memory in use by system...pci0.15(ali_ide).disk0.0(file): Closing file.*** Error in `es40': double free or corruption (fasttop): 0x0000000001f53aa0 ***======= Backtrace: =========/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f6f1a9977e5]/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f6f1a9a037a]/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f6f1a9a453c]es40[0x43ade9]es40[0x45597f]

In this case the VGA bios. Later on I ended up turning this off, but for nowlets download it:

wget http://savannah.gnu.org/download/vgabios/vgabios-0.6a.debug.bin -O "rom\vgabios-0.6a.debug.bin"

To skip ahead to a working situation, comment out these sections as well:

//  pci0.4 = dec21143 {// }

and

//    action = """c:\Program Files\PuTTY\putty.exe"" telnet://localhost:21264";//    action = """c:\Program Files\PuTTY\putty.exe"" telnet://localhost:21265";

and

//  pci0.2 = cirrus//  {//    rom = "rom\vgabios-0.6a.debug.bin";//  }

As you might have guessed I had to figure out all these issues by slowlytweaking the configuration until it booted up.

Configuration that boots without segfaults

Our configuration now looks like this:

  //gui = sdl  {    keyboard.use_mapping = false;    keyboard.map = "keys.map";  }  sys0 = tsunami  {    rom.srm = "cl67srmrom.exe";    rom.decompressed = "decompressed.rom";    rom.flash = "flash.rom";    rom.dpr = "rdpr.rom";    memory.bits = 30;    cpu0 = ev68cb    {      icache = true;      speed = 800M;    }    cpu1 = ev68cb    {      icache = true;      speed = 800M;    }    pci0.7 = ali{      mouse.enabled = true;      lpt.outfile = "lpt.out";    }    pci0.15 = ali_ide    {      disk0.0 = file      {        file =          "disk0.img";        serial_number = "VMS";        rev_number    = "8.4";        model_number  = "OpenVMS8.3";        read_only     = false;        cdrom         = false;        autocreate_size = 600M;      }      disk1.0 = file      {        file =          "ALPHA084.ISO";        read_only     = true;        cdrom         = true;      }      disk1.1 = ramdisk      {        size = 10M;      }    }    pci0.19 = ali_usb {}    serial0 = serial {      port = 21264;    }  }

SRM (System Reference Manual) firmware

The emulator needs special firmware from HP, the SRM.

The SRM firmware (also called the SRM console) is the boot firmware written byDEC for systems based on the Alpha AXP microprocessor. The acronym SRM isderived from the phrase Alpha System Reference Manual, the publication detailingthe Alpha AXP architecture and which specified various features of the SRMfirmware. The SRM console was initially designed to boot DEC's OSF/1 AXP (latercalled Digital UNIX and finally Tru64 UNIX) and OpenVMS operating systems,although various other operating systems (such as Linux, NetBSD, OpenBSD, andFreeBSD, for example) were also written to boot from the SRM console. The thirdproprietary operating system published for the Alpha AXP architecture -Microsoft Windows NT - did not boot from SRM; instead, Windows booted from theARC (multi platform "Advanced RISC Computing") boot firmware. (ARC is also knownas AlphaBIOS.)

When the system is booted, the SRM console is displayed as a blue screen with aprompt. The prompt looks like P00>>> (the 00 indicates the primaryprocessor). On multi-processor machines, the prompt could be P01>>>, P02>>>,etc. It views your NVRAM and devices as a pseudo-filesystem. You can see this ifyou use the ls command. Also, it contains a fairly large set of diagnostic,setup, and debugging utilities As well, SRM has environment variables, a numberof which are pre-defined and correspond to locations in NVRAM. You can view theentire list of environment variables and their values with the show command(there are quite a few of them, so you will probably want to pipe its output tomore). You can also show variables matching a "glob" pattern, for example,show boot* will show all the variables starting in "boot". Read more about theSRM here or on wikipedia.

Download rom image from here: cl67srmrom.exe. It can be found on HP'spublic FTP servers as well if needed, see the link above.

Make sure the filename in the configuration matches:

rom.srm = "cl67srmrom.exe";

Boot up es40, finally

Now that we have a configuration file that does not cause a segfault, we canboot up and connect to telnet to access the emulator.

  $ es40

Output:

     **======================================================================**     ||                             ES40  emulator                           ||     ||                              Version 0.18+                            ||     ||                                                                      ||     ||  Copyright (C) 2007-2008 by the ES40 Emulator Project                ||     ||  Website: http://sourceforge.net/projects/es40                       ||     ||  E-mail : camiel@camicom.com                                         ||     ||                                                                      ||     ||  This program is free software; you can redistribute it and/or       ||     ||  modify it under the terms of the GNU General Public License         ||     ||  as published by the Free Software Foundation; either version 2      ||     ||  of the License, or (at your option) any later version.              ||     **======================================================================**  %GUI-I-INS: Installing sdl module as the ES40 GUI  sys0(tsunami): $Id: System.cpp,v 1.79 2008/06/12 07:29:44 iamcamiel Exp $  %FLS-F-NOREST: Flash could not be restored from rom\flash.rom  sys0(tsunami): $Id: Flash.cpp,v 1.19 2008/03/24 22:11:50 iamcamiel Exp $  dma: $Id: DMA.cpp,v 1.9 2008/04/29 09:24:52 iamcamiel Exp $  pci0.15(ali_ide).disk0.0(file): Mounted file img\disk0.img, 1228800 512-byte blocks, 1536/16/50.  pci0.15(ali_ide).disk1.0(file): Mounted file ALPHA084.ISO, 337251 2048-byte blocks, 112417/3/1.  pci0.15(ali_ide).disk1.1(ramdisk): Mounted RAMDISK, 20480 512-byte blocks, 32/16/40.  pci0.19(ali_usb): $Id: AliM1543C_usb.cpp,v 1.6 2008/03/14 15:30:50 iamcamiel Exp $  %DPR-F-NOREST: DPR could not be restored from rom\dpr.rom  sys0(tsunami): $Id: DPR.cpp,v 1.23 2008/06/12 07:29:44 iamcamiel Exp $  cpu0(ev68cb)(0): $Id: AlphaCPU.cpp,v 1.82 2009/03/16 01:33:27 iamcamiel Exp $  cpu1(ev68cb)(1): $Id: AlphaCPU.cpp,v 1.82 2009/03/16 01:33:27 iamcamiel Exp $  pci0.7(ali): $Id: AliM1543C.cpp,v 1.66 2008/05/31 15:47:07 iamcamiel Exp $  kbc: $Id: Keyboard.cpp,v 1.10 2008/05/31 15:47:09 iamcamiel Exp $  %IDE-I-INIT: New IDE emulator initialized.  pci0.2(cirrus): $Id: Cirrus.cpp,v 1.23 2008/05/31 15:47:09 iamcamiel Exp $  %SYS-I-READROM: Reading original ROM image from cl67srmrom.exe.  %SYS-I-DECOMP: Decompressing ROM image.  0%....10%....20%....30%....40%....50%....60%....70%....80%....90%......100%  %SYS-I-ROMWRT: Writing decompressed rom to rom\decompressed.rom.  %SYM-I-PATCHROM: Patching ROM for speed.  %SYS-I-ROMLOADED: ROM Image loaded successfully!  %DPR-F-NOREST: DPR could not be restored from rom\dpr.rom  sys0(tsunami): $Id: DPR.cpp,v 1.23 2008/06/12 07:29:44 iamcamiel Exp $  Start threads: cpu0 cpu1 ali kbd ide0 ide1 cirrus

It will wait with booting until you connect to telnet, then it will bootthrough:

  serial0(serial): Waiting for connection on port 21264.  serial0(serial): $Id: Serial.cpp,v 1.51 2008/06/03 09:07:56 iamcamiel Exp $  %SYS-I-READROM: Reading decompressed ROM image from rom\decompressed.rom.  %SYM-I-PATCHROM: Patching ROM for speed.  %SYS-I-ROMLOADED: ROM Image loaded successfully!  dpr: 16384 bytes restored.  %DPR-I-RESTST: DPR state restored from rom\dpr.rom  sys0(tsunami): $Id: DPR.cpp,v 1.23 2008/06/12 07:29:44 iamcamiel Exp $  Start threads: cpu0 ali kbd ide0 ide1 srl0  *** CPU0 *** STARTING ***  Arbitration 0000000000010000 from CPU 0 (@13e39)... won  0000000800010000  Arbitration clear from CPU 0 (@13f55).  Arbitration 0000000000010000 from CPU 0 (@13351)... won  0000000800010000  Arbitration clear from CPU 0 (@133b9).  Arbitration 0000000000010000 from CPU 0 (@13351)... won  0000000800010000  Arbitration clear from CPU 0 (@133b9).  Arbitration 0000000000010000 from CPU 0 (@13351)... won  0000000800010000  Arbitration clear from CPU 0 (@133b9).

Connect to telnet on port 21264 from a different terminal:

$ telnet 127.0.0.1 21264

Output:

Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.     This is serial port #0 on ES40 Emulator

Quoting from the es40 site:

The port 21264 was choosen on purpose. Actually this was the first EV6 Alphaprocessor CPU model number.

There seems to be a GUI option, but that window was very tall and small and wasnot resizable. I therefore choose to use telnet only.

SYSFAULT CPU1 - pc = 001a0e84

The boot continued, and I was happy:

     OpenVMS PALcode V  1  .  9  8  -  1  0  4    , Tru64 UNIX PALcode V 1  .  9  2  -  1  0  5       starting console on CPU 0initialized idle PCBinitializing semaphoresinitializing heapinitial heap 240c0memory low limit = 1b0000 heap = 240c0, 17fc0initializing driver structuresinitializing idle process PIDinitializing file systeminitializing hardwareinitializing timer data structureslowering IPLCPU 0 speed is 800 MHzcreate dead eatercreate pollcreate timercreate powerupaccess NVRAMMemory size 1024 MBtesting memory..probe I/O subsystemprobing hose 1, PCIprobing hose 0, PCIprobing PCI-to-ISA bridge, bus 1bus 0, slot 15 -- dqa -- Acer Labs M1543C IDEbus 0, slot 15 -- dqb -- Acer Labs M1543C IDEstarting driversentering idle loopstarting console on CPU 1initialized idle PCBinitializing idle process PIDlowering IPL[...]SYSFAULT CPU1 - pc = 001a0e84exception context saved starting at 001ACD10  CPU 1 speed is 7692 MHz  create powerup

And it hang. My happiness was short. Searching around the internet lead me tothe following support information. It states:

This is not an error caused by a hardware failure. The SRM console decreasesor increases its dynamic memory allocation (called heap space) to accomodate thehardware configuration, to include the PCI devices installed. The system willadd 64kb of heap space for each re-init until it has adequate space. A few re-inits are possible until it has enough.

The windows way of solving problems. Reboot until it works. I tried it a fewtimes, and suprisingly, it worked.

     OpenVMS PALcode V  1  .  9  8  -  1  0  4    , Tru64 UNIX PALcode V 1  .  9  2  -  1  0  5       starting console on CPU 0initialized idle PCBinitializing semaphoresinitializing heapinitial heap 240c0memory low limit = 1b0000 heap = 240c0, 17fc0initializing driver structuresinitializing idle process PIDinitializing file systeminitializing hardwareinitializing timer data structureslowering IPLCPU 0 speed is 800 MHzcreate dead eatercreate pollcreate timercreate powerupaccess NVRAMMemory size 1024 MBtesting memory...probe I/O subsystemprobing hose 1, PCIprobing hose 0, PCIprobing PCI-to-ISA bridge, bus 1bus 0, slot 15 -- dqa -- Acer Labs M1543C IDEbus 0, slot 15 -- dqb -- Acer Labs M1543C IDEstarting driversentering idle loopstarting console on CPU 1initialized idle PCBinitializing idle process PIDlowering IPL*** system serial number not set. use set sys serial num command.Partition 0, Memory base: 000000000, size: 040000000initializing GCT/FRU at 1c8000Initializing dqa dqbMemory Testing and Configuration Status  Array       Size       Base Address    Intlv Mode---------  ----------  ----------------  ----------    0       1024Mb     0000000000000000    4-Way     1024 MB of System MemoryTesting the System[...]

And at last, it dropped me into the SRM prompt:

AlphaServer ES40 Console V7.3-1, built on Feb 27 2007 at 12:57:47P00>>>

Using the reference manual I found out that you have to issue a boot commandwith a device. Use show dev to show all devices

P00>>>show devdqa0.0.0.15.0              DQA0                    OpenVMS8 .3dqb0.0.1.15.0              DQB0                  ALPHA084 .ISOdqb1.1.1.15.0              DQB1                   ES40RAMD ISKdva0.0.0.1000.0            DVA0P00>>>

Since we want to boot from the ISO, our boot device is DQB0:

P00>>>boot dqb0(boot dqb0.0.1.15.0 -flags 0)block 0 of dqb0.0.1.15.0 is a valid boot blockreading 1230 blocks from dqb0.0.1.15.0bootstrap code read inbase = 200000, image start = 0, image bytes = 99c00(629760)initializing HWRPB at 2000initializing page table at 3ff54000initializing machine statesetting affinity to the primary CPUjumping to bootstrap codeCPU 1 unable to complete console mode transition 1CPU 1: begin = 501958484969, end = 525958485958, delta = 24000000989CPU 1 unable to complete console mode transition 2CPU 1: begin = 525961938442, end = 549961938919, delta = 24000000477SYSFAULT CPU0 - pc = 001a0e84exception context saved starting at 0002D9E0

A CPU error? Searching the internet gave no real help so I decided to commentout the second CPU from the config, so that we emulate a single CPU machine:

//cpu1 = ev68cb//{//  icache = false;//  speed = 800M;//}

Installing OpenVMS 8.4

Finally, after a few hours of compiling, tinkering and tweaking, it boots up!

       OpenVMS (TM) Alpha Operating System, Version V8.4      Copyright 1976-2010 Hewlett-Packard Development Company, L.P.Please enter date and time (DD-MMM-YYYY  HH:MM)

This looks like a normal installation screen. Yay! It is very slow however, ittakes almost 10 seconds after I entered the date for the next line of text toshow up.

Please enter date and time (DD-MMM-YYYY  HH:MM)  24-APR-2018 21:12    Installing required known files...    Configuring devices...    ****************************************************************    You can install or upgrade the OpenVMS ALPHA operating system    or you can install or upgrade layered products that are included    on the OpenVMS ALPHA distribution media (CD/DVD).    You can also execute DCL commands and procedures to perform    "standalone" tasks, such as backing up the system disk.    Please choose one of the following:        1)  Upgrade, install or reconfigure OpenVMS ALPHA Version V8.4        2)  Display layered products that this procedure can install        3)  Install or upgrade layered products        4)  Show installed products        5)  Reconfigure installed products        6)  Remove installed products        7)  Find, Install or Undo patches; Show or Delete Recovery Data        8)  Execute DCL commands and procedures        9)  Shut down this systemEnter CHOICE or ? for help: (1/2/3/4/5/6/7/8/9/?)

We want to install, so choose 1.

 ***********************************************************    This procedure will ask a series of questions.          () - encloses acceptable answers          [] - encloses default answers    Type your response and press the <Return> key.  Type:          ? - to repeat an explanation          ^ - to change prior input (not always possible)          Ctrl/Y - to exit the installation procedure    There are two choices for installation/upgrade:    Initialize - Removes all software and data files that were        previously on the target disk and installs OpenVMS ALPHA.    Preserve -- Installs or Upgrades OpenVMS ALPHA on the target disk        and retains all other contents of the target disk.   * Note: You cannot use preserve to install OpenVMS ALPHA on a disk on        which any other operating system is installed.  This includes        implementations of OpenVMS for other architectures.Do you want to INITIALIZE or to PRESERVE? [PRESERVE] INITIALIZE

This is a new installation, so wipe all the things.

Enter device name for target disk: (? for choices) DQA0

Our boot device is the CDROM, DQB0, the prompt earlier shows DQA0 as the(virtual) disk.

Enter volume label for target system disk: [ALPHASYS] username2

If you're going to cluster, every disk must have a unique name. I tend to gowith the system hostname as system disk name.

    The target system disk can be initialized with On-Disk Structure    Level 2 (ODS-2) or Level 5 (ODS-5).  (? for more information)Do you want to initialize with ODS-2 or ODS-5? (2/5/?) 5

ODS, meaning on disk structure, is part of the Files-11 filesystem. Compareit with ext2/3/4.

"Files-11" is the general term for five separate file systems, known as on-disk"structure (ODS) levels 1 through 5.

Read more here

Do you want to enable hard links? (Yes/No/?) yes

Not sure what the impact is but lets do it. Enable those hard links.

    You have chosen to install OpenVMS ALPHA on a new disk.    The target system disk, DQA0:, will be initialized    with structure level 5 (ODS-5).    Hard links WILL be enabled.    The disk will be labeled username2.    Any data currently on the target system disk will be lost.Is this OK? (Yes/No) yes

This is an overview of what we selected. Go ahead.

    Initializing and mounting target....%MOUNT-F-ACCVIO, access violation, reason mask=!XB, virtual address=!XH, PC=!XH, PS=!XL    DQA0: was previously selected as the target system.    DQA0: has been modified.    If you need to return the target system to its original state,    you may need to restore your backup of the target system.    If you want to re-do the installation, HP recommends that you    restore your backup of the target system.  Repeating the    installation may succeed, but it may also introduce subtle problems.

A failure again? Remember, I'm several hours into this project without success.Let's try again then.

Enter device name for target disk: [DQA0] (? for choices) ?Device                  Device           Error    Volume         Free  Trans Mnt Name                   Status           Count     Label        Blocks Count CntDQB0:                   Mounted wrtlck       0  ALPHA084        135393    79   1DQB1:                   Online               0DVA0:                   Offline              0DQA0:                   Online               0DQA1:                   Offline              1DAD0:                   Online               0    ? was previously selected as the target system.    ? has been modified.    If you need to return the target system to its original state,    you may need to restore your backup of the target system.    If you want to re-do the installation, HP recommends that you    restore your backup of the target system.  Repeating the    installation may succeed, but it may also introduce subtle problems.Enter device name for target disk: [DQA0] (? for choices)    DQA0: is now labeled username2.Do you want to keep this label? (Yes/No) [Yes]    The target system disk can be initialized with On-Disk Structure    Level 2 (ODS-2) or Level 5 (ODS-5).  (? for more information)Do you want to initialize with ODS-2 or ODS-5? (2/5/?) 5    Hard links can be enabled on ODS-5 disks.  (? for more information)Do you want to enable hard links? (Yes/No/?) yes    You have chosen to install OpenVMS ALPHA on a new disk.    The target system disk, DQA0:, will be initialized    with structure level 5 (ODS-5).    Hard links will NOT be enabled.    The disk will be labeled username2.    Any data currently on the target system disk will be lost.Is this OK? (Yes/No) yes    Initializing and mounting target....    Creating page and swap files....

That's weird, none of my choices were different but the result is that it doescontinue with the installation.

    You must enter a password for the SYSTEM account.    The password must be a minimum of 8 characters in length, and    may not exceed 31 characters.  It will be checked and verified.    The system will not accept passwords that can be guessed easily.    The password will not be displayed as you enter it. Password for SYSTEM account:Re-enter SYSTEM password for verification:

This is just like the OpenVMS 7.3 install. Enter a system password.

Will this system be a member of an OpenVMS Cluster? (Yes/No)Will this system be an instance in an OpenVMS Galaxy? (Yes/No) no

Clustering will be configured later.

    For your system to operate properly, you must set two parameters:    SCSNODE and SCSSYSTEMID.    SCSNODE can be from 1 to 6 letters or numbers.  It must contain at    least one letter.    If you plan to use DECnet, SCSNODE must be the DECnet Phase IV    node name, or the DECnet-Plus (Phase V) node synonym.    If you have multiple OpenVMS systems, the SCSNODE on each system    must be unique.Enter SCSNODE: username2    If you plan to use DECnet, SCSSYSTEMID must be set based on the    DECnet Phase IV address.Do you plan to use DECnet? (Yes/No) [Yes] yes    DECnet Phase IV addresses are in the format        DECnet area number.DECnet node number    DECnet area number is a number between 1 and 63.    DECnet node number is a number between 1 and 1023.    If you plan to use DECnet WITHOUT Phase IV compatible addresses,    enter 0.0.Enter DECnet (Phase IV) Address: [1.1]      SCSSYSTEMID will be set to 1025.      This was calculated as follows:          (DECnet area number * 1024) + DECnet node number

This is the networking stuff for DECnet. Since this is a test setup we can usethe defaults.

  Configuring the Local Time ZoneTIME ZONE SPECIFICATION -- MAIN Time Zone Menu            "*" indicates a menu  0* GMT  1* AFRICA          17) EST             33) IRAN            49) PORTUGAL  2* AMERICA         18) EST5EDT         34) ISRAEL          50) PRC  3* ANTARCTICA      19* ETC             35) JAMAICA         51) PST8PDT  4* ARCTIC          20* EUROPE          36) JAPAN           52) ROC  5* ASIA            21) FACTORY         37) KWAJALEIN       53) ROK  6* ATLANTIC        22) GB-EIRE         38) LIBYA           54) SINGAPORE  7* AUSTRALIA       23) GB              39) MET             55) TURKEY  8* BRAZIL          24) GMT-0           40* MEXICO          56) UCT  9* CANADA          25) GMT             41* MIDEAST         57) UNIVERSAL 10) CET             26) GMT0            42) MST             58* US 11* CHILE           27) GMTPLUS0        43) MST7MDT         59) UTC 12) CST6CDT         28) GREENWICH       44) NAVAJO          60) W-SU 13) CUBA            29) HONGKONG        45) NZ-CHAT         61) WET 14) EET             30) HST             46) NZ              62) ZULU 15) EGYPT           31) ICELAND         47* PACIFIC 16) EIRE            32* INDIAN          48) POLANDPress "Return" to redisplay, enter "=" to search or "?" for help, orSelect the number above that best represents the desired time zone: 0ETC Time Zone Menu                                        "*" indicates a menu  0* RETURN TO MAIN TIME ZONE MENU  1) GMT-0           10) GMT-4           19) GMTPLUS1        28) GMTPLUS7  2) GMT-1           11) GMT-5           20) GMTPLUS10       29) GMTPLUS8  3) GMT-10          12) GMT-6           21) GMTPLUS11       30) GMTPLUS9  4) GMT-11          13) GMT-7           22) GMTPLUS12       31) GREENWICH  5) GMT-12          14) GMT-8           23) GMTPLUS2        32) UCT  6) GMT-13          15) GMT-9           24) GMTPLUS3        33) UNIVERSAL  7) GMT-14          16) GMT             25) GMTPLUS4        34) UTC  8) GMT-2           17) GMT0            26) GMTPLUS5        35) ZULU  9) GMT-3           18) GMTPLUS0        27) GMTPLUS6Press "Return" to redisplay, enter "=" to search or "?" for help, orSelect the number above that best represents the desired time zone: 19You selected ETC / GMTPLUS1 as your time zone.Is this correct? (Yes/No) [YES]: yes

Time zone here in The Netherlands is GMT+1.

    Configuring the Time Differential Factor (TDF)    Default Time Differential Factor is -1:00.    The Time Differential Factor (TDF) is the difference between your    system time and Coordinated Universal Time (UTC).  UTC is similar    in most respects to Greenwich Mean Time (GMT).    The TDF is expressed as hours and minutes, and should be entered    in the hh:mm format.  TDFs for the Americas will be negative    (-3:00, -4:00, etc.); TDFs for Europe, Africa, Asia and Australia    will be positive (1:00, 2:00, etc.).Enter the Time Differential Factor [-1:00]:    NEW SYSTEM TIME DIFFERENTIAL FACTOR = -1:00Is this correct? [Y]:

Defaults are fine here.

Do you want to register any Product Authorization Keys? (Yes/No) [Yes] no

Entering the license later on is way easier then during the installation.

    The following products are part of the the OpenVMS installation;    they will be installed along with the OpenVMS operating system:        o Availability Manager (base) for OpenVMS Alpha        o CDSA for OpenVMS Alpha%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=FFFFFFFFFFFFFFB8, PC=000000007FDC5210, PS=0000001B  Improperly handled condition, image exit forced.    Signal arguments:   Number = 0000000000000005                        Name   = 000000000000000C                                 0000000000000000                                 FFFFFFFFFFFFFFB8                                 000000007FDC5210                                 000000000000001B    Register dump:    R0  = 000000007FD1A7B8  R1  = 000000007FC71748  R2  = 000000007FD1A888    R3  = 000000007FC717C0  R4  = 00000000000310FC  R5  = 000000007FFEFD00    R6  = 000000007FC71768  R7  = 000000007FCC526C  R8  = 000000007FF9CDE8    R9  = 000000007FC719B0  R10 = 000000007FC717C0  R11 = 0000000000000001    R12 = 000000007FFCDA98  R13 = 000000007FD22318  R14 = 0000000000000000    R15 = 000000007FD1E970  R16 = 000000007FC71768  R17 = 0000000000000000    R18 = 000000007FC71710  R19 = 0000000000000001  R20 = 0000000000000003    R21 = 000000007FC7174E  R22 = 0000000000000007  R23 = 000000007FC71719    R24 = 0000000000000000  R25 = 0000000000010B44  R26 = 000000007FDC5204    R27 = 000000007FD1A790  R28 = 0000000000000001  R29 = 000000007FC71740    SP  = 000000007FC71740  PC  = 000000007FDC5210  PS  = 000000000000001B%SYSTEM-F-ACCVIO, access violation, reason mask=!XB, virtual address=!XH, PC=!XH, PS=!XL    Installation has been terminated by an unexpected error.    The installation has not completed normally.    You should correct the situation which caused the termination    and then re-do the installation or upgrade.  Process AXPVMS INSTALL logged out at 23-APR-2018 20:37:00.40Press Return to continue...

No! We were so far this time. I tried the install another time, this time withODS-2 as the filesystem, and it failed again, just a little further than theprevious time. Literally, 1 line later:

    The following products are part of the the OpenVMS installation;    they will be installed along with the OpenVMS operating system:        o Availability Manager (base) for OpenVMS Alpha        o CDSA for OpenVMS Alpha        o KERBEROS for OpenVMS Alpha%SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=FFFFFFFFFFFFFFB8, PC=000000007FDC5210, PS=0000001B  Improperly handled condition, image exit forced.    Signal arguments:   Number = 0000000000000005                        Name   = 000000000000000C                                 0000000000000000                                 FFFFFFFFFFFFFFB8                                 000000007FDC5210                                 000000000000001B    Register dump:    R0  = 000000007FD1A7B8  R1  = 000000007FC71748  R2  = 000000007FD1A888    R3  = 000000007FC717C0  R4  = 00000000000310FC  R5  = 000000007FFEFD00    R6  = 000000007FC71768  R7  = 000000007FCC526C  R8  = 000000007FF9CDE8    R9  = 000000007FC719B0  R10 = 000000007FC717C0  R11 = 0000000000000001    R12 = 000000007FFCDA98  R13 = 000000007FD22318  R14 = 0000000000000000    R15 = 000000007FD1E970  R16 = 000000007FC71768  R17 = 0000000000000000    R18 = 000000007FC71710  R19 = 0000000000000001  R20 = 0000000000000003    R21 = 000000007FC7174E  R22 = 0000000000000007  R23 = 000000007FC71719    R24 = 0000000000000000  R25 = 0000000000010B44  R26 = 000000007FDC5204    R27 = 000000007FD1A790  R28 = 0000000000000001  R29 = 000000007FC71740    SP  = 000000007FC71740  PC  = 000000007FDC5210  PS  = 000000000000001B%SYSTEM-F-ACCVIO, access violation, reason mask=!XB, virtual address=!XH, PC=!XH, PS=!XL    Installation has been terminated by an unexpected error.    The installation has not completed normally.    You should correct the situation which caused the termination    and then re-do the installation or upgrade.  Process AXPVMS INSTALL logged out at 23-APR-2018 20:41:53.85Press Return to continue...

Reading through more dev docs from the emulator, I found this:

There is a permissions violation during install. Do not abort it, and theinstall will work anyway. (note Camiel: differing results of installationreported. A lot seems to depend on timing).

I tried a few more times, playing with the config file (different CPU speed,different disk sizes etc), but I ran into other failures like these:

Exception in CPU thread: System exception: cannot signal semaphore: count would exceed maximum.Emulator Failure: Threading error: CPU thread has died: AlphaCPU.cpp, line 532Stop threads: cpu0 ali kbd ide0 ide1 srl0Freeing memory in use by system...pci0.15(ali_ide).disk0.0(file): Closing file.*** Error in `es40': double free or corruption (fasttop): 0x0000000001886fe0 ***======= Backtrace: =========/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fe419d977e5]/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7fe419da037a]/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fe419da453c]es40[0x43ade9]es40[0x45597f]es40[0x4559e9]es40(main+0x367)[0x405907]/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fe419d40830]es40[0x405c09]======= Memory map: ========00400000-00497000 r-xp 00000000 00:00 489903                     /usr/local/bin/es4000696000-00697000 r--p 00096000 00:00 489903                     /usr/local/bin/es4000697000-0069d000 rw-p 00097000 00:00 489903                     /usr/local/bin/es400069d000-006bf000 rw-p 00000000 00:00 001868000-018aa000 rw-p 00000000 00:00 0      

Since I already spent a few hours tinkering without result, the only posthere wasn't very usefull since my disk is only 600 MB, and I didn't findany other information, I decided to stop here and try it in another emulator,probably FreeAXP for Windows.

Let's hope the x86 port is finished soon so it can run under KVM and virtualbox.

Tags: alpha, blog, dec, decus, es40, itanium, openvms, pdp, simh, vax, vms