unixhistory 4.3 Quasijarus

Overview

Quasijarus is a fork (a divergent development) of 4.3-Tahoe, itself a fork of the original 4.3BSD. It was maintained for a good deal longer, although many links and sites now seem to be dead or otherwise inaccessible. That is why I have produced this page, which pulls together information I have discovered, and that I already knew (I have used v6, v7, 4.0BSD, 4.1BSD, 4.2BSD, 4.3BSD and later).

Acknowledgements

Thanks are due to too many people to mention here. They include the original BSD developers, those of 4.3-Tahoe, and the developers and maintainers of Quasijarus itself. Particular thanks go to those who have kept the various files alive, and to those who have written instructions on which much of the rest of this page is based. I would link to some of them, but the dead links just cause confusion, so I hope that everything needed is right here.

Notation

To avoid confusion, any typed input is shown in red, and output is in black. In addition, input and output is shown in a fixed width font.

Quasijarus, the VAX, and SIMH

Quasijarus, as a derivative of 4.3BSD, is designed to run on the VAX machine architecture. You may be lucky enough (like me) to own a real VAX or two, but most people will need to run this on a simulator. One of the most well known simulators is called SIMH. You can find it here, at http://simh.trailing-edge.com/ (be careful not to omit the hyphen).

Disk partitions

It's worth saying a little here about disk partitioning. BSD (and other systems) often split disks into smaller pieces which are each treated as a logical disk. The terminology varies, but they are commonly called partitions. The early Sixth Edition UNIX was written in such a way that the whole system assumed a disk could have no more than 65,536 blocks (this was on a 20MB DEC RP02, which had about 40,000 blocks). When the RP03 (twice the size) came out, it had about 80,000 blocks, and the quick fix was to divide it into two manageable pieces; only the device driver needed changing, so that it presented two logical disks for each physical one.

However, partitioning is also a good way of separating out function on a disk. The partitions are described by the disk label, which is a small table near the start of the disk. Some partitions are preassigned by long convention, and the way they are referenced depends on if the disk has actually been labelled, or a certain fixed layout has been assumed; thus, they might be referred to by number or by name. Typically a disk will have eight partitions, laid out like this:

Number Name Usage
0 a Root partition
1 b Swap partition
2 c Whole-disk partition
3 d Spare partition
4 e Spare partition
5 f Spare partition
6 g /usr partition
7 h /home partition

The name is appended to the end of the disk name, so partition a as mentioned above might be called ra0a or rra0a. The extra leading r denotes a 'raw' partition; don't worry too much about this. Partition c is special; it is a pseudo partition that covers the whole disk, but it is rarely used. The layour shown here is the one that we will use.

Getting started

The following instructions all assume that you are using SIMH, rather than some other simulator or even a real machine. Adapt the instructions accordingly if you are not using SIMH. It is also assumed that you are using a UNIX-like environment (BSD, Linux, Cygwin or similar).

You will need the following to get Quasijarus up and running:

  • A copy of the unzip utility to unpack some of the files.
  • A working copy of SIMH for the VAX. This is supplied with a microcode file named ka655x.bin; see the SIMH instructions for more details.
  • An 'installation tape'. Normally, this will be just a file (a tape image) which has to be connected to SIMH so that it looks like a tape to the simulated machine. A particular file format is required. You have the choice of either downloading this tape image, or doing it the hard way and making your own. Make your choice by following one of the sets of instructions below.

Installation preparation - Method 1 - downloading a tape image

This is really quite simple. Just download quastape.zip and unzip it. Job done.

Installation preparation - Method 2 - making your own tape image

The aim of this is to construct an image of the tape from which the system is to be installed. This image is just a file, but in a particular format that SIMH will understand. For the curious, a definition of that format may be found here. The tape needs to contain a number of large files, in a strictly defined order.

The files required are shown below. You can download them via these links. The first six files are essential:

The remaining files are used to update the console media on a real VAX (these machines often had a smaller machine, typically a PDP-11, handling the boot process). There is no need to download these unless you are curious about them, or you have a real VAX to play with.

These files have been compressed using an obsolete compression program; luckily, the format is very similar to that used by the well known gzip program. All that is required is a small amount of tweaking, which can be done by a program called gzcompat; download it here. Instructions on building and using gzcompat are included with the source code.

