Installing Ultrix 4.5 on SIMH

From Computer History Wiki
Jump to: navigation, search

This WORK-IN-PROGRESS guide will be a simple guide to installing ULTRIX 4.5 for VAX on SIMH.

Requirements

The following is a list of things required for installation

  • A recent version of the SIMH emulator
    • Make sure the binary you're using includes Ethernet support
    • I'm using a self-compiled version (git revision 0e8c0aea)
  • An ISO image of ULTRIX 4.5 for VAX
    • See the "Resources" section for a download link
    • It's probably also possible to install it from tape, although I don't know if any installation tapes for ULTRIX 4.5 exist
  • Optional stuff (might get added to the guide later):
    • Starfish Ultrix Freeware CDs from here

SimH configuration

The machine I'm using to run ULTRIX has the following configuration

  • DEC MicroVAX 3800
  • 64mb memory
  • DELQA network card (XQ0)
  • Two RA90 disk drives (with 1.2gb each) attached to an RQDX3 controller (RQ0 and RQ1)
  • CD ROM drive attached to the same RQDX3 controller as unit 2 (RQ2)
  • TK50 tape attached as unit 0 on the first TQK50 controller (TQ0)
  • DZV11 terminal multiplexer with 16 lines, attached to telnet port 1005 (DZ)
  • LPT line printer attached to text file printer_output.txt

Here's my config file (I called it simh.conf)

;
; SimH 4.0 Configuration file for MicroVAX 3800
;
; Host System      : DEC MicroVAX 3800
; Operating System : DEC Ultrix v4.5
; Memory           : 64mb
; Network config   : XQ: Ethernet, 08:00:2b:04:14:02
; Disks            : RQ0: RA90, 1.2gb
;                    RQ1: RA90, 1.2gb
; CDROMs           : RQ2: iso file
; Tape config      : TQ0: TK50, 94mb
;

load -r ka655x.bin

; NVRAM
attach NVR nvram.bin

; CPU config
set CPU 64m
set CPU conhalt
set CPU idle=all

; configure console to 7-bit only
set TTO 7b
set TTI 7b

; Disk drives
set RQ0 ra90
attach RQ0 rq0-ra90.dsk
set RQ1 ra90
attach RQ1 rq1-ra90.dsk
set RQ2 CDROM
attach -r RQ2 ultrix-vax-os-v4.5.mode1.ufs.iso
; MD5 sum: 19df0753c27f195e9f1d2f139a3b4629 *ultrix-vax-os-v4.5.mode1.ufs.iso
set RQ3 dis

; Tape
set TQ tk50
;attach tq0 filename-to-tape-file
set TQ1 dis
set TQ2 dis
set TQ3 dis

; serial port, simulated by Telnet to port 1005
set DZ LINES=16
set DZ 8B
attach DZ 1005 NoBuffer

; printer
set LPT enable
attach LPT printer_output.txt

; Disable unused peripherals
set CR dis
set RL dis
set TS dis

; Network interface (08-00-2b is the DEC prefix, the 04-14-02 part is arbitrary)
set XQ MAC=08-00-2b-04-14-02
attach XQ0 eth0

; serial console (launch directly after booting CPU)
set console telnet=1001

; experimental
;set QVSS en

; boot the system
;boot CPU

Note that I'm using a telnet console (for easier copy/paste on Windows), which means that directly after running this config file (via do simh.conf from Simh) you will need to connect via telnet to localhost:1001 or the boot will abort. If you are on Linux, or just don't want that, remove the set console telnet=1001 line.

Also note that you might need to attach XQ0 to a different ethernet device. Use "show ether" in SimH to list all available devices on your system and modify the attach XQ0 eth0 line accordingly.

Running the Emulator

Either run vax.exe simh.conf from the Windows command line, or just double-click the VAX.EXE executable and type do simh.conf.

On the first launch it might take some time because SimH has to create the disk images (~2.5 gb total). It should look something like this

MicroVAX 3900 simulator V4.0-0 Beta        git commit id: 0e8c0aea
NVR: buffering file in memory
RQ2: unit is read only
Listening on port 1005
WinPcap version 4.1.2 (packet.dll version 4.1.0.2001), based on libpcap version 1.0 branch 1_0_rel0b (20091008)
Eth: opened OS device \Device\NPF_{A41A1651-DD4D-4735-A4E0-88353165C2EC}
Listening on port 1001
sim>

Type the following to start the emulation (note: you can also uncomment that line from the end of the config file to have the emulation start right away)

sim> boot cpu
Waiting for console Telnet connection

Now would be a good time to connect your telnet session (I use a batch file for this), otherwise the boot process will timeout.

On your console, you should see something like this:

Connected to the MicroVAX 3900 simulator CON-TEL device



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

This is the VAX's boot prompt. Normally you just type

>>>boot <device>

where <device> is one of the following

  • MUA<num>: TK tape device number <num> (1 to 4)
  • DUA<num>: RQ disk device number <num> (1 to 4)

You can use show device to see the installed (and detected) devices you can boot from, and show boot to see which device will be the default if you just type boot (or b for short):

>>>show device
UQSSP Disk Controller 0 (772150)
-DUA0 (RA90)
-DUA1 (RA90)
-DUA2 (RRD40)

