Difference between revisions of "Installing 4.1c BSD on SIMH"

From Computer History Wiki
Jump to: navigation, search
(Restoring the usr slice)
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
This is the procedure that I have used to install [[4.1_BSD|4.1c BSD]] onto [[SIMH]]'s vax 11/780 emulator.
 
This is the procedure that I have used to install [[4.1_BSD|4.1c BSD]] onto [[SIMH]]'s vax 11/780 emulator.
 
<span style="color:red"><span style="font-size:200%">Work in progress, do not use this instruction!</span></span>
 
  
 
== Requirements ==
 
== Requirements ==
Line 9: Line 7:
 
*A working zip tool to extract .zip files
 
*A working zip tool to extract .zip files
 
*A method of extracting the boot file from either the binaries (tar/gzip) or [[uudecode]] to extract it from [[boot42|here]].
 
*A method of extracting the boot file from either the binaries (tar/gzip) or [[uudecode]] to extract it from [[boot42|here]].
*A compiled binary of vax780 from [[SIMH]], along with the vmb.exe again from [[SIMH]].
+
*A compiled binary of '''vax780''' from [[SIMH]] (use <code>make vax780</code> to build '''vax780''').
  
You will need the following files from Bitsavers archive from the 4.1 directory.  I have used the files:
+
You will need the following files from Bitsavers archive from the UCB_CSRG directory.  I have used the files:
  
 
* [http://bitsavers.informatik.uni-stuttgart.de/bits/UCB_CSRG/4.1C_BSD_1of2.zip 4.1C_BSD_1of2.zip]
 
* [http://bitsavers.informatik.uni-stuttgart.de/bits/UCB_CSRG/4.1C_BSD_1of2.zip 4.1C_BSD_1of2.zip]
Line 18: Line 16:
 
== Preparing for installation ==
 
== Preparing for installation ==
  
Extract these .zip archive files. You will get a prepared .tap files (a SIMH tape images) and  a folder with "bursts". This is just a binary images extracted from tape. We need a 4.1c BSD '''miniroot''':
+
Extract these .zip archive files. You will get a prepared .tap files (a SIMH tape images) and  a folder with "bursts". This is just a binary images extracted from tape. You need a 4.1c BSD '''miniroot''':
 +
<pre>
 +
% unzip 4.1C_BSD_1of2.zip
 +
Archive:  4.1C_BSD_1of2.zip
 +
  creating: 4.1C_BSD_1of2/
 +
  inflating: 4.1C_BSD_1of2/.DS_Store
 +
  inflating: 4.1C_BSD_1of2/4.1C_BSD_1of2.tap
 +
  creating: 4.1C_BSD_1of2/burst/
 +
  inflating: 4.1C_BSD_1of2/burst/00000
 +
  inflating: 4.1C_BSD_1of2/burst/00001
 +
  inflating: 4.1C_BSD_1of2/burst/00002
 +
  inflating: 4.1C_BSD_1of2/burst/00003
 +
  inflating: 4.1C_BSD_1of2/burst/00003.txt
 +
  inflating: 4.1C_BSD_1of2/burst/00004
 +
  inflating: 4.1C_BSD_1of2/burst/00004.txt
 +
extracting: 4.1C_BSD_1of2/burst/00005
 +
extracting: 4.1C_BSD_1of2/burst/00006
 +
extracting: 4.1C_BSD_1of2/burst/00007
 +
extracting: 4.1C_BSD_1of2/burst/00008
 +
  inflating: 4.1C_BSD_1of2/label.jpg
 +
% unzip 4.1C_BSD_2of2.zip
 +
Archive:  4.1C_BSD_2of2.zip
 +
  creating: 4.1C_BSD_2of2/
 +
  inflating: 4.1C_BSD_2of2/.DS_Store
 +
  inflating: 4.1C_BSD_2of2/4.1C_BSD_2of2.tap
 +
  creating: 4.1C_BSD_2of2/burst/
 +
  inflating: 4.1C_BSD_2of2/burst/00000
 +
  inflating: 4.1C_BSD_2of2/burst/00000.txt
 +
extracting: 4.1C_BSD_2of2/burst/00001
 +
extracting: 4.1C_BSD_2of2/burst/00002
 +
  inflating: 4.1C_BSD_2of2/label.jpg
 +
</pre>
 
<pre>
 
<pre>
 
% cp 4.1C_BSD_1of2/burst/00001 miniroot
 
% cp 4.1C_BSD_1of2/burst/00001 miniroot
%file  miniroot
+
% file  miniroot
 
miniroot: Unix Fast File system (little-endian), last mounted on /mnt,
 
miniroot: Unix Fast File system (little-endian), last mounted on /mnt,
 
last written at Tue Apr  5 02:43:45 1983, clean flag 0, number of blocks 2048,
 
last written at Tue Apr  5 02:43:45 1983, clean flag 0, number of blocks 2048,
Line 73: Line 102:
  
 
<pre>
 
<pre>
C:\41cBSD]# vax780 install.ini
+
% vax780 install.ini
  
 
VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
 
VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
Line 109: Line 138:
 
=== Restoring the rootdump ===
 
=== Restoring the rootdump ===
  
From here we are now running from the miniroot. The next steps are as follows:
+
From here we are now running from the '''miniroot'''. Create a device file for '''second''' disk:
  
 
<pre>
 
<pre>
# disk=ra type=ra81 tape=ts xtr
+
# cd /dev
 +
# ./MAKEDEV ra1
 +
# cd /
 
</pre>
 
</pre>
  
This will create a 'device' for the ra1 disk, then run the xtr program to restore the root dump.
+
Unfortunatey, <code>xtr</code> script is broken in the 4.1c BSD, so enter commands manually.
 
 
 
<pre>
 
<pre>
# disk=ra type=ra81 tape=ts xtr
+
# newfs ra1a ra81
Build root file system
 
 
Warning: 538 sector(s) in last cylinder unallocated
 
Warning: 538 sector(s) in last cylinder unallocated
/dev/ra0a:      15884 sectors in 23 cylinders of 14 tracks, 51 sectors
+
/dev/ra1a:      15884 sectors in 23 cylinders of 14 tracks, 51 sectors
 
         8.1Mb in 2 cyl groups (16 c/g, 5.85Mb/g, 1856 i/g)
 
         8.1Mb in 2 cyl groups (16 c/g, 5.85Mb/g, 1856 i/g)
 
super-block backups (for fsck -b#) at:
 
super-block backups (for fsck -b#) at:
Line 127: Line 156:
 
WRITE THESE NUMBERS DOWN!!!
 
WRITE THESE NUMBERS DOWN!!!
 
fsck depends on them to recover this file system.
 
fsck depends on them to recover this file system.
newfs: /usr/mdec/a0boot: No such file or directory
+
newfs: /usr/mdec/a1boot: No such file or directory
Check the file system
+
</pre>
** /dev/rra0a
+
<pre>
 +
# fsck /dev/rra1a
 +
** /dev/rra1a
 
** Last Mounted on
 
** Last Mounted on
 
** Phase 1 - Check Blocks and Sizes
 
** Phase 1 - Check Blocks and Sizes
Line 137: Line 168:
 
** Phase 5 - Check Cyl groups
 
** Phase 5 - Check Cyl groups
 
2 files, 9 used, 7420 free (20 frags, 925 blocks)
 
2 files, 9 used, 7420 free (20 frags, 925 blocks)
Rewind tape
+
</pre>
Restore the dump image of the root
+
<pre>
** /dev/rra0a
+
# mount /dev/ra1a /a
 +
# cd /a
 +
# mt -t /dev/ts0 rew
 +
# restor xsf 3 /dev/ts0
 +
# cd /
 +
# sync
 +
# umount /dev/ra1a
 +
# sync
 +
# fsck /dev/rra1a
 +
** /dev/rra1a
 
** Last Mounted on /a
 
** Last Mounted on /a
 
** Phase 1 - Check Blocks and Sizes
 
** Phase 1 - Check Blocks and Sizes
Line 147: Line 187:
 
** Phase 5 - Check Cyl groups
 
** Phase 5 - Check Cyl groups
 
257 files, 3338 used, 4091 free (19 frags, 509 blocks)
 
257 files, 3338 used, 4091 free (19 frags, 509 blocks)
Root filesystem extracted
 
 
If this is a 780, update floppy
 
If this is a 730, update the cassette
 
#
 
 
</pre>
 
</pre>
  
Line 157: Line 192:
  
 
<pre>
 
<pre>
If this is a 730, update the cassette
 
 
# sync
 
# sync
 
# sync
 
# sync
Line 166: Line 200:
 
Goodbye
 
Goodbye
  
C:\4.2BSD\work>
+
%
 
</pre>
 
</pre>
 
  
 
==  Boot 2. ==
 
==  Boot 2. ==
  
Now that the install disk is prepared, we need to use a different config file to reflect us going back to a single disk/tape configuration.  The new configuration is as follows:
+
Now that the install disk is prepared, we need to use a different config file to reflect us going back to a '''single disk'''/tape configuration.  The new configuration is as follows:
  
 
=== boot.ini ===
 
=== boot.ini ===
Line 178: Line 211:
 
set rq0 ra81
 
set rq0 ra81
 
att rq0 rq.dsk
 
att rq0 rq.dsk
 +
;
 
set rq1 dis
 
set rq1 dis
 
set rq2 dis
 
set rq2 dis
Line 187: Line 221:
 
set tu dis
 
set tu dis
 
att ts 4.1C_BSD_1of2.tap
 
att ts 4.1C_BSD_1of2.tap
 +
;
 
set tti 7b
 
set tti 7b
 
set tto 7b
 
set tto 7b
load -o bootra 0
+
load -o boot42 0
 
d r10 9
 
d r10 9
 
d r11 0
 
d r11 0
Line 200: Line 235:
  
 
<pre>
 
<pre>
C:\4.2BSD\work>vax780.exe boot.ini
+
% vax780.exe boot.ini
  
VAX 11/780 simulator V4.0-0 Beta        git commit id: b8049645
+
VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
 
loading ra(0,0)boot
 
loading ra(0,0)boot
 
Boot
 
Boot
Line 229: Line 264:
 
WARNING: should run interleaved swap with >= 2Mb
 
WARNING: should run interleaved swap with >= 2Mb
 
Automatic reboot in progress...
 
Automatic reboot in progress...
Thu Feb 3 00:16:22 PST 1983
+
Fri Aug 5 11:12:30 PDT 1983
 
Can't open checklist file: /etc/fstab
 
Can't open checklist file: /etc/fstab
 
Automatic reboot failed... help!
 
Automatic reboot failed... help!
Line 241: Line 276:
  
 
<pre>
 
<pre>
# disk=ra
 
# name=ra0h;type=ra81
 
 
# cd /dev
 
# cd /dev
 
# ./MAKEDEV ra0;sync
 
# ./MAKEDEV ra0;sync
 +
# ./MAKEDEV ts0;sync
 
# cd /
 
# cd /
 +
</pre>
 +
 +
Edit a '''ra81''' disk definition and add an extra space to '''h''' partition. Early 4.x BSD mounted /dev/xx0h partition as /usr (not /dev/xx0g).
 +
 +
<pre>
 +
# ed /etc/disktab
 +
5234
 +
-8
 +
ra81|RA81|DEC RA81 Winchester:\
 +
d
 +
d
 +
d
 +
d
 +
d
 +
d
 +
d
 +
d
 +
d
 +
a
 +
ra81|RA81|DEC RA81 Winchester:\
 +
        :ty=winchester:ns#51:nt#14:nc#1248:\
 +
        :pa#15884:ba#8192:fa#1024:\
 +
        :pb#33440:pc#891072:\
 +
        :pd#15884:bd#8192:fd#1024:\
 +
        :pe#55936:be#4096:fe#512:\
 +
        :pf#478582:bf#4096:ff#1024:\
 +
        :pg#82080:bg#4096:fg#512:\
 +
        :ph#759668:bh#4096:fh#1024:
 +
.
 +
w
 +
q
 +
#
 
# newfs -v ra0h ra81
 
# newfs -v ra0h ra81
 
</pre>
 
</pre>
Line 252: Line 318:
  
 
<pre>
 
<pre>
# disk=ra
 
# name=ra0h;type=ra81
 
# cd /dev
 
# ./MAKEDEV ra0;sync
 
# cd /
 
 
# newfs -v ra0h ra81
 
# newfs -v ra0h ra81
/etc/mkfs /dev/ra0h 291346 51 14 4096 512 16 10 60
+
/etc/mkfs /dev/ra0h 759668 51 14 4096 1024 16 10 60
Warning: 680 sector(s) in last cylinder unallocated
+
Warning: 28 sector(s) in last cylinder unallocated
/dev/ra0h:      291346 sectors in 409 cylinders of 14 tracks, 51 sectors
+
/dev/ra0h:      759668 sectors in 1064 cylinders of 14 tracks, 51 sectors
         149.2Mb in 26 cyl groups (16 c/g, 5.85Mb/g, 2048 i/g)
+
         389.0Mb in 67 cyl groups (16 c/g, 5.85Mb/g, 2048 i/g)
 
super-block backups (for fsck -b#) at:
 
super-block backups (for fsck -b#) at:
 
  32, 11512, 22992, 34472, 45952, 57432, 68912, 80392, 91872, 103352,
 
  32, 11512, 22992, 34472, 45952, 57432, 68912, 80392, 91872, 103352,
 
  114832, 126312, 137792, 149272, 160752, 172232, 182816, 194296, 205776, 217256,
 
  114832, 126312, 137792, 149272, 160752, 172232, 182816, 194296, 205776, 217256,
  228736, 240216, 251696, 263176, 274656, 286136,
+
  228736, 240216, 251696, 263176, 274656, 286136, 297616, 309096, 320576, 332056,
 +
343536, 355016, 365600, 377080, 388560, 400040, 411520, 423000, 434480, 445960,
 +
457440, 468920, 480400, 491880, 503360, 514840, 526320, 537800, 548384, 559864,
 +
571344, 582824, 594304, 605784, 617264, 628744, 640224, 651704, 663184, 674664,
 +
686144, 697624, 709104, 720584, 731168, 742648, 754128,
 
WRITE THESE NUMBERS DOWN!!!
 
WRITE THESE NUMBERS DOWN!!!
 
fsck depends on them to recover this file system.
 
fsck depends on them to recover this file system.
Line 273: Line 338:
 
=== Restoring the usr slice ===
 
=== 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.  Then we unmount the slice, and run fsck to make sure everything is ok.
+
The disk's /usr slice will not have been formatted.  We can now go ahead and mount it, and restore the /usr files.  Then we unmount the slice, and run fsck to make sure everything is ok.
  
 
<pre>
 
<pre>
# mount /dev/$name /usr
+
# mount /dev/ra0h /usr
 
# cd /usr
 
# cd /usr
 
# mkdir sys
 
# mkdir sys
Line 291: Line 356:
 
# ln -s /usr/sys sys
 
# ln -s /usr/sys sys
 
# umount /dev/ra0h
 
# umount /dev/ra0h
# fsck /dev/ra0h
+
# fsck /dev/rra0h
 
</pre>
 
</pre>
  
Line 300: Line 365:
 
# rm -rf sys
 
# rm -rf sys
 
# ln -s /usr/sys sys
 
# ln -s /usr/sys sys
# umount /dev/$name
+
# umount /dev/ra0h
# fsck /dev/r$name
+
# fsck /dev/rra0h
 
** /dev/rra0h
 
** /dev/rra0h
 
** Last Mounted on /usr
 
** Last Mounted on /usr
Line 309: Line 374:
 
** Phase 4 - Check Reference Counts
 
** Phase 4 - Check Reference Counts
 
** Phase 5 - Check Cyl groups
 
** Phase 5 - Check Cyl groups
3070 files, 43917 used, 233460 free (284 frags, 29147 blocks)
+
3070 files, 22774 used, 339086 free (190 frags, 84724 blocks)
 
#
 
#
 
</pre>
 
</pre>
Line 321: Line 386:
 
# cp fstab.ra81 fstab
 
# cp fstab.ra81 fstab
 
# newfs ra0g ra81
 
# newfs ra0g ra81
 +
# sync
 +
# sync
 
# sync
 
# sync
 
# reboot
 
# reboot
Line 328: Line 395:
  
 
<pre>
 
<pre>
# cd /etc
+
monet# cd /etc
# cat > /etc/fstab
+
monet# cp fstab.ra81 fstab
/dev/ra0a:/:rw:1:1
+
monet# sync
/dev/ra0h:/usr:rw:1:2
+
monet# sync
^D
+
monet# sync
# sync
+
monet# reboot
# reboot
 
 
syncing disks... done
 
syncing disks... done
  
Reboot requested, PC: 80021716 (ADDL2 #8,SP)
+
Reboot request failed, PC: 800200DC (ADDL2 #8,SP)
 
sim> q
 
sim> q
 
Goodbye
 
Goodbye
Line 345: Line 411:
  
 
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.
 
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.
 
  
 
<pre>
 
<pre>
C:\4.2BSD\work>vax780.exe boot.ini
+
% vax780 boot.ini
  
VAX 11/780 simulator V4.0-0 Beta        git commit id: b8049645
+
VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
 
loading ra(0,0)boot
 
loading ra(0,0)boot
 
Boot
 
Boot
Line 377: Line 442:
 
WARNING: should run interleaved swap with >= 2Mb
 
WARNING: should run interleaved swap with >= 2Mb
 
Automatic reboot in progress...
 
Automatic reboot in progress...
Thu Feb 3 00:26:16 PST 1983
+
Fri Aug 5 16:21:49 PDT 1983
/dev/rra0a: 283 files, 3325 used, 4104 free (16 frags, 511 blocks)
+
/dev/rra0a: 286 files, 3340 used, 4089 free (17 frags, 509 blocks)
/dev/rra0h: 3072 files, 43931 used, 233446 free (278 frags, 29146 blocks)
+
/dev/rra0h: 3070 files, 22774 used, 339086 free (190 frags, 84724 blocks)
Thu Feb 3 00:26:16 PST 1983
+
/dev/rra0g: 2 files, 9 used, 77750 free (14 frags, 9717 blocks)
 +
Fri Aug 5 16:21:53 PDT 1983
 
local daemons: telnetd ftpd tftpd syslog sendmail.
 
local daemons: telnetd ftpd tftpd syslog sendmail.
 
preserving editor files
 
preserving editor files
 
clearing /tmp
 
clearing /tmp
standard daemons: update cron accounting berknet mail printer.
+
standard daemons: update         Fri Aug 5 16:21:54 PDT 1983
 +
 
 +
cron accounting berknet mail printer.
 
starting network: rshd rexecd rlogind rwhod routed.
 
starting network: rshd rexecd rlogind rwhod routed.
Thu Feb 3 00:26:17 PST 1983
+
Fri Aug 5 16:21:54 PDT 1983
  
ucbmonet login:  
+
ucbmonet login:
 
</pre>
 
</pre>
  
Line 402: Line 470:
 
</pre>
 
</pre>
  
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. Sadly there are bugs in how [[4.2 BSD]] and how [[SIMH]] interact with  the networking, and it is not reliable. As sad as it is to be an 'island' you can however setup the dz serial interface to allow more than one user.
+
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.
 +
 
 +
Sadly there are bugs in how [[4.1 BSD]] and how [[SIMH]] interact with  the networking, and it is not reliable. As sad as it is to be an 'island' you can however setup the dz serial interface to allow more than one user.
  
 
=== Enabling remote users ===
 
=== Enabling remote users ===
  
You can 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.
+
You can 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 30023.
  
 
<pre>
 
<pre>
 
set dz lines=8
 
set dz lines=8
 
set dz 7b
 
set dz 7b
att dz -m 8888
+
att dz -m 30023
 
</pre>
 
</pre>
  

Latest revision as of 15:30, 7 August 2017

This is the procedure that I have used to install 4.1c BSD onto SIMH's vax 11/780 emulator.

Requirements

You will need the following materials to put together a 4.1c BSD installation:

  • A working zip tool to extract .zip files
  • A method of extracting the boot file from either the binaries (tar/gzip) or uudecode to extract it from here.
  • A compiled binary of vax780 from SIMH (use make vax780 to build vax780).

You will need the following files from Bitsavers archive from the UCB_CSRG directory. I have used the files:

Preparing for installation

Extract these .zip archive files. You will get a prepared .tap files (a SIMH tape images) and a folder with "bursts". This is just a binary images extracted from tape. You need a 4.1c BSD miniroot:

% unzip 4.1C_BSD_1of2.zip
Archive:  4.1C_BSD_1of2.zip
   creating: 4.1C_BSD_1of2/
  inflating: 4.1C_BSD_1of2/.DS_Store
  inflating: 4.1C_BSD_1of2/4.1C_BSD_1of2.tap
   creating: 4.1C_BSD_1of2/burst/
  inflating: 4.1C_BSD_1of2/burst/00000
  inflating: 4.1C_BSD_1of2/burst/00001
  inflating: 4.1C_BSD_1of2/burst/00002
  inflating: 4.1C_BSD_1of2/burst/00003
  inflating: 4.1C_BSD_1of2/burst/00003.txt
  inflating: 4.1C_BSD_1of2/burst/00004
  inflating: 4.1C_BSD_1of2/burst/00004.txt
 extracting: 4.1C_BSD_1of2/burst/00005
 extracting: 4.1C_BSD_1of2/burst/00006
 extracting: 4.1C_BSD_1of2/burst/00007
 extracting: 4.1C_BSD_1of2/burst/00008
  inflating: 4.1C_BSD_1of2/label.jpg
% unzip 4.1C_BSD_2of2.zip
Archive:  4.1C_BSD_2of2.zip
   creating: 4.1C_BSD_2of2/
  inflating: 4.1C_BSD_2of2/.DS_Store
  inflating: 4.1C_BSD_2of2/4.1C_BSD_2of2.tap
   creating: 4.1C_BSD_2of2/burst/
  inflating: 4.1C_BSD_2of2/burst/00000
  inflating: 4.1C_BSD_2of2/burst/00000.txt
 extracting: 4.1C_BSD_2of2/burst/00001
 extracting: 4.1C_BSD_2of2/burst/00002
  inflating: 4.1C_BSD_2of2/label.jpg
% cp 4.1C_BSD_1of2/burst/00001 miniroot
% file  miniroot
miniroot: Unix Fast File system (little-endian), last mounted on /mnt,
last written at Tue Apr  5 02:43:45 1983, clean flag 0, number of blocks 2048,
number of data blocks 1903, number of cylinder groups 1, block size 8192,
fragment size 1024, minimum percentage of free blocks 10, rotational delay 2ms,
disk rotational speed 65rps, TIME optimization

Next you will need the boot program. I have uploaded a copy onto this wiki in uuencoded format. To decode it, simply access the article, and copy the contents of the quoted text (the begin/end part INCLUDING the begin & end segments) and save it to a text file. Then you will need to run the uudecode file as follows:

% ls -l boot42.uue
-rw-r--r--  1 Neozeed  None_ploc  9117 Feb  6 12:09 boot42.uue
% uudecode boot42.uue
% ls -l boot42
-rw-------  1 Neozeed  None_ploc  6600 Feb  6 12:28 boot42
% file boot42
boot42: data

Boot 1.

We are going to use the following config file to start the first phase of the installation. Save the following configuration into a file such as 'install.ini'. Since we are going to boot directly into the miniroot the rq1 disk will hold the installation target. Since the 'normal' way to install is to install from tape onto the first disk, we will have to add a device file upon boot for the second disk.

install.ini

set rq0 ra81
at rq0 miniroot
set rq1 ra81
at rq1 rq.dsk
;
set rq2 dis
set rq3 dis
set rp dis
set lpt dis
set rl dis
set tq dis
set tu dis
att ts 4.1C_BSD_1of2.tap
set tti 7b
set tto 7b
load -o boot42 0
d r10 9
d r11 0
run 2

Booting the emulator

You then simply run the emulator and pass it the config file.

% vax780 install.ini

VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
RQ1: creating new file
loading ra(0,0)boot
Boot
: ra(0,0)vmunix
215688+63964+69764 start 0xf98
4.1c BSD UNIX #1: Sun Mar 27 14:48:45 PST 1983
real mem  = 8384512
avail mem = 7036928
using 148 buffers containing 838656 bytes of memory
mcr0 at tr1
mcr1 at tr2
uba0 at tr3
hk0 at uba0 csr 177440 vec 210, ipl 15
rk0 at hk0 slave 0
rk1 at hk0 slave 1
uda0 at uba0 csr 172150 vec 774, ipl 15
ra0 at uda0 slave 0
ra1 at uda0 slave 1
zs0 at uba0 csr 172520 vec 224, ipl 15
ts0 at zs0 slave 0
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 on ra0
WARNING: clock gained 122 days -- CHECK AND RESET THE DATE!
WARNING: should run interleaved swap with >= 2Mb
erase ^?, kill ^U, intr ^C
#

Restoring the rootdump

From here we are now running from the miniroot. Create a device file for second disk:

# cd /dev
# ./MAKEDEV ra1
# cd /

Unfortunatey, xtr script is broken in the 4.1c BSD, so enter commands manually.

# newfs ra1a ra81
Warning: 538 sector(s) in last cylinder unallocated
/dev/ra1a:      15884 sectors in 23 cylinders of 14 tracks, 51 sectors
        8.1Mb in 2 cyl groups (16 c/g, 5.85Mb/g, 1856 i/g)
super-block backups (for fsck -b#) at:
 32, 11520,
WRITE THESE NUMBERS DOWN!!!
fsck depends on them to recover this file system.
newfs: /usr/mdec/a1boot: No such file or directory
# fsck /dev/rra1a
** /dev/rra1a
** 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
2 files, 9 used, 7420 free (20 frags, 925 blocks)
# mount /dev/ra1a /a
# cd /a
# mt -t /dev/ts0 rew
# restor xsf 3 /dev/ts0
# cd /
# sync
# umount /dev/ra1a
# sync
# fsck /dev/rra1a
** /dev/rra1a
** 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
257 files, 3338 used, 4091 free (19 frags, 509 blocks)

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.

# sync
# sync
# sync
#
Simulation stopped, PC: 80001416 (FFS #0,#20,80044C3C,R0)
sim> q
Goodbye

%

Boot 2.

Now that the install disk is prepared, we need to use a different config file to reflect us going back to a single disk/tape configuration. The new configuration is as follows:

boot.ini

set rq0 ra81
att rq0 rq.dsk
;
set rq1 dis
set rq2 dis
set rq3 dis
set rp dis
set lpt dis
set rl dis
set tq dis
set tu dis
att ts 4.1C_BSD_1of2.tap
;
set tti 7b
set tto 7b
load -o boot42 0
d r10 9
d r11 0
run 2

Booting the emulator

Now boot up the emulator with the boot.ini

% vax780.exe boot.ini

VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
loading ra(0,0)boot
Boot
: ra(0,0)vmunix
215688+63964+69764 start 0xf98
4.1c BSD UNIX #1: Sun Mar 27 14:48:45 PST 1983
real mem  = 8384512
avail mem = 7036928
using 148 buffers containing 838656 bytes of memory
mcr0 at tr1
mcr1 at tr2
uba0 at tr3
hk0 at uba0 csr 177440 vec 210, ipl 15
rk0 at hk0 slave 0
rk1 at hk0 slave 1
uda0 at uba0 csr 172150 vec 774, ipl 15
ra0 at uda0 slave 0
ra1 at uda0 slave 1
zs0 at uba0 csr 172520 vec 224, ipl 15
ts0 at zs0 slave 0
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 on ra0
WARNING: should run interleaved swap with >= 2Mb
Automatic reboot in progress...
Fri Aug  5 11:12:30 PDT 1983
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.

# cd /dev
# ./MAKEDEV ra0;sync
# ./MAKEDEV ts0;sync
# cd /

Edit a ra81 disk definition and add an extra space to h partition. Early 4.x BSD mounted /dev/xx0h partition as /usr (not /dev/xx0g).

# ed /etc/disktab
5234
-8
ra81|RA81|DEC RA81 Winchester:\
d
d
d
d
d
d
d
d
d
a
ra81|RA81|DEC RA81 Winchester:\
        :ty=winchester:ns#51:nt#14:nc#1248:\
        :pa#15884:ba#8192:fa#1024:\
        :pb#33440:pc#891072:\
        :pd#15884:bd#8192:fd#1024:\
        :pe#55936:be#4096:fe#512:\
        :pf#478582:bf#4096:ff#1024:\
        :pg#82080:bg#4096:fg#512:\
        :ph#759668:bh#4096:fh#1024:
.
w
q
#
# newfs -v ra0h ra81

The output will be like this:

# newfs -v ra0h ra81
/etc/mkfs /dev/ra0h 759668 51 14 4096 1024 16 10 60
Warning: 28 sector(s) in last cylinder unallocated
/dev/ra0h:      759668 sectors in 1064 cylinders of 14 tracks, 51 sectors
        389.0Mb in 67 cyl groups (16 c/g, 5.85Mb/g, 2048 i/g)
super-block backups (for fsck -b#) at:
 32, 11512, 22992, 34472, 45952, 57432, 68912, 80392, 91872, 103352,
 114832, 126312, 137792, 149272, 160752, 172232, 182816, 194296, 205776, 217256,
 228736, 240216, 251696, 263176, 274656, 286136, 297616, 309096, 320576, 332056,
 343536, 355016, 365600, 377080, 388560, 400040, 411520, 423000, 434480, 445960,
 457440, 468920, 480400, 491880, 503360, 514840, 526320, 537800, 548384, 559864,
 571344, 582824, 594304, 605784, 617264, 628744, 640224, 651704, 663184, 674664,
 686144, 697624, 709104, 720584, 731168, 742648, 754128,
WRITE THESE NUMBERS DOWN!!!
fsck depends on them to recover this file system.
#

Restoring the usr slice

The disk's /usr slice will not have been formatted. We can now go ahead and mount it, and restore the /usr files. Then we unmount the slice, and run fsck to make sure everything is ok.

# mount /dev/ra0h /usr
# cd /usr
# mkdir sys
# cd sys
# mt rew
# mt fsf 3
# tar xpbf 20 /dev/rmt12
# cd ..
# mt fsf
# tar xpbf 20 /dev/rmt12
# cd /
# chmod 755 / /usr /usr/sys
# rm -rf sys
# ln -s /usr/sys sys
# umount /dev/ra0h
# fsck /dev/rra0h

Likewise, the output should be similar to this:

# chmod 755 / /usr /usr/sys
# rm -rf sys
# ln -s /usr/sys sys
# umount /dev/ra0h
# fsck /dev/rra0h
** /dev/rra0h
** Last Mounted on /usr
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
3070 files, 22774 used, 339086 free (190 frags, 84724 blocks)
#

Configuring the fstab

Now we just need to create the fstab, format the 'home' slice, and then we can reboot the emulator into multiuser mode. Enter in the following commands:

# cd /etc
# cp fstab.ra81 fstab
# newfs ra0g ra81
# sync
# sync
# sync
# reboot

And the expected output is as follows:

monet# cd /etc
monet# cp fstab.ra81 fstab
monet# sync
monet# sync
monet# sync
monet# reboot
syncing disks... done

Reboot request failed, PC: 800200DC (ADDL2 #8,SP)
sim> q
Goodbye

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.

% vax780 boot.ini

VAX 11/780 simulator V4.0-0 Beta        git commit id: 7ed68aed
loading ra(0,0)boot
Boot
: ra(0,0)vmunix
215688+63964+69764 start 0xf98
4.1c BSD UNIX #1: Sun Mar 27 14:48:45 PST 1983
real mem  = 8384512
avail mem = 7036928
using 148 buffers containing 838656 bytes of memory
mcr0 at tr1
mcr1 at tr2
uba0 at tr3
hk0 at uba0 csr 177440 vec 210, ipl 15
rk0 at hk0 slave 0
rk1 at hk0 slave 1
uda0 at uba0 csr 172150 vec 774, ipl 15
ra0 at uda0 slave 0
ra1 at uda0 slave 1
zs0 at uba0 csr 172520 vec 224, ipl 15
ts0 at zs0 slave 0
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 on ra0
WARNING: should run interleaved swap with >= 2Mb
Automatic reboot in progress...
Fri Aug  5 16:21:49 PDT 1983
/dev/rra0a: 286 files, 3340 used, 4089 free (17 frags, 509 blocks)
/dev/rra0h: 3070 files, 22774 used, 339086 free (190 frags, 84724 blocks)
/dev/rra0g: 2 files, 9 used, 77750 free (14 frags, 9717 blocks)
Fri Aug  5 16:21:53 PDT 1983
local daemons: telnetd ftpd tftpd syslog sendmail.
preserving editor files
clearing /tmp
standard daemons: update         Fri Aug 5 16:21:54 PDT 1983

 cron accounting berknet mail printer.
starting network: rshd rexecd rlogind rwhod routed.
Fri Aug  5 16:21:54 PDT 1983

ucbmonet login:


Now we can simply logon as root.

ucbmonet login: root
Last login: Thu Feb  3 00:25:49 on console
4.1c BSD UNIX #1: Sun Mar 27 14:48:45 PST 1983
Master source now lives here; freeze your 4.1c stuff now.
monet#

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.

Sadly there are bugs in how 4.1 BSD and how SIMH interact with the networking, and it is not reliable. As sad as it is to be an 'island' you can however setup the dz serial interface to allow more than one user.

Enabling remote users

You can 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 30023.

set dz lines=8
set dz 7b
att dz -m 30023

I would also recommend to windows users, either putty, or syncterm. The default telnet client sucks.