Once you have gzcompat built, decompress all of the .Z files using these commands:

        $ gzcompat stand.Z | zcat > stand
        $ gzcompat miniroot.Z | zcat > miniroot
        $ gzcompat rootdump.Z | zcat > rootdump
        $ gzcompat usr.tar.Z | zcat > usr.tar
        $ gzcompat srcsys.tar.Z | zcat > srcsys.tar
        $ gzcompat src.tar.Z | zcat > src.tar

If you wish (and you have downloaded them), decompress the console media files as well:

        $ gzcompat cassette.Z | zcat > cassette
        $ gzcompat consolerl.Z | zcat > consolerl
        $ gzcompat floppy.Z | zcat > floppy

You now need to build the tape image. The format is pretty simple, but there are one or two slight complications. You can download a C program to do the job; it's called mksimtape, and it can be downloaded here. Most of the files will be on the 'tape' (in the tape image, that is) with a block size of 10240 bytes, but the first file has to have a block size of 512 bytes. mksimtape will usually use 10240, but can generate other block sizes on request by giving the block size after the file name (separated by a colon).

The files have to be written in a specific order, so they are just given to mksimtape in that order; the tape image is written to standard output, so redirect that somewhere suitable. The command you need is:

        $ mksimtape stand:512 miniroot rootdump usr.tar srcsys.tar src.tar > quastape.tap

The file quastape.tap should be the same as the one you could have obtained using Method 1 above.

Creating an empty disk image

Now that you have a tape image as an installation medium, you need an image of an empty disk onto which you can install the system. This is merely an empty file, with the correct size for the simulated disk you intend to use. Quasijarus can use a number of different simulated disks, but an RA82 is probably a good choice. Other choices are given in the following table:

DiskApproximate sizeLogical blocks
RA81456MB891072
RA82623MB1216665
RA71700MB1367310
RA721GB1953300
RA901.26GB2376153
RA921.5GB2940951

Remember that you will need enough disk space for a file of the appropriate size (e.g. about 620MB for an RA82). You can create an empty file of the right size with a command similar to this:

        $ dd if=/dev/zero of=quasdisk.dsk bs=512 count=1216665

Use whatever name you like for the file (of=...), and select the appropriate number of blocks for the disk type you choose (count=...). Note that the file, which only represents the data space on the disk, will be smaller than the quoted size in the table above.

Installation

The actual installation takes place in several stages:

  1. Stage 1 - boot from the installation tape and copy a minimal system (the miniroot) to the disk.
  2. Stage 2 - boot from the minimal system on disk, and restore the real root filesystem from the filesystem dump on the tape.
  3. Stage 3 - boot from the real root system, and restore the rest of the partitions.
  4. Stage 4 - boot from the complete system, and tidy up.

At each stage, the simulator has to be set up correctly. The easiest way to do this is to give it an initialisation file, which simply contains some necessary simulator commands. You can download copies of suitable files here, in a ZIP file called initfiles.zip. Note that these files, as supplied, assume that the installation tape image is in a file called quastape.tap, and that the installation disk image is in a file called quasdisk.dsk. Edit these if required; in particular, change the disk and tape image file names if required, and change any references to the disk type (e.g. ra82) if you choose to use a different one.

You may notice that the last command in the initialisation file is generally boot cpu. This doesn't actually boot a system; it starts the CPU firmware, which offers lots of commands from its >>> prompt.

Stage 1 - booting the installation tape and copying the miniroot

We are now ready to boot that simulated machine for the first time. The purpose of this stage is to boot a minimal utility program from the tape, and then use that to copy a minimal system to the disk. The procedure is as follows; note that the name of the initialisation file has to be given to the simulator, and we start by using the one called init.ini:

          $ vax init.ini
          VAX simulator V3.9-0
          Loading boot code from ka655x.bin
          Loading boot code from /usr/local/share/simh/ka655x.bin


          KA655-B V5.3, VMB 2.7
           1) Dansk
           2) Deutsch (Deutschland/Vsterreich)
           3) Deutsch (Schweiz)
           4) English (United Kingdom)
           5) English (United States/Canada)
           6) Espaqol
           7) Frangais (Canada)
           8) Frangais (France/Belgique)
           9) Frangais (Suisse)
          10) Italiano
          11) Nederlands
          12) Norsk
          13) Portugujs
          14) Suomi
          15) Svenska
           (1..15): 4
          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.
          >>>