UQSSP Tape Controller 0 (774500)
-MUA0 (TK50)

Ethernet Adapter 0 (774440)
-XQA0 (08-00-2B-04-14-02)
>>>show boot
MUA0

Since we want to boot from CDROM, which is unit 2, we can use

>>>boot DUA2

Note: You can add flags to boot into single user mode, or to boot in interactive mode (so-called conversational boot, where the system prompts you for a kernel file name to load). For details see the Guide to ULTRIX-32 System Startup and Shutdown, linked to in the References section. To use it, add the /R5:<flags> option to the boot command, where flags is 0 (default multi-user), 1 (conversational multi-user), 2 (single-user) or 3 (conversational single-user). For example

>>>boot/r5:3 dua0

Note: You can also boot from ethernet (boot XQA0) but this requires a DEC-specific boot server in your network (the protocol is called MOP for Maintenance Operations Protocol), which is beyond the scope of this document. I did get it to work a few years ago though, but it was a bit difficult to set up.

For a list and description of all commands available in the bootloader (hint: there are lots), see the KA655 CPU System Maintenance guide mentioned in the References section..

Bootstrapping ULTRIX

You will see the following output on the first boot.

>>>boot dua2
(BOOT/R5:0 DUA2



  2..
-DUA2
  1..0..


Ultrixboot - V4.5  Sun Sep 17 13:03:13 EDT 1995

Loading (a)vmunix ...

Sizes:
text = 945424
data = 1290240
bss  = 757940
Starting at 0x5219

ULTRIX V4.5 (Rev. 47) System #2: Wed Oct 18 12:06:55 EDT 1995
real mem  = 67043328
avail mem = 61517824
Buffer configuration adjusted to run with small system page table
using 123 buffers containing 1007616 bytes of memory
KA655 processor with an FPU
        CPU microcode rev = 6, processor firmware rev = 83
Q22 bus
uda0 at uba0
uq0 at uda0 csr 172150 vec 774, ipl 17
klesiu0 at uba0
uq16 at klesiu0 csr 174500 vec 770, ipl 17
ra1 at uq0 slave 1 (RA90)
ra2 at uq0 slave 2 (RRD40)
ra0 at uq0 slave 0 (RA90)
tms0 at uq16 slave 0 (TK50)
WARNING: clock gained 47 days -- CHECK AND RESET THE DATE!

*** STANDALONE ULTRIX ENVIRONMENT ***

If you select the BASIC Installation option from the list that follows,
the installation software creates file systems on default partitions on
your system disk and loads the mandatory ULTRIX software subsets.

If you require additional installation choices, select the ADVANCED
Installation option.

Select one of the following options:

        1) BASIC Installation
        2) ADVANCED Installation
        3) System management

Enter your choice:

Now we want to do an ADVANCED Installation, but when we try to, it will take a few seconds until the installation program dumps us to a prompt because it couldn't find a valid device to install from and to:

Enter your choice: 2

*** SOFTWARE DISTRIBUTION DEVICE SELECTION ***

The 'Guide to Installing ULTRIX' explains the following table
of software distribution devices and which installation media you should
load on it:

No valid device is found.
Contact a DIGITAL field service representative.

#

The problem seems to be that the hardware SimH emulates is not fully supported by ULTRIX (or is misdetected -- I'm not entirely sure myself). The good thing is that the internet has the correct solution, which is to fix some lines in the installation shell script. The fact that the basic system that is running at this point doesn't have vi, or even cat, makes this a bit harder ;-)

The only option you have is ed, the old UNIX editor. For a quick introduction, see here.

To load the file in the editor, use

# ed install.1
16763

You can see the entire file with

1,$l

but be warned, the output is quite long and it'll take some time to print it all out.

To fix it, use the following commands (the lines in bold is what you type, everything else is the response from ed)

# ed install.1
16763
173l
BTD=`btd`
173s/`btd`/ra2/
173l
BTD=ra2
193l
rz* )
193s/rz/ra/
193l
ra* )
w
16761
q
#

First, we list line 173, then we change it from BTD=`btd` to BTD=ra2, which happens to be the CDROM device and unit number we're installing from (if you changed that in your config, use the correct name here!)

Then we change line 193 from rz* ) to ra* ) since we're trying to install on an RA type disk which was apparently not supported in ULTRIX out of the box.

Note: These changes also work for Ultrix 4.3 and 4.4. If you would like to try 4.2, use 164 instead of 173 and 184 instead of 193.

After writing the file with w and quitting ed with q, we're back at the prompt, at which point we can use CTRL+D to retry the installation:

# ^D
*** STANDALONE ULTRIX ENVIRONMENT ***

If you select the BASIC Installation option from the list that follows,
the installation software creates file systems on default partitions on
your system disk and loads the mandatory ULTRIX software subsets.

If you require additional installation choices, select the ADVANCED
Installation option.

Select one of the following options:

        1) BASIC Installation
        2) ADVANCED Installation
        3) System management

Enter your choice: 2

*** SYSTEM DISK SELECTION ***

The 'Guide to Installing ULTRIX' explains the following table
of system disk drives.  Select one of the devices below to contain the
root file system:

SYSTEM DISK TABLE

Selection   Device     ULTRIX     Device       Controller   Controller
            Name       Name       Number       Name         Number
