My experience with installing Unix in the 80's was on a PDP-11, and the installation process is actually pretty interesting. I actually did it tonight (on an emulator), for the first time in years...
Unix V7 for the PDP-11 was distributed on tape. The tape contained several files, one after the other.
- The first file on the tape was a boot loader. It came in two parts. The first part was the boot block, and it knew just enough to read the second part of the bootloader from tape into memory, and then transfer control to it. The code for this was less than 512 bytes. The second part was bigger, it had stripped-down "standalone drivers" for a couple of different types of disk and tape, and it knew just enough about the Unix filesystem to be able to find files either on tape, or in the root directory of a filesystem on a hard drive, load them, and run them. The complete size of the boot loader (the total size of both parts) was about 8K bytes.
- The second file on the tape was a standalone
cat
program. When I say "standalone", I mean it ran directly on the bare metal (without any operating system at all); it was written with the same standalone device drivers and filesystem drivers as the boot loader. You could load and run this using the boot loader. When it started up, you tell it what device you want to read a file from, and what file to read. It reads it, prints it out, and then exits. That's all it does. This was of limited usefulness.
- The third file on the tape was just a text file that had a listing of what files were on the tape. Almost no one ever even looked at this. If you were using one of these distribution tapes, you pretty much already knew what was on it...
- The fourth file on the tape was a standalone
mkfs
program. This was built with the same library of standalone device drivers and filesystem drivers as the other standalone programs, and it too ran on the bare metal, without an operating system. You could load and run this using the boot loader, it would ask you what disk (and partition) you wanted to make a filesystem on, and how big the filesystem was supposed to be, and then it would write out the initial filesystem structure on the device and partition you told it to. Then it would exit.
- The fifth file on the tape was a standalone
restor
program (yes, much like the creat()
system call, restor
was spelled without an 'e'...). You could load and run this using the boot loader. Again, it ran on the bare metal, no operating system. It would ask for a tape file containing a filesystem dump, and a disk partition on which to restore it. And then, it would do that. Then it would exit.
- The sixth file on the tape was just a filesystem dump of the root filesystem.
- The seventh file on the tape was just a filesystem dump of the /usr filesystem.
And that's it - that's what you get.
So, if you had this tape, you had to get the process started somehow. Some PDP-11's had boot ROMs that knew how to load the first block off of a device (like a tape or disk) and jump it it. (And for this tape, the first block is less than 512 bytes of executable code, that knows how to load the rest of the boot loader.) The first PDP-11 that I used, however, did not have a bootstrap ROM. Every time we booted the machine, we had to enter in the boot code to load the first block off of a device and jump to it. By hand. In binary... Fortunately, it was pretty short (for example, the code to read the first block off of a TU16 or TE16 tape drive and jump to it was only 6 words, or 12 bytes), and we had the boot code written down on a piece of paper taped to the machine. Needless to say, we did our best to avoid needing to reboot the machine at all costs...
So, given all that ... the general process to install the system was:
- Use the boot ROM (or key in the boot code by hand...) to load the so-called "block-zero boot loader" into memory, and that is then used to load the rest of the boot loader.
- Use the boot loader to load the standalone
mkfs
program (the fourth file on the tape), to lay down the structure of the root filesystem on a hard disk partition.
- Use the boot loader to load the standalone
restor
program (the fifth file on the tape), to restore the filesystem dump of the root filesystem (the sixth file on the tape) on to your hard disk.
- Use the boot loader to load the Unix kernel out of a file in the root filesystem on the hard drive (that you just restored from tape), and transfer control to it. At this point, Unix is now running.
- Use the normal Unix
mkfs
and restor
commands to create the /usr filesystem on another partition of the hard disk, and restore the filesystem dump of the /usr filesystem to the partition you just prepared.
And then, you're pretty much done, except for installing the boot code in the first disk block on the hard disk (so either your boot ROM, or your hand-entered boot code, can run it whenever you reboot your system), a few items of system tuning, and setting some things up the way you want them to be.
Procedures like this were how many Unix distributions were installed, for a long time, in the 1970's and 1980's. Berkeley Unix (4.2BSD and later) provided a distribution tape with a very similar structure, and a very similar installation procedure.
If you want to see Charles Haley's and Dennis Ritchie's own instructions for installing V7 Unix on a PDP-11, you can find them here. I just followed these instructions tonight, and they work fine. ;-)