The messages may vary slightly, depending on your system. You may not even be asked to choose a language. The VAX is now running, and we tell it to boot from the tape: The name of the tape device is in the DEC format rather than the BSD one, so it is MUA0 (the first MU controller, unit 0).

          >>>boot mua0
          (BOOT/R5:0 MUA0



            2..
          -MUA0
            1..0..

          =

The = prompt is from a standalone utility program (the stand file on the tape); it has only three commands (boot, copy and format). For now, we need the copy command. We are copying from the tape device, unit 0, file 1; the files are numbered from 0, so we are copying the miniroot file. We are copying this to the disk device, unit 0, partition 1; the partitions are numbered from 0, so we are copying to the second partition. Remember, there is a predefined partitioning scheme for each disk, although until the disk is labelled (see later) this isn't actually stored on the disk. You willl have noticed that the second partition is nominally the swap partition, but at present we are merely using it as a temporary place to put the miniroot.

          =copy
          cpu: uVAX 3000
          From: tms(0,1)
          To: ra(0,1)
          Copy completed: 308 records copied

          HALT instruction, PC: 00000006 (HALT)
          sim> quit
          $

Note that the machine was halted after the copy finished. Type quit at the sim> prompt to exit the emulator for a clean start in the next phase.

Stage 2 - booting the miniroot and restoring the root dump

We now need to boot again from tape, and this time run the boot program from the tape. This is because we don't yet have any boot program on the disk. This allows us to boot the miniroot.

          $ vax init.ini
          VAX simulator V3.9-0
          Loading boot code from ka655x.bin
          Loading boot code from /usr/local/share/simh/ka655x.bin


          KA655-B V5.3, VMB 2.7
           1) Dansk
           2) Deutsch (Deutschland/Vsterreich)
           3) Deutsch (Schweiz)
           4) English (United Kingdom)
           5) English (United States/Canada)
           6) Espaqol
           7) Frangais (Canada)
           8) Frangais (France/Belgique)
           9) Frangais (Suisse)
          10) Italiano
          11) Nederlands
          12) Norsk
          13) Portugujs
          14) Suomi
          15) Svenska
           (1..15): 4
          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.
          >>>boot mua0
          (BOOT/R5:0 MUA0



            2..
          -MUA0
            1..0..

          =boot
          cpu: uVAX 3000

          Boot
          : ra(0,1)vmunix
          327204+103384+130352 start 0x23a8
          4.3 BSD Quasijarus UNIX #0: Sat Oct  2 22:15:38 CDT 1999
              msokolov@luthien:/usr/src/sys/GENERIC
          real mem  = 16744448
          SYSPTSIZE limits number of buffers to 112
          avail mem = 14920704
          using 112 buffers containing 917504 bytes of memory
          MicroVAX 3000, ucode rev 6
          tmscp0 at uba0 csr 174500 vec 774, ipl 15
          tms0 at tmscp0 slave 0
          uda0 at uba0 csr 172150 vec 770, ipl 15
          uda0: version 3 model 3
          uda0: DMA burst size set to 4
          ra0 at uda0 slave 0: no disk label: ra82, size = 1216665 sectors
          root device? ra0*
          WARNING: clock gained 158 days -- CHECK AND RESET THE DATE!
          erase ^?, kill ^U, intr ^C
          #

The boot program said Boot and then prompted for input. We want to boot off the second partition (i.e. partition 1) of ra unit 0 (since that is where we put the miniroot), and we want to boot the file vmunix, as that is the standard name for a BSD kernel. After a while, there is a prompt for a root device. The system doesn't know about the disk partitions at this stage, because there is no partition table (or disk label, as it is known). We thus specify ra0, but add a * to the end, which is a way of saying 'the second partition' (don't worry why). After a short delay, we have a real root command prompt.

Now we need to sort out the disk label. This is a small table which is added near the start of the disk; it defines the layout of the partitions which so far we have been using implicitly, and also contains the primary and secondary boot programs. It is 16 sectors (8kB) in size. We need to include those boot programs as well, so that in future we can boot directly from the disk.

          # disklabel -rw ra0 ra82 "Quasijarus" /usr/mdec/rdboot /usr/mdec/bootra