----------------------------------------------------------------------
    1       RA90        ra0          0         RQDX3          0
    2       RA90        ra1          1         RQDX3          0
----------------------------------------------------------------------

Enter your choice: 1

You selected RA90, device number 0. Make sure this disk drive
is on line and write-enabled (if applicable to your disk drive), then
confirm your choice.

Use RA90, ra0, for your system disk? (y/n) []: y

The installation procedure now allocates the root file system on
partition 'a' of the system disk, ra0 RA90.

Making the root file system on ra0 RA90.

The installation procedure is now restoring the root file system to
partition 'a' of the system disk, ra0 RA90.

The installation procedure now checks the root file system on partition 'a'
of the system disk, ra0  RA90.
** /dev/rra0a
** Last Mounted on /mnt
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
226 files, 4547 used, 11004 free (20 frags, 1373 blocks, 1.0% fragmentation)

 *** BOOTSTRAP COMMAND SEQUENCE ***

Enter the following boot sequence at the console mode prompt
after the installation software halts the processor:

        >>> b dua0


syncing disks... done

?06 HLT INST
        PC = 8007F799
>>>

After this, you will be back at the VAX boot prompt (if you used set CPU CONHALT in your config) or at the SimH emulator prompt (if you used set CPU SIMHALT, which is the default). In the latter case you will have to do boot cpu again to get to the VAX boot prompt.

First boot

Now we can boot the installed system from harddisk for the first time.

If you want to, now would be a good time to take a backup copy of your disk files (or just create a btrfs snapshot or something if you have the possibility ;-)

Okay, then let's boot from DUA0

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



  2..
-DUA0
  1..0..


Ultrixboot - V4.5  Sun Sep 17 13:03:13 EDT 1995

Loading (a)vmunix ...

Sizes:
text = 1153664
data = 281088
bss  = 1043548
Starting at 0x5219

ULTRIX V4.5 (Rev. 47) System #3: Wed Oct 18 11:49:00 EDT 1995
real mem  = 67043328
avail mem = 62008320
Buffer configuration adjusted to run with small system page table
using 121 buffers containing 991232 bytes of memory
KA655 processor with an FPU
        CPU microcode rev = 6, processor firmware rev = 83
Q22 bus
uda0 at uba0
uq0 at uda0 csr 172150 vec 774, ipl 17
klesiu0 at uba0
uq16 at klesiu0 csr 174500 vec 770, ipl 17
qe0 at uba0 csr 174440 vec 764, ipl 17
qe0: DEC DELQA Ethernet Interface DEQNA-lock Mode, hardware address 08:00:2b:04:14:02
lp0 at uba0 csr 177514 vec 200, ipl 17

Here, it will seem to hang for a loooong time. A few minutes. Don't worry, it will eventually continue to boot. I guess it's probing for other devices which are not present.

You might be able to speed this up a bit by interrupting SimH (press CTRL+E in the SimH console window) and then using set CPU noidle followed by go to resume emulation.

Eventually, you will have to decide on a hostname. Note that if you want to play around with DECnet at some point, your hostname should be no longer than 6 characters.

ra1 at uq0 slave 1 (RA90)
ra2 at uq0 slave 2 (RRD40)
ra0 at uq0 slave 0 (RA90)
tms0 at uq16 slave 0 (TK50)

 *** SYSTEM NAME SPECIFICATION ***

Select the name of your system using alphanumeric characters.
The first character must be a letter.   For example, tinker.

Enter your system name:  yuki

You selected yuki as the name of your system.
Is this correct? (y/n) [y]: y

Next up is the time configuration. Since Ultrix 4.5 is not Y2k compliant (AFAIK), I decided to set the clock back a whopping 20 years. Note that the timezone and daylight saving settings are for my location (Germany) and will probably vary for you.

*** DATE AND TIME SPECIFICATION ***

The current date and time should be specified using the following
format:

        yymmddhhmm

Use two digits for year (yy), month (mm), day (dd), hour (hh), and
minute (mm).  Enter the time in 24-hour format.  For example, 02:54
p.m. on Feb 2, 1993 would be entered as:

        9302021454

Enter the date and time: 9512052336

*** TIME ZONE SELECTION ***

Select the time zone for your area, using the options listed in the
table below.  You can also enter the number of hours (-12 to 12) in
time east of Greenwich.

  Selection     Time Zone
---------------------------------
      e         Eastern
      c         Central
      m         Mountain
      p         Pacific
      g         Greenwich
---------------------------------

Enter your choice: 1

Does your area alternate between Daylight Savings and Standard
time? (y/n) [y]: y


Select your geographic area for Daylight Savings Time, using the
options in the table below.

  Selection     Geographic Area
--------------------------------
      u         USA
      a         Australia
      e         Eastern Europe
      c         Central Europe
      w         Western Europe
--------------------------------

Enter your choice [u]: c

The current date and time is Tue Dec  5 23:36:46 EST 1995

Next up is the root password. Note that Ultrix will not echo anything here, I added the asterisks just for this guide :)

*** SPECIFY THE SUPERUSER PASSWORD ***
The Guide to Installing ULTRIX instructs you on how to enter
the superuser password.
Changing password for root
Enter new password: ******
Verify: ******

