Installing UNIX Sixth Edition
There is a Setting up UNIX - Sixth Edition document, but it is mostly a checklist of what to do to install UNIX Sixth Edition on a PDP-11 (one of the models supporting memory management); it does not provide any technical detail on what is actually happening.
UNIX Sixth Edition (often called UNIX V6) was normally installed from a tape; it was possible to install UNIX on a machine without a tape drive, by copying disk packs with UNIX on them, but this was not Bell Laboratories' usual distribution method. Thus, installing UNIX V6 usually required a machine with a tape drive, and one or more disk drives.
The supported tape drives were the TU10, on a TM11 UNIBUS controller, and the TU16, on a TM02 MASSBUS controller. The supported disk drives were the RK05, on an RK11 UNIBUS controller, the RP03 on an RP11 UNIBUS controller, and the RP04, with an internal controller which connected to a MASSBUS.
The installation process for V6 seems superficially to be much like that for V7, in that a tape is used, which contained a number of small stand-alone programs, followed by the file-systems, but the similarity is purely superficial; the details of the process are wholly different.
The first stage is a tape bootstrap (loaded from block 0, or block 1, depending on the tape drive/controller on the system). That is then used to load an intermediate stage, a tape to disk copier (named 'xxyy', where 'xx' is "tm" or "ht", and 'yy' is "rk", "rp" or "hp", as appropriate to the machine's hardware configuration).
That program is used to copy 3 complete file system images from the tape, to disk pack(s); it is also used to install an appropriate disk bootstrap in block 0 of the root disk drive. Once that has all been done, it is possible to boot UNIX from disk.
It is not possible to boot V6 Unix directly from a V6 distribution tape (as one can with V7); all one can do is copy the disk images from the tape to the disk, and then boot from the disk.
Installation tape contents
The V6 distribution tape contains a large number of 512-byte records; the first 101 512-byte tape blocks contain a number of small programs, including tape and disk bootstraps, and programs to copy the tape contents to disk.
- Block 0 on tape - mboot (TM11 tape bootstrap)
- Block 1 on tape - hboot (TM02 tape bootstrap)
- Block 2-24 - a tp-format directory section for the following section
- Block 25-xx - stand-alone programs, including tape->disk copy programs
- Block 98 on tape - hpuboot (RP04 disk bootstrap)
- Block 99 on tape - rpuboot (RP03 disk bootstrap)
- Block 100 on tape - rkuboot (RK05 disk bootstrap)
After that, blocks 101-4100 are an image of an RK05 pack containing a UNIX root partition, which contains everything needed to allow UNIX to run: all the commands, and the source for the operating system (to allow reconfiguration of the OS to match the system's hardware); blocks 4101-8100 are an image of an RK05 pack which contains source for all the commands; and blocks 8101-12100 are an RK05 pack image which contains all the documentation.
The copying programs (6 of them, one for each possible tape/disk combination) are stored in the block "25-xx" area, along with a number of other miscellanous small stand-alone programs.
The tp-format directory situation is slightly confused; the spec for tp-format tapes says that the directory occupies blocks 1-24 - but the installation instructions clearly indicate that block 1 contains a TM02 tape bootstrap; inspection of a V6 installation tape confirms that. The tape directory is indeed only 23 blocks long - the 24th block (block 25 on the tape) contains a program.
Even more confusing, the first-stage tape bootstrap actually reads block 1 when it reads the tape directory. Presumably, the 'directory entries' in that first block, with file-names which are random binary (from the tape bootstrap) don't match any actual file names, and are therefore ignored.
The first stage tape bootstrap is "tpboot.s"; this is assembled with either "tm.s" or "ht.s" to produce the first-stage bootstrap that goes in blocks 0 and 1 of the tape. It takes as input a file-name, for installing UNIX, normally 'xxyy' as above, entered at the console. It then reads the tp-format directory off the tape, and looks for that file-name in it, and if found, loads and starts it.
"mcopy.s" is the tape copier program, assembled with either "tm.s" or "ht.s", and one of "rk.s", "rp.s" and "hp.s", to produce the 'xxyy' files above.
"fsboot.s" is the disk bootstrap, assembled with "rk.s", "rp.s" or "hp.s" to produce the various disk bootstraps.
mcopy.s uses R5 (which contains a pointer to the console print/input routines), but does not set it up (or contain the console routines); it is set up by tpboot.s, which will have run previously (to load the appropriate disk-controller-specific version of mcopy off the tape).