You can use any name you like (up to 16 characters) for the disk; here, we have used Quasijarus. ra0 obviously defines the physical disk, and ra82 gives the type of disk; this must match the 'hardware' (i.e. what appears in init.ini). The disk type is used to allocate the partitions with the right sizes, driven by a file called /etc/disktab. The last two parameters specify the boot programs to be put on the disk; primary and secondary boot, respectively.

Now we need to do two things. First, we must create an empty root file system on the first partition (known as /dev/rra0a now that the disk has been labelled). Second, we must restore the real (full) root file system from the rootdump file (the third on the tape). There is a convenient shell script called xtr for this, but it needs three variables to be set; these specify the disk, disk type, and tape.

          # disk=ra0 type=ra82 tape=tms xtr
          Build root file system
          Warning: 361 sector(s) in last cylinder unallocated
          /dev/rra0a:     15884 sectors in 19 cylinders of 15 tracks, 57 sectors
                  8.1MB in 2 cyl groups (16 c/g, 7.00MB/g, 3200 i/g)
          super-block backups (for fsck -b #) at:
           32, 13776,
          Check the file system
          ** /dev/rra0a
          ** Last Mounted on
          ** Phase 1 - Check Blocks and Sizes
          ** Phase 2 - Check Pathnames
          ** Phase 3 - Check Connectivity
          ** Phase 4 - Check Reference Counts
          ** Phase 5 - Check Cyl groups
          1 files, 1 used, 7092 free (20 frags, 884 blocks, 0.3% fragmentation)
          Rewind tape
          Restore the dump image of the root
          ** /dev/rra0a
          ** Last Mounted on /a
          ** Phase 1 - Check Blocks and Sizes
          ** Phase 2 - Check Pathnames
          ** Phase 3 - Check Connectivity
          ** Phase 4 - Check Reference Counts
          ** Phase 5 - Check Cyl groups
          425 files, 5198 used, 1895 free (15 frags, 235 blocks, 0.2% fragmentation)
          Root filesystem extracted

          If this is an 8650 or 8600, update the console rl02
          If this is a 780 or 785, update the floppy
          If this is a 730, update the cassette

Ignore the messages about updating boot media (RL02, floppy and cassette), since we are running on a simulated MicroVAX 3000, and not one of the systems mentioned.

Once again, if you are simulating a disk other than an RA82, modify the command accordingly. Lastly, it is a good idea to use the sync command at least twice, to make sure that any buffers are flushed to the disk. Press Control-E (^E) to stop the simulator, and then type quit to exit from it.

          # sync
          # sync
          # ^E
          Simulation stopped, PC: 800029B7 (BNEQ 800029CE)
          sim> quit
          Goodbye
          $

Stage 3 - booting the real system and restoring the rest

We can now boot the newly installed root file system, directly from disk. This is only the root system, so we need to restore the rest of the disk from the tape.

For this stage, we use a slightly modified initialisation file for SIMH. This file is called boot.ini, and a sample can once again be found in initfiles.zip. The differences are:

  • We simulate the machine's non-volatile RAM. This is where information is remembered between boots. The NVRAM's contents need to be stored in a file; we will use one called nvram.bin.
  • We can define a default boot device.
  • We can set up the hardware so that it will automatically boot from the default device. This is optional, and probably best left until later. There are details in comments inside the provided boot.ini.

Edit boot.ini as required, then start the simulator with it:

          $ vax boot.ini

          VAX simulator V3.9-0
          NVR: buffering file in memory
          Loading boot code from ka655x.bin
          Loading boot code from /usr/local/share/simh/ka655x.bin


          KA655-B V5.3, VMB 2.7
           1) Dansk
           2) Deutsch (Deutschland/Vsterreich)
           3) Deutsch (Schweiz)
           4) English (United Kingdom)
           5) English (United States/Canada)
           6) Espaqol
           7) Frangais (Canada)
           8) Frangais (France/Belgique)
           9) Frangais (Suisse)
          10) Italiano
          11) Nederlands
          12) Norsk
          13) Portugujs
          14) Suomi
          15) Svenska
           (1..15): 4
          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.
          >>>set boot dua0