Next up is the filesystem layout, which is a bit more involved than what you know from more modern systems like MS DOS ;-)

In ULTRIX, partitions are defined for each disk type in a file called /etc/disktab. Note that the partitions overlap, so you shouldn't use them all at the same time. The setup script actually takes care of that for you, but if you later create a new filesystem on the wrong partition you WILL lose data!

Normally, partition c is the whole disk, which is useful for add-on disk drives for example. Partitions a and b are always available and are traditionally used for the system and the swap-space respectively. The swap partition is also used for crashdumps if no separate crash-dump partition is created. The rest of the disk can be used either as a single partition (which is usually g) or as 3 individual partitions (d to f). If the disk is larger than 1 gigabyte, you will get another partition, h, after the g partition, probably because the filesystem cannot cope with partitions >1gig

In our case, we will have the following partitions on the first disk (RA0):

  • Partition a of 32 mb for /root
  • Partition b of 64 mb for swap+crashdump
  • Partition c of 1.2 gig (whole-disk, not used on our setup)
  • Partition d and e of 200 mb each (not used)
  • Partition f of 400 mb (not used)
  • Partition g of 800 mb (overlaps with d, e and f; will become /usr)
  • Partition h of 256 mb (will become /usr/var)

This way we still have the whole second disk available for later use.

So here it goes:

*** FILE SYSTEM DEFAULT OPTION ***

The following table shows the default file system layout on RA90, ra0:

partition     bottom        top       size    overlap       default
    a              0      32767      32768    c             root
    b          32768     159839     127072    c             swap, dump
    d         159840     580036     420197    c,g           /usr

If you choose the defaults, the var area will be allocated to /usr/var.

Do you want to choose the default file system layout? (y/n): n

No, we do not want to use the defaults...

First, we select disk 1, partition g, for the /usr file system:

*** /usr FILE SYSTEM ALLOCATION ***

You can allocate the /usr file system to one of the disks listed in the
table below.  See the Guide to Installing ULTRIX for an explanation of
this table:

/usr FILE SYSTEM ALLOCATION TABLE

Selection   Device     ULTRIX     Device       Controller   Controller
            Name       Name       Number       Name         Number
----------------------------------------------------------------------
    1       RA90        ra0          0         RQDX3          0
    2       RA90        ra1          1         RQDX3          0
----------------------------------------------------------------------

Enter your choice: 1

You selected RA90, device number 0.  Make sure this disk is
on line and write-enabled (if applicable to this drive) and then
confirm your choice.

Use RA90, ra0 for /usr file system? (y/n) []: y

The disk ra0 you selected from the previous table has the following
partitions available, on which you can allocate the /usr file system:

partition      size (Kbytes)  overlap
------------------------------------------------
    d     ---      210098       c,g
    e     ---      210098       c,g
    f     ---      420196       c,g
    g     ---      840393       c,d,e,f
    h     ---      267763       c
------------------------------------------------

Type the letter of the partition on which you want
to allocate the /usr file system [d]: g

Making the new file system for /usr on /dev/rra0g RA90

Next, we select disk 1, partition b for swap (only 1 swap partition) and for crashdumps:

*** ALLOCATE THE SWAP1 SPACE ***

You can allocate the swap1 space to one of the disks listed in the
table below.  See the Guide to Installing ULTRIX for an explanation of
this table:

SWAP1 SPACE ALLOCATION TABLE

Selection   Device     ULTRIX     Device       Controller   Controller
            Name       Name       Number       Name         Number
----------------------------------------------------------------------
    1       RA90        ra0          0         RQDX3          0
    2       RA90        ra1          1         RQDX3          0
----------------------------------------------------------------------

Enter your choice: 1

You selected RA90, device number 0.  Make sure this disk is
on line and write-enabled (if applicable to this drive) and then
confirm your choice.

Use RA90, ra0 for swap1 space? (y/n) []: y

The disk ra0 you selected from the previous table has the following
partitions available, on which you can allocate the swap1 space:

partition      size (Kbytes)  overlap
------------------------------------------------
    b     ---       63536       c
    h     ---      267763       c
------------------------------------------------

Type the letter of the partition on which you want
to allocate the swap1 space [b]: b

*** ALLOCATE THE SWAP2 SPACE ***

Do you want to allocate a second swap space? (y/n) [n]: n


*** ALLOCATE THE CRASH DUMP SPACE ***

You can allocate the crash dump space to one of the disks listed in the
table below.  See the Guide to Installing ULTRIX for an explanation of
this table:

CRASH DUMP SPACE ALLOCATION TABLE

Selection   Device     ULTRIX     Device       Controller   Controller
            Name       Name       Number       Name         Number
----------------------------------------------------------------------
    1       RA90        ra0          0         RQDX3          0
    2       RA90        ra1          1         RQDX3          0
----------------------------------------------------------------------

Enter your choice: 1

You selected RA90, device number 0.  Make sure this disk is
on line and write-enabled (if applicable to this drive) and then
confirm your choice.

Use RA90, ra0 for crash dump space? (y/n) []: y

The disk ra0 you selected from the previous table has the following
partitions available, on which you can allocate the crash dump space:

partition      size (Kbytes)  overlap
------------------------------------------------
    h     ---      267763       c
    b     ---       63536       c
