Installing 4.3 BSD Quasijarus on SIMH
This is the procedure that I have used to install 4.3 BSD onto SIMH's MicroVAX II emulator. Please note that this is the Quasijarus release of 4.3 BSD.
Contents
Obtaining an install tape
You have two choices now, either you can create your own, or you can download a pre-made tape on sourceforge. If you want to build your own tape image, then follow the next section.
Building your own tape image
I will describe what is needed, and how to create your own Quasijarus tape image, that is suitable for installing with SIMH.
Requirements
You will need the following materials to put together a 4.3 BSD Quasijarus installation:
- A working perl interpeter to make the tape images.
- A copy of gzip.
- A working C compiler.
- A compiled binary of vax from SIMH, along with the ka655x.bin again from SIMH.
You will need the following files from any 4 BSD archive from the Quasijarus0c directory. I have used the files from Sourceforge. You you will have to use a web browser to download them, to deal with the sourceforge download system. But that's the price of free hosting.
stand.Z
miniroot.Z
rootdump.Z
usr.tar.Z
srcsys.tar.Z
src.tar.Z
gzcompat
Next it's easier on a host machine to convert the downloaded Quasijarus files into gzip, then uncompress them using gzip. For this you will need the gzcompat program. The sourcecode and a patch for windows compatibility on the link, as it's getting hard to find. Simply compile gzcompat.c. It should be straightforward. The original location for gzcompat is [here] and a known good copy is [here].
On most instances with gcc simply run:
gcc gzcompat.c -o gzcompat
And that should be it.
Preparing for installation
With the files downloaded you will need to uncompress them all and then create the tape file. With the different compression this will be somewhat involved.
The following command will decompress the tape files, on a UNIX install.
cat miniroot.Z | gzcompat | gzip -dc > miniroot cat rootdump.Z | gzcompat | gzip -dc > rootdump cat src.tar.Z | gzcompat | gzip -dc > src.tar cat srcsys.tar.Z | gzcompat | gzip -dc > srcsys.tar cat stand.Z | gzcompat | gzip -dc > stand cat usr.tar.Z | gzcompat | gzip -dc > usr.tar
The tape needs to be created with the mkdisttap.pl program. Simply run the program and redirect it into a file called quas.tap. You may need to make a few small edits and use TYPE instead of cat when running on Windows. Hints in the link.
% ./mkdisttap.pl > quas.tap % ls -l quas.tap -rw-r--r-- 1 Neozeed None_ploc 84450876 Feb 6 17:10 quas.tap %
An empty RA82 can be created with:
% dd if=/dev/zero of=quas.dsk bs=512 count=1216665
Now we have our tape and disk, so we are ready to proceed with the install. For those wondering, unlike the 11/780 emulator, the MicrovaxII can run it's microcode in a logical fashion and we are able to boot from tape in this release.
Boot 1.
I disable as many of the devices as possible to get a 'clean' install. So this is the install.ini that I'm going to use.
install.ini
set cr dis set lpt dis set rl dis set ry dis set ts dis set xq dis set rq0 ra82 att rq0 quas.dsk set rq1 dis set rq2 dis set rq3 dis att tq0 quas.tap set tti 7b set tto 7b boot cpu
Booting the emulator
You then simply run the emulator and pass it the config file.
C:\Quasijarus0c\work>vax.exe install.ini VAX simulator V3.8-0 RQ: creating new file Loading boot code from ka655x.bin ←[c 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. >>>boot mua0: (BOOT/R5:0 MUA0 2.. -MUA0 1..0.. =
Once the BIOS has done it's POST, it will prompt what device to boot off of at the >>> prompt. The first tape device is mua0:. Once the tape has done the first boot you'll be greeted with the = prompt. From here we are going to load the copy program. Simply type in the following:
copy tms(0,1) ra(0,1)
This will copy the second file onto tape, onto the second file position on our hard disk. The output should be the following:
=copy cpu: uVAX 3000 From: tms(0,1) To: ra(0,1) ra0: unlabeled Copy completed: 308 records copied =
Next we run the boot program. Simply type in the following:
boot ra(0,1)vmunix
The resulting output should be the following. The kernel will then prompt for the root partition.
=boot cpu: uVAX 3000 Boot : ra(0,1)vmunix ra0: unlabeled 326312+104440+130352 start 0x23b8 4.3 BSD Quasijarus UNIX #3: Sat Feb 14 20:31:03 PST 2004 root@luthien.Harhan.ORG:/nbsd/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 tms1 at tmscp0 slave 1 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: ra81, size = 891072 sectors dz0 at uba0 csr 160100 vec 300, ipl 15 dz1 at uba0 csr 160110 vec 310, ipl 15 dz2 at uba0 csr 160120 vec 320, ipl 15 dz3 at uba0 csr 160130 vec 330, ipl 15 root device?
We will answer with the first ra disk, in a special format, because we have not put a disklabel onto the disk yet.
ra0*
Once the disk has been mounted we will be dumped to the root prompt. The next step will be creating the default disk label.
Creating the disk label
Using the disklabel command we will setup the slices automatically (it's done from a file disktab) then install the boot programs. This way we can boot from disk.
Simply type in:
disklabel -rw ra0 ra82 "Quasijarus" /usr/mdec/rdboot /usr/mdec/bootra
And the disk will now be labled, and bootable from the firmware.
Restoring the rootdump
From here we are now running from the miniroot. The next step is to run the xtr program to restore the root, and then shutdown the emulator. Enter in the command:
disk=ra0 type=ra82 tape=tms xtr
And the following will happen:
# 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 426 files, 5195 used, 1898 free (18 frags, 235 blocks, 0.3% 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 #
After this stage, I just sync the disk a few times, then halt the emulator (CONTROL+E) and exit out. Now we are ready for stage two.
If this is a 730, update the cassette # sync # sync # sync Simulation stopped, PC: 800029AF (BNEQ 800029C6) sim> q Goodbye C:\Quasijarus0c\work>
Boot 2.
Now that the install disk is prepared, we need to use a different config file to reflect the emulator being able to autoboot to the disk. The new configuration is as follows:
boot.ini
set cr dis set lpt dis set rl dis set ry dis set ts dis set xq dis set rq0 ra82 att rq0 quas.dsk set rq1 dis set rq2 dis set rq3 dis att tq0 quas.tap set tti 7b set tto 7b att nvr nvram.dat dep bdr 1 boot cpu
Booting the emulator
Now boot up the emulator with the boot.ini The first time we boot up in this configuration the emulator will prompt for what device will be the default device. If you typo this, you will have to delete the nvram.dat file, and try again. The default device will be dua0: which is the primary rq disk.
C:\Quasijarus0c\work>vax.exe boot.ini VAX simulator V3.8-0 NVR: creating new file NVR: buffering file in memory Loading boot code from ka655x.bin ←[c 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. Loading system software. No default boot device has been specified. Available devices. -DUA0 (RA 82) -MUA0 (TK 50) -MUA1 (TK 50) -MUA2 (TK 50) -MUA3 (TK 50) Device? [XQA0]: dua0: (BOOT/R5:0 DUA0 2.. -DUA0 1..0.. loading boot Boot : /vmunix 326312+104440+130352 start 0x23b8 4.3 BSD Quasijarus UNIX #3: Sat Feb 14 20:31:03 PST 2004 root@luthien.Harhan.ORG:/nbsd/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 tms1 at tmscp0 slave 1 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 15 dz1 at uba0 csr 160110 vec 310, ipl 15 dz2 at uba0 csr 160120 vec 320, ipl 15 dz3 at uba0 csr 160130 vec 330, ipl 15 Changing root device to ra0a Automatic reboot in progress... Fri Feb 6 09:47:10 PST 2004 Can't open checklist file: /etc/fstab Automatic reboot failed... help! erase ^?, kill ^U, intr ^C #
Preparing the disk
Now we have to prep the machine for both the tape, and the type of disk. Type in the following commands.
# newfs ra0g ra82 # newfs ra0h ra82 # mkdir /home # mount /dev/ra0g /usr # cd /dev # MAKEDEV tmscp0 # MAKEDEV dz0
The output will be like this:
# 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, # mkdir /home # mount /dev/ra0g /usr # cd /dev # MAKEDEV tmscp0 # MAKEDEV dz0
Restoring the usr slice
The disk's /usr slice will not have been formatted. We can not go ahead and mount it, and restore the /usr files.
# cd /usr # mt rew # mt fsf 3 # tar xpbf 20 /dev/rmt12 # mkdir src # cd src # mkdir sys # cd sys # mt fsf # tar xpbf 20 /dev/rmt12 # cd .. # mt fsf # tar xpbf 20 /dev/rmt12
Configuring the fstab
Now we just need to create the fstab then we can reboot the emulator into multiuser mode. Enter in the following commands:
# cd /etc # cat > fstab /dev/ra0a:/:rw:1:1 /dev/ra0h:/home:rw:1:3 /dev/ra0g:/usr:rw:1:2
Now you need to press CONTROL+d which will end the stream. Finally you can tell the emulator to reboot.
# reboot syncing disks... done HALT instruction, PC: 8002F4F8 (BRB 8002F4F7) sim> q Goodbye NVR: writing buffer to file
First Multiuser Boot
Now we can just re-run the last command, and we should boot multiuser! By default there is no root password. Also the system will run fsck uppon boot, so depending on your host computer this could take a while.
C:\Quasijarus0c\work>vax.exe boot.ini VAX simulator V3.8-0 NVR: buffering file in memory Loading boot code from ka655x.bin ←[c 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. Loading system software. (BOOT/R5:0 DUA0 2.. -DUA0 1..0.. loading boot Boot : /vmunix 326312+104440+130352 start 0x23b8 4.3 BSD Quasijarus UNIX #3: Sat Feb 14 20:31:03 PST 2004 root@luthien.Harhan.ORG:/nbsd/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 tms1 at tmscp0 slave 1 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 15 dz1 at uba0 csr 160110 vec 310, ipl 15 dz2 at uba0 csr 160120 vec 320, ipl 15 dz3 at uba0 csr 160130 vec 330, ipl 15 Changing root device to ra0a Automatic reboot in progress... Fri Feb 6 09:59:45 PST 2004 /dev/ra0a: 448 files, 5199 used, 1894 free (22 frags, 234 blocks, 0.3% fragmentation) /dev/rra0g: 12312 files, 71682 used, 323169 free (417 frags, 40344 blocks, 0.1% fragmentation) /dev/rra0h: 1 files, 1 used, 136503 free (15 frags, 17061 blocks, 0.0% fragmentation) Fri Feb 6 09:59:58 PST 2004 checking quotas: done. starting system logger preserving editor files clearing /tmp standard daemons: update cron accounting. starting network daemons: routedFeb 6 10:00:00 myname named[79]: /etc/named.boo t: No such file or directory named inetd printer. starting local daemons: sendmail. Fri Feb 6 10:00:01 PST 2004 4.3 BSD UNIX (myname.my.domain) (console) login:
Now we can simply logon as root.
Fri Feb 6 10:00:01 PST 2004 4.3 BSD UNIX (myname.my.domain) (console) login: root Feb 6 10:01:26 myname login: ROOT LOGIN console 4.3 BSD Quasijarus UNIX #3: Sat Feb 14 20:31:03 PST 2004 Welcome to UNIX! erase ^?, kill ^U, intr ^C #
From here you can explore the system. All of the man pages are installed, and there is enough of a base system to get going. Right now the networking is outside of the scope of this guide.
Enabling remote users
Shutdown the OS, and add the following lines into the boot.ini (just make sure they are above the boot command or it'll not work correctly..). This will allow for 8 users to connect on tcp port 8888.
set dz lines=8 att dz 8888 set dz 7b
I would also recommend to windows users, either putty, or syncterm. The default telnet client sucks.