Once again, we were asked for the language to be used. This should be the last time, as now that NVRAM is enabled, the choice will be remembered. The set boot dua0 command sets a default boot device, to save us having to type it every time. From now on, we only need to type boot, or even just b:

          >>>boot
          (BOOT/R5:0 DUA0



            2..
          -DUA0
            1..0..

          loading boot

          Boot
          : /vmunix
          327204+103384+130352 start 0x23a8
          4.3 BSD Quasijarus UNIX #0: Sat Oct  2 22:15:38 CDT 1999
              msokolov@luthien:/usr/src/sys/GENERIC
          real mem  = 16744448
          SYSPTSIZE limits number of buffers to 112
          avail mem = 14920704
          using 112 buffers containing 917504 bytes of memory
          MicroVAX 3000, ucode rev 6
          tmscp0 at uba0 csr 174500 vec 774, ipl 15
          tms0 at tmscp0 slave 0
          uda0 at uba0 csr 172150 vec 770, ipl 15
          uda0: version 3 model 3
          uda0: DMA burst size set to 4
          ra0 at uda0 slave 0: ra82, size = 1216665 sectors
          Changing root device to ra0a
          Automatic reboot in progress...
          Tue Mar 21 15:00:55 CST 2000
          Can't open checklist file: /etc/fstab
          Automatic reboot failed... help!
          erase ^?, kill ^U, intr ^C
          #

Don't worry about the alarming messages; they are only temporary. The next task is to create file systems on some of the other partitions. We need to set up partitions g and h, since they are suitable sizes for what we want. The newfs command sets up an empty file system structure on a specified partition; it is also told the type of disk in use. These partitions will be for the /usr and /home file systems respectively.

          # newfs ra0g ra82
          /dev/rra0g:     841320 sectors in 984 cylinders of 15 tracks, 57 sectors
                  430.8MB in 62 cyl groups (16 c/g, 7.00MB/g, 3200 i/g)
          super-block backups (for fsck -b #) at:
           32, 13776, 27520, 41264, 55008, 68752, 82496, 96240, 109984,
           123728, 137472, 151216, 164960, 178704, 192448, 206192, 218912, 232656,
           246400, 260144, 273888, 287632, 301376, 315120, 328864, 342608, 356352,
           370096, 383840, 397584, 411328, 425072, 437792, 451536, 465280, 479024,
           492768, 506512, 520256, 534000, 547744, 561488, 575232, 588976, 602720,
           616464, 630208, 643952, 656672, 670416, 684160, 697904, 711648, 725392,
           739136, 752880, 766624, 780368, 794112, 807856, 821600, 835344,
          # newfs ra0h ra82
          Warning: 209 sector(s) in last cylinder unallocated
          /dev/rra0h:     291346 sectors in 341 cylinders of 15 tracks, 57 sectors
                  149.2MB in 22 cyl groups (16 c/g, 7.00MB/g, 3200 i/g)
          super-block backups (for fsck -b #) at:
           32, 13776, 27520, 41264, 55008, 68752, 82496, 96240, 109984,
           123728, 137472, 151216, 164960, 178704, 192448, 206192, 218912, 232656,
           246400, 260144, 273888, 287632,
          #

Next, we mount the ra0g partition on /usr, create the directory /home, and mount ra0h on that.

          # mount /dev/ra0g /usr
          # mkdir /home
          # mount /dev/ra0h /home

We also need to create device nodes in /dev for the tape device, and for the DZ-11 (the terminal multiplexer).

          # cd /dev
          # MAKEDEV tmscp0
          # MAKEDEV dz0

The next tasks are to restore the three sets of files in /usr. First, /usr itself. We rewind the tape and move forward three files (fsf means 'forward space file'), then extract the fourth file to /usr.

          # cd /usr
          # mt rew
          # mt fsf 3
          # tar xpbf 20 /dev/rmt12

Now we create the directories /usr/src and /usr/src/sys, skip over the file marker on the tape, and extract the fifth file to /usr/src/sys.

          # mkdir src
          # cd src
          # mkdir sys
          # cd sys
          # mt fsf
          # tar xpbf 20 /dev/rmt12

Next, we move back up to /usr/src, skip forward to the sixth file on the tape, and extract it to /usr/src.

          # cd ..
          # mt fsf
          # tar xpbf 20 /dev/rmt12
          #

Lastly, we create /etc/fstab, the file system table. This specifies where partitions are to be mounted on each boot. There are several fields for each entry: the first is the device name for the partition, and the second is where it should be mounted (or none if it is not to be mounted). The third entry is rw for read/write access, or sw if this is a swap partition. Don't worry about the rest of the entry for now; you can always look it up later. The input is ended by typing control-D (^D).

          # cd /etc
          # cat > fstab
          /dev/ra0a:/:rw:1:1
          /dev/ra0b:none:sw:1:1
          /dev/ra0g:/usr:rw:1:2
          /dev/ra0h:/home:rw:1:3
          ^D
          #

Now, we shut down so that we can boot from the newly restored complete system.

          # reboot
          syncing disks... done

          HALT instruction, PC: 8002F700 (BRB 8002F6FF)
          sim> quit
          Goodbye
          NVR: writing buffer to file
          $

Stage 4 - Booting from the complete system, and tidying up

Now that we have a complete system, we need yet another initialisation file for SIMH. This one just has a few lines changed or added. The first set replaces the set dz disable line, as we now want to enable the DZ-11 serial line multiplexer. We also set the number of active lines to 8 (the maximum), and set the lines to operate in 7 bit mode. We also 'attach' the DZ-11 to a TCP/IP port - we have chosen 8023, as this is a 'local' telnet port with a rather non-standard destination.

          ; Enable the DZ-11 serial lines
          set dz enable
          attach dz 8023
          set dz lines=8
          set dz 7b

The other set of lines in our modified initialisation file replace the set xq disable line. This is because we want to enable the XQ interface, which is an Ethernet interface, so that we can use networking. We set the interface to simulate a DEQNA, as that is well supported by Quasijarus, and we attach xq0 to our local real hardware Ethernet interface, so substitute that for em0 in the example. For more details, see the SIMH documentation.

          ; Attach the Ethernet interface
          set xq enable
          set xq type=deqna
          attach xq0 em0

A copy of this modified file is provided inside initfiles.zip, and it is called vax.ini. This name was chosen for a reason; it is the default name for the VAX SIMH initialisation file, so we don't have to use its name explicitly any more.

Having incorporated any other changes into vax.ini, it is time to boot again. This time, the simulator gives us a couple of extra messages: one tells us that it is listening on port 8023 for simulated DZ-11 activity, and the other tells us that the simulated DEQNA has attached to our own network interface.

          $ vax

          VAX simulator V3.9-0
          Listening on port 8025 (socket 4)
          Eth: opened OS device em0
          NVR: buffering file in memory
          Loading boot code from ka655x.bin
          Loading boot code from /usr/local/share/simh/ka655x.bin


          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.
          >>>b
          (BOOT/R5:0 DUA0



            2..
          -DUA0
            1..0..

          loading boot

          Boot
          : /vmunix
          327204+103384+130352 start 0x23a8
          4.3 BSD Quasijarus UNIX #0: Sat Oct  2 22:15:38 CDT 1999
              msokolov@luthien:/usr/src/sys/GENERIC
          real mem  = 16744448
          SYSPTSIZE limits number of buffers to 112
          avail mem = 14920704
          using 112 buffers containing 917504 bytes of memory
          MicroVAX 3000, ucode rev 6
          tmscp0 at uba0 csr 174500 vec 774, ipl 15
          tms0 at tmscp0 slave 0
          uda0 at uba0 csr 172150 vec 770, ipl 15
          uda0: version 3 model 3
          uda0: DMA burst size set to 4
          ra0 at uda0 slave 0: ra82, size = 1216665 sectors
          dz0 at uba0 csr 160100 vec 300, ipl 17
          dz1 at uba0 csr 160110 vec 310, ipl 17
          qe0 at uba0 csr 174440 vec 764, ipl 14
          qe0: deqna, hardware address 08:00:2b:aa:bb:cc
          Changing root device to ra0a
          Automatic reboot in progress...
          Mon Mar 27 06:21:36 CST 2000
          /dev/ra0a: 451 files, 5230 used, 1863 free (15 frags, 231 blocks, 0.2% fragmentation)
          /dev/rra0g: 12266 files, 71414 used, 323437 free (405 frags, 40379 blocks, 0.1% fragmentation)
          /dev/rra0h: 1 files, 1 used, 136503 free (15 frags, 17061 blocks, 0.0% fragmentation)
          Mon Mar 27 06:21:44 CST 2000
          checking quotas: done.
          starting system logger

          preserving editor files
          clearing /tmp
          standard daemons: update        Mon Mar 27 06:21:45 CST 2000
           cron accounting.
          starting network daemons: routedMar 27 06:21:45 myname named[82]: /etc/named.boot: No such file or directory
           named inetd printer.
          starting local daemons: sendmail.
          Mon Mar 27 06:21:45 CST 2000


          4.3 BSD UNIX (myname.my.domain) (console)

          login:root

One minor bit of tidying up is to delete a file left behind by the restore of the root file system:

          # rm /restoresymtable

We will now need to edit some files. The obvious editor to use is vi/ex, or perhaps ed, which will work on any terminal.

The first thing is to make the system aware of its own name. For this example, we use quasijarus.example.com; substitute your own choice here. We will also use the example IP address 192.168.42.254. First, add the name and IP address the /etc/hosts file:

          $ cat >> /etc/hosts
          192.168.42.254 quasijarus.example.com
          ^D
          $

Note that we completed the input with control-D (^D). We also need to do a number of edits to /etc/netstart; the whole file is shown below, with sample changes shown in red. The default route is only necessary if you want to specify a gateway to other networks, and of course you will need to supply the correct address.

          #!/bin/sh -
          #
          #       @(#)netstart    1.1 (Berkeley) 1/10/99

          routedflags=-q
          rwhod=NO

          # myname is my symbolic name
          # my-netmask is specified in /etc/networks
          #
          hostname=quasijarus.example.com
          hostname $hostname

          #ifconfig imp0 inet $hostname
          #ifconfig de0 inet $hostname netmask my-netmask
          #ifconfig qe0 inet $hostname netmask my-netmask
          ifconfig qe0 192.168.42.254 netmask 255.255.255.0
          route add default 192.168.42.129 1

          ifconfig lo0  inet localhost
          route add $hostname localhost 0
          hostid $hostname

Now, disable the local DNS server; we will use the one on our own network. Use of the local DNS server (named) is outside the scope of these instructions. To disable the local DNS server, comment out the relevant line in /etc/rc:

          #named;                 echo -n ' named'                >/dev/console

Now specify your network's own DNS server in /etc/resolv.conf, substituting its IP address:

          $ cat > /etc/resolv.conf
          nameserver 192.168.42.130
          ^D
          $

The easiest way to get all this to take effect is to reboot (not shown here).

You are really on your own from here; manual pages are available via the man command.

Other information

This section contains oddments of useful information.

Other information

Although everything you need to know for installation is detailed above, there is lots more information in the original setup instructions, which can be found here.

A list of changes can be found here.

Details of the original distribution tape layout can be found here.

Idle time tuning

If you let Quasijarus go quiescent, you will still see a rather high CPU usage on the system hosting the emulator. This is because, when idle, Quasijarus goes into a tight loop waiting for somethign to happen.

You can tell SIMH to recognise Quasijarus' particular idle loop, and make allowance for it. This will reduce CPU usage considerably. To do this, add the following to vax.ini:

          set cpu idle=quasijarus

Boot flags

When you boot the CPU (at the >>> prompt; you usually type boot, or just b). You can give some boot flags here, and they'll affect the way the system boots. The boot flags are specified as a single hexadecimal number following a / character; the most useful values are as follows, and they can be combined (by adding them) if desired.

  • 1: stop in the bootstrap so that an alternate kernel or partition can be specified.
  • 2: bring the system up in single user mode for maintenance.
  • 80: bring the system up with the root file system mounted read-only

For example, to boot into single user mode:

          >>>boot/2

Date and time

Quasijarus is not Year 2000 aware. What you do about this is up to you. Hint: start by fixing the date command!

Remote access

The configuration we have set up includes eight remote terminals on two simulated four line DZ-11 serial multiplexers. These have been associated with port 8023 in our example setup, and we can simply use a telnet client to access the system running SIMH, on that port. We will get a login prompt!

Adding new users

It is unwise to work as root, since that user has the power to destroy the system. You can create a normal user account; full details can be found by using the command man adduser.

Setting a root password

It is good practice to set a root password! Use the passwd command.


Valid XHTML 1.1! Valid CSS! Facebook logo

This site is copyright © 2017 Bob Eager
Last updated: 04 Nov 2017