------------------------------------------------

Type the letter of the partition on which you want
to allocate the crash dump space [b]: b

Finally we select partiton h for the /var file system. This might not be large enough later on but then we can always migrate the data away if we need to...

*** ALLOCATE THE var FILE SYSTEM ***

You can allocate the var file system to one of the disks listed in the
table below. See the Guide to Installing ULTRIX for an explanation of
this table:

var FILE SYSTEM ALLOCATION TABLE

Selection   Device     ULTRIX     Device       Controller   Controller
            Name       Name       Number       Name         Number
----------------------------------------------------------------------
    1       RA90        ra0          0         RQDX3          0
    2       RA90        ra1          1         RQDX3          0
----------------------------------------------------------------------

Enter your choice: 1

You selected RA90, device number 0.  Make sure this disk is
on line and write-enabled (if applicable to this drive) and then
confirm your choice.

Use RA90, ra0 for var file system? (y/n) []: y

The disk ra0 you selected from the previous table has the following
partitions available, on which you can allocate the var file system:

partition      size (Kbytes)  overlap
------------------------------------------------
    h     ---      267763       c
    g     ---      840393       c,d,e,f
------------------------------------------------

Type the letter of the partition on which you want
to allocate the var file system [no default]: h

Making the new file system for var on /dev/rra0h RA90

Installing the distribution files

Next up we have to decide what packages we want to install (yes, ULTRIX already had its own package format and corresponding installer called setld. It is very basic, probably most similar to pkg_add on NetBSD). We simply install everything, since we have enough space :)

This distribution media includes subsets for ULTRIX Worksystem
Software (UWS).  A UWS license (on a workstation) or a UWS Server
License (on a timesharing machine or server) is required to install
these subsets.

Do you want to install ULTRIX Worksystem Software? y/n []: y


*** SUPPORTED SOFTWARE INSTALLATION ***

*** Select the DECwindows User Interface ***

1) DECwindows for OSF/Motif
2) X11/DECwindows (XUI)

Enter your choice [1]: 2

*** Enter Subset Selections ***

The following subsets are mandatory and will be installed automatically:
 * Base System                           * Kernel Config Files
 * TCP/IP Networking Utilities           * Network File System Utilities
 * Extended (Berkeley) Mailer            * X11/DECwindows Servers
 * X11/DECwindows User Environment       * X11/DECwindows 75dpi Fonts

The subsets listed below are optional:
 1) Printer Support Environment          2) RAND Mail Handler
 3) Sys. Config. Mgmt. Program (SCAMP)   4) Communications Utilities
 5) Unix-to-Unix Copy Facility           6) Maintenance Operations Protocol
 7) Accounting Software                  8) Kerberos Network Authentication
 9) Enhanced Security Features          10) Prestoserve Utilities
11) System Exerciser Package            12) Bisynchronous Communications
13) Doc. Preparation for Ref. Pages     14) Doc. Preparation Extensions
15) Adobe Font Metric Files             16) Software Development Utilities
17) Source Code Control System          18) Internationalization Runtime Env.
19) Internationalization Dev. Env.      20) CDA Base System
21) CDA Software Dev Libraries          22) RPC Runtime Environment
23) RPC Development Environment         24) Pascal Development Package
25) VAX C/ULTRIX                        26) Ref. Pages for Sys. Admin. & Users
27) Reference Pages for Programers      28) Programming Examples
29) Ultrix SPDS                         30) X11/DECwindows 100dpi Fonts
31) VS35XX X11/DECwindows Fonts         32) Additional DECwindows Applications
33) DECwindows Mail Application         34) Worksystem Development Environment
35) X11/DECwindows System Management T  36) UWS Runtime Reference Pages
37) UWS Development Reference Pages

38) All mandatory and all optional subsets
39) Mandatory subsets only
40) Exit without installing subsets

Enter your choice(s): 38
        Working....Wed Dec  6 00:14:12 EST 1995

You are installing the following subsets:
   Base System                             Kernel Config Files
   TCP/IP Networking Utilities             Network File System Utilities
   Extended (Berkeley) Mailer              X11/DECwindows Servers
   X11/DECwindows User Environment         X11/DECwindows 75dpi Fonts
   Printer Support Environment             RAND Mail Handler
   Sys. Config. Mgmt. Program (SCAMP)      Communications Utilities
   Unix-to-Unix Copy Facility              Maintenance Operations Protocol
   Accounting Software                     Kerberos Network Authentication
   Enhanced Security Features              Prestoserve Utilities
   System Exerciser Package                Bisynchronous Communications
   Doc. Preparation for Ref. Pages         Doc. Preparation Extensions
   Adobe Font Metric Files                 Software Development Utilities
   Source Code Control System              Internationalization Runtime Env.
   Internationalization Dev. Env.          CDA Base System
   CDA Software Dev Libraries              RPC Runtime Environment
   RPC Development Environment             Pascal Development Package
   VAX C/ULTRIX                            Ref. Pages for Sys. Admin. & Users
   Reference Pages for Programers          Programming Examples
   Ultrix SPDS                             X11/DECwindows 100dpi Fonts
   VS35XX X11/DECwindows Fonts             Additional DECwindows Applications
   DECwindows Mail Application             Worksystem Development Environment
   X11/DECwindows System Management To     UWS Runtime Reference Pages
   UWS Development Reference Pages

