Difference between revisions of "Installing 4.1c BSD on SIMH"
(→Restoring the rootdump) |
(→Restoring the usr slice) |
||
Line 338: | Line 338: | ||
=== Restoring the usr slice === | === Restoring the usr slice === | ||
− | The disk's /usr slice will not have been formatted. We can | + | 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> |
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.
Contents
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.