|
Unix V5 Preparations
The PDP Unix Preservation Society's I'd have loved to have installed Unix from a real tape using the huge TE16 tape drive I have waiting in storage. Unfortunately this is a Massbus drive and isn't supported by V5 at all (maybe if I find some big Massbus disks I'll try this approach with 2.9BSD). In any case, no tape images of V5 seem to be available. Instead, the OS is provided on a single RK05 disk image. Although the vanilla installation apparently ran on the 11/40, the version in the archives is (re)compiled for the 11/45 and therefore won't boot on the 11/35. Thankfully I discovered this before transfering the disk image to the PDP-11!
To recompile for the the 11/40, you'd need either a real 11/45 or (rather more
easy to come by) a PDP-11 simulator with 11/45 emulation. I used Bob Supnik's
SIMH First, I fired up the simulator, set the CPU type to 11/45 and attached the disk image. This can then be booted and you can log in to Unix as root (there's no password). PDP-11 simulator V3.8-0 sim> set cpu 11/45 Disabling XQ sim> at rk0 path/to/unix5.image sim> boot rk0 @unix login: root # The kernel stuff is located in /usr/sys and we're specifically interested in the conf subdirectory, in which you'll find the files required to configure the kernel. Fortunately I didn't need to recompile any of the device drivers in the other subdirectories. Note that there is no cd command in Unix V5! You'll need to use chdir to change your current directory. # chdir /usr/sys/conf # ls -l total 47 -rw-r--r-- 1 bin 513 Mar 21 12:07 conf.c -rw-r--r-- 1 bin 469 Nov 26 18:13 flrc -rw-r--r-- 1 bin 1218 Mar 21 12:07 low.s -rw-r--r-- 1 bin 11406 Mar 21 12:07 mch.s -rw-r--r-- 1 bin 7271 Nov 26 18:13 mkconf.c -rw-r--r-- 1 bin 376 Nov 26 18:13 tmrc # To configure the kernel for the 11/35 or 11/40, only one line need be edited in mch.s, changing the value for .45 from 1 to 0. If you're unfamiliar with the ed editor, the commands below will do the job. # ed mch.s 11406 4 .45 = 1 c .45 = 0 . w 11406 q # The mch.s file now needs to be assembled. The assembler outputs to a file named a.out, which will be overwritten by subsequent commands unless you rename it. # as mch.s # mv a.out mch.o Now we also need to configure which device drivers are to be included in the new kernel. There's a tool for this, called mkconf but it needs to be compiled first. You can then run mkconf and enter the abbreviated device names, followed by Control-D to finish. Below is an example - you may have more/less/other devices. The generated c.c file must then be compiled. # cc -s -n mkconf.c # mv a.out mkconf # ./mkconf rk tm tc ^D # cc -c c.c Assuming you didn't need to recompile any device drivers (which you'd need to re-link into the approriate library), all that's left is to assemble l.s and link the whole lot together into a kernel. The output is another a.out file which can be copied to the root directory. It's a good idea to name it differently to the running kernel so you can revert to the previous version should the new one not work. # as l.s # mv a.out l.o # ld -x l.o mch.o c.o ../lib1 ../lib2 # cp a.out /newunix # sync Now, the acid test: set the CPU type to 11/40 and see if the new kernel will boot. If so, you can replace the old kernel with the new one and save yourself some disk space and so that you only need type "unix" at the "@" prompt to boot. You can also get rid of the intermediate files under /usr/sys/conf. sim> set cpu 11/40 sim> boot rk0 @newunix login: root # mv newunix unix # sync # chdir /usr/sys/conf # rm a.out *.o c.c l.s mkconf
You can now use VTServer |
||||||||||||||||||||||||