Is this correct? (y/n): y

The installation will take a while (around 15-30 minutes for me), so feel free to let it run in the background for a while now. The installer will periodically print its status so you can see that it's still running...

Base System  (ULTBASE450)
   Copying from /mnt/VAX/BASE (disk)
        Working....Wed Dec  6 00:14:43 EST 1995
   Verifying

Kernel Config Files  (ULTBIN450)
   Copying from /mnt/VAX/BASE (disk)
        Working....Wed Dec  6 00:15:28 EST 1995
   Verifying

...

At some point you will have to confirm installing the generic kernel and the X11 subsystem:

...
UWS Runtime Reference Pages (UWSMAN450)
   Copying from /mnt/VAX/BASE (disk)
   Verifying

UWS Development Reference Pages (UWSMANPGMR450)
   Copying from /mnt/VAX/BASE (disk)
   Verifying

The installation software has successfully installed the software
subsets.
Installing Upgrade subsets
The following subsets will be installed:
 * X11/DECwindows Servers Upgrade        * Generic Kernel
Do you wish to continue? (y/n): y

X11/DECwindows Servers Upgrade (UWSSER451)
   Copying from /mnt/VAX/BASE_UPGRADE (disk)
   Verifying

Generic Kernel  (ULTGENVMUNIX451)
   Copying from /mnt/VAX/BASE_UPGRADE (disk)
   Verifying

The installation procedure has successfully installed the Upgrade
subsets

That's it for the base installation, now we configure our kernel...

Kernel configuration

We have to select what features will be in the kernel. For anyone who has ever done a "make menuconfig" on Linux, this is slightly easier here ;-)

*** CONFIGURATION FILE KERNEL OPTION SELECTION ***

    Selection   Kernel Option
---------------------------------------------------------------
        1       Local Area Transport (LAT)
        2       Bisynchronous Communication protocol (VAX only)
        3       Computer Interconnect (CI) network
        4       Diagnostic/Utilities Protocol (DUP)
        5       ISO9660 File System Support (CDFS)
        6       Ethernet Packet Filter
        7       Enhanced Security Features
        8       All of the above
        9       None of the above
----------------------------------------------------------------

Enter the selection number for each kernel option you want.
For example, 1 3 :

In our case, we don't need 2 (it is for 2780/3780 remote terminals), 3 (SimH doesn't emulate any cluster hardware) or 6 (it might cause problems with DECwindows/Motif). Everything else (1 4 5 7) is probably safe. This lets us play around with LAT (maybe connect an emulated Cisco router with LAT routing to it?) and DUP.

Enter the selection number for each kernel option you want.
For example, 1 3 :  1 4 5 7

You specified the following kernel options:

        Local Area Transport (LAT)
        Diagnostic/Utilities Protocol (DUP)
        ISO9660 File System Support (CDFS)
        Enhanced Security Features

Is this correct? (y/n) [n]: y

*** SYSTEM CONFIGURATION PROCEDURE ***
The installation software found these devices in the floating
address space:

        dz0             on uba0         at 0160100
        dz1             on uba0         at 0160110
        dz2             on uba0         at 0160120
        dz3             on uba0         at 0160130

Configuration file complete.

Do you want to edit the configuration file? (y/n) [n]: n

*** PERFORMING SYSTEM CONFIGURATION ***


    working ..... Wed Dec  6 02:29:10 EST 1995

*** DEVICE SPECIAL FILE CREATION ***
    working ..... Wed Dec  6 02:29:53 EST 1995

*** SOFTWARE INSTALLATION PROCEDURE COMPLETE ***

The following files were created during the installation procedure:

/vmunix                         - customized kernel
/genvmunix                      - generic kernel
/usr/adm/install.log            - installation log file
/usr/adm/install.FS.log         - file systems log file
/usr/adm/install.DEV.log        - special device log file


Enter the following boot sequence at the console mode prompt
after the installation software halts the processor:

        >>> b dua0

syncing disks... done

?06 HLT INST
        PC = 800985B5

Now you might want to take another backup of your disk images, since the ULTRIX installation is now basically complete.

Adding the unsupported sets

Now there are some more pieces of software in the CDROM, in a directory called unsupported. We want to install these as well. First, let's boot our system again

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



  2..
-DUA0
  1..0..


Ultrixboot - V4.5  Sun Sep 17 13:03:13 EDT 1995

Loading (a)vmunix ...

Sizes:
text = 747376
data = 125952
bss  = 918192
Starting at 0x2c19

ULTRIX V4.5 (Rev. 47) System #1: Wed Dec  6 02:29:50 EST 1995
real mem  = 67043328
avail mem = 56455168
using 1638 buffers containing 6712320 bytes of memory
KA655 processor with an FPU
        CPU microcode rev = 6, processor firmware rev = 83
Q22 bus
uda0 at uba0
uq0 at uda0 csr 172150 vec 774, ipl 17
klesiu0 at uba0
uq16 at klesiu0 csr 174500 vec 770, ipl 17
qe0 at uba0 csr 174440 vec 764, ipl 17
qe0: DEC DELQA Ethernet Interface DEQNA-lock Mode, hardware address 08:00:2b:04:14:02
lp0 at uba0 csr 177514 vec 200, ipl 17
dz0 at uba0 csr 160100 vec 300, ipl 17
dz1 at uba0 csr 160110 vec 310, ipl 17
dz2 at uba0 csr 160120 vec 320, ipl 17
dz3 at uba0 csr 160130 vec 330, ipl 17
ra1 at uq0 slave 1 (RA90)
ra2 at uq0 slave 2 (RRD40)
ra0 at uq0 slave 0 (RA90)
tms0 at uq16 slave 0 (TK50)
Wed Dec  6 11:25:29 MET 1995
Automatic reboot in progress...
/dev/ra0a: 644 files, 6161 used, 9390 free (166 frags, 1153 blocks, 5.0% fragmentation)
/dev/rra0g: umounted cleanly
/dev/rra0h: umounted cleanly
Warning Creating new license database
Warning creating new history file
check quotas: done.
savecore: checking for dump...dump does not exist
local daemons: syslog sendmail.
Removing remnant Opser files
preserving editor files
clearing /tmp
standard daemons: update cron accounting network snmpd printer.
start errlog daemon - elcsd
Wed Dec  6 11:25:48 MET 1995


ULTRIX V4.5 (Rev. 47) (yuki)

login: root
Password:

ULTRIX V4.5 (Rev. 47) System #1: Wed Dec  6 02:29:50 EST 1995
UWS V4.5 (Rev. 6)

                Digital Equipment Corporation
                Nashua, New Hampshire


*** SOFTWARE INSTALLATION PROCEDURE COMPLETE ***

The following files were created during the installation procedure:

/vmunix                         - customized kernel
/genvmunix                      - generic kernel
/usr/adm/install.log            - installation log file
/usr/adm/install.FS.log         - file systems log file
/usr/adm/install.DEV.log        - special device log file

#

now, we mount the CDROM and use setld to install the unsupported packages. For simplicity's sake, we just (again) install everything.

# mount -r /dev/ra2c /mnt
# cd /mnt/VAX/UNSUPPORTED
# ls
DXVUNDEMO450    ULXDOC450       ULXINGRES450    ULXRCS450       ULXUNMAN450
ULXAPL450       ULXEDIT450      ULXLEARN450     ULXSHELLS450    ULXUNMIT450
ULXBASE450      ULXF77450       ULXLISP450      ULXSPMS450      ULXVARIAN450
ULXBIB450       ULXGAMES450     ULXMAN450       ULXTERM450      instctrl
ULXCOURIER450   ULXHYPER450     ULXMOD2450      ULXTOOLS450
ULXCPM450       ULXICON450      ULXNEWS450      ULXUNEXAMP450
ULXDCMT450      ULXINET450      ULXNOTES450     ULXUNFONTS450
# setld -l .

*** Enter Subset Selections ***

The subsets listed below are optional:
 1) Base Extension                       2) GNU Emacs
 3) TCP/IP Networking Util Extension     4) Additional Terminal Drivers
 5) Document Preparation Software        6) Games and Diversions
 7) Supplementary Documentation          8) Bibliographic Utilities
 9) Remote Procedure Call Compiler      10) Aux. Command Line Interpreters
11) USENET News Interface Software      12) Notesfiles Package
13) Revision Control System             14) Misc. User-Contributed Utilities
15) Computer Aided System Tutor         16) Franz Lisp Development Package
17) Modula-2 Development Package        18) Raster Plotter Package
19) APL Development Package             20) CP/M 8in Diskette Utility
21) Hyperchannel Utilities              22) ICON (Language) Development Packag
23) University Ingres QUEL DBMS         24) Software Project Management System
25) Unsupported Fortran Utilities       26) Unsupported On-Line Documentation
27) Unsupported X11 Components          28) Unsupported DECwindows Examples
29) Unsupported MIT Fonts               30) Unsupported X11 Reference Pages
31) Unsupported OSF/Motif Demos

32) All mandatory and all optional subsets
33) Mandatory subsets only
34) Exit without installing subsets

Enter your choice(s): 32
        Working....Wed Dec  6 11:29:48 MET 1995
         Wed Dec 6 11:30:00 MET 1995

You are installing the following subsets:
   Base Extension                          GNU Emacs
   TCP/IP Networking Util Extension        Additional Terminal Drivers
   Document Preparation Software           Games and Diversions
   Supplementary Documentation             Bibliographic Utilities
   Remote Procedure Call Compiler          Aux. Command Line Interpreters
   USENET News Interface Software          Notesfiles Package
   Revision Control System                 Misc. User-Contributed Utilities
   Computer Aided System Tutor             Franz Lisp Development Package
   Modula-2 Development Package            Raster Plotter Package
   APL Development Package                 CP/M 8in Diskette Utility
   Hyperchannel Utilities                  ICON (Language) Development Package
   University Ingres QUEL DBMS             Software Project Management System
   Unsupported Fortran Utilities           Unsupported On-Line Documentation
   Unsupported X11 Components              Unsupported DECwindows Examples
   Unsupported MIT Fonts                   Unsupported X11 Reference Pages
   Unsupported OSF/Motif Demos

Is this correct? (y/n): y

Base Extension (ULXBASE450)
   Copying from . (disk)
   Verifying

GNU Emacs (ULXEDIT450)
   Copying from . (disk)
   Verifying

TCP/IP Networking Util Extension (ULXINET450)
   Copying from . (disk)
   Verifying
...

Note that you could also quickly install only a single package by using for example

# setld -l . ULXINET450

After a few minutes, installation will be completed and we should unmount the CDROM

# cd /
# umount /mnt

Network configuration

To configure the network, you have to use a static IPv4 address and put that into the beginning of /etc/rc.local. Note that there is no ifconfig -a in ULTRIX, you have to use netstat -i

# netstat -i
Name   Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
qe0*   1500  none        none                   0     0        0     0     0
lo0    1536  loop        localhost              1     0        1     0     0
# ifconfig qe0 192.168.1.44 netmask 255.255.255.0 up
# route add default 192.168.1.1 1
add net default: gateway 192.168.1.1
# ping 192.168.1.1
192.168.1.1 is alive

Note that it might actually take a while until packets are getting through. I don't know why but in my case it helped to ping ULTRIX from the outside first, e.g. from Windows, and then re-try the ping from the VM. Then it worked. I'm guessing this is some SimH/Windows issue with PCAP or something.

Then put these 2 commands at the start of /etc/rc.local (you'll see where). Note that you can use vi now!

# @(#)rc.local  9.4     (ULTRIX)        9/21/95
/bin/hostname yuki
#/etc/ifconfig HDWR `/bin/hostname` broadcast NETNUM.0 netmask 255.0
/etc/ifconfig qe0 192.168.1.44 netmask 255.255.255.0
route add default 192.168.1.1 1
/etc/ifconfig lo0 localhost
#/etc/bscconfig dup0 bsc 1
#/etc/bscconfig dpv0 bsc 1
...

Note that DNS lookups normally don't work out of the box. Create a basic /etc/resolv.conf file with the following content (or whatever is correct in your environment)

domain lan.local
nameserver 192.168.1.1

However, if you then try to do an nslookup query, you will get an error message

# nslookup www.google.com
*** Can't find server name for address 192.168.1.1: Not implemented
*** Default servers are not available

The problem is that ULTRIX sends so-called inverse queries (not to be confused with the well-known reverse lookups, which are actually just regular forward lookups to a specific TLD) to map IP addresses to hostnames. Most DNS servers don't support these inverse queries anymore. Apparently, BIND8 still included an option "fake-iquery" which might be used to support these queries. Versions before BIND8 (4.x) supported IQUERY natively. I have yet to test both variants to see which (if any) of them work.

Shutting down cleanly

As you'd expect, you can use shutdown to shut the system down

# shutdown -h now
Shutdown at 11:15 (in 0 minutes) [pid 1500]
#
System shutdown time has arrived
syncing disks... done

?06 HLT INST
        PC = 80094CDD
>>>

Enabling outside access

The SimH config above includes a 16-line serial multiplexer. If you connect via TELNET to port 1005, you are given the first free serial line of the emulated DZ device. However, serial login is disabled by default, so it has to be enabled first. That's what the /etc/ttys file is for. Edit the file and change the off to on in the lines for tty00 to tty07, as shown below

# @(#)ttys      9.1 (ULTRIX) 4/26/94
#
#
#
# name  getty           type            status          comments
#
console "/etc/getty std.9600" vt100     on secure       # console terminal
tty00   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty01   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty02   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty03   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty04   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty05   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty06   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
tty07   "/etc/getty std.9600" vt100     on nomodem      # direct connect tty
ttyd0   "/etc/getty std.9600" vt100     off shared secure # modem line

If you want to be able to login as root on these terminals, you can also add the secure flag as well. Also note that while it seems tempting to increase the line speed to 19200 or even higher, from my experience that will cause massive lags and emulation hangs in SimH, so do that on your own risk.

After editing the file and saving it, you have to reload init:

# kill -HUP 1

Now try logging in to port 1005 via telnet, and you should be greeted with this:

Connected to the MicroVAX 3900 simulator DZ device, line 0


ULTRIX V4.5 (Rev. 47) (yuki)

login: root
Password:
Requires secure terminal

Note that SimH will print out the serial line to which you are connected, in this case line 0 which is /dev/tty00.


Also, if your inetd is running (which it should be, if you followed this guide), you will also already be able to login remotely using telnet.

ULTRIX V4.5 (Rev. 47) (yuki)

login: root
Password:
Requires secure terminal

To enable root access for all telnet sessions, you will have to edit the /etc/ttys file and change every line that starts with "ttyp" to include the secure flag:

ttyp0   none            network

will become

ttyp0   none            network secure

and so on...

Resources

Some of the resources I used for creating this guide:

  • ULTRIX 4.5 installation ISO [1]
  • ULTRIX-32 startup and shutdown guide [2]
  • CERN guide to installing ULTRIX [3]
  • My old guide for installing ULTRIX [4]
  • DEC KA655 CPU System Maintenance [5]
  • Some notes and links to more ULTRIX information [6]
  • Ultrix Guide to Disk Maintenance [7]
  • Some random notes about ULTRIX 4.0 (some also apply to 4.5) [8]