Just to see what life was like in the dark ages of Linux distributions I ventured to install the earliest RedHat release I could get my hands on in a QEMU virtual machine.
It turns out that this is easier said than done. RedHat does have an archive of old versions (available at http://archive.download.redhat.com), but this is quite incomplete for the earliest version.
Fortunately there's an installable version of Mother's Day 1.1 on ibiblio (the 1.0 release is incomplete as well), which I used.
To make an installable version out of this it's recommened to make a local copy of the complete tree, which is easily done with rsync
:
$ rsync -rv --progress www.ibiblio.org::pub/historic-linux/distributions/redhat/mothers-day-1.1 .
This will create a local directory called mothers-day-1.1
containing all needed files, taking up about 360MB.
The installer will need to access the files via a CDROM or a NFS share. I opted for the CD method, so let's create a CD image:
$ chmod +x mothers-day-1.1/bin/*
$ mkisofs -J -R -o mothers-day-1.1.iso mothers-day-1.1
This makes all the files in mothers-day-1.1/bin
executable (this is important because the installer will mount the CD and expects to be able to execute these files for the installation) and creates an ISO image called mothers-day-1.1.iso
containing all files from the mothers-day-1.1
directory.
The installer will boot from a floppy disk. The release contains a whole bunch of these, for different hardware configurations (a kernel containing all supported configs would not have fitted on one floppy, so one has to choose the right one). For QEMU we'll need standard IDE support (easy) and AMD PCnet support for networking (also easy). The boot image supporting these is located in mothers-day-1.1/images/1211/boot0066.img
. These images were meant to be copied to a 1.44MB floppy disk, but the images are only 800k in size. If the images are passed to QEMU as they are QEMU will misinterpret the floppy size, causing the boot loader (LILO) to fail. So QEMU needs a little hint.
$ cp mothers-day-1.1/images/1211/boot0066.img boot.img
$ qemu-img resize boot.img 1440k
Image resized
$ cp mothers-day-1.1/images/rootdisk.img .
This copies the correct boot image to boot.img
and resizes it to the correct size for a 1.44MB floppy. For convinience I also copied the root image disk, too. This disk already has the correct size.
All that's missing now is a hard disk image to install to. This should not be too large, as the IDE driver in the kernel has some problems handling this. Fortunately this is the deep past, so 768MB will be plenty.
$ qemu-img create -f qcow2 disk1.img 768MB
Deep past or not, the installer needs memory, and an amazing (for the time) amount of it. 4MB will not be enough, 8MB will do fine. So, let's go.
$ qemu -M pc -m 8 -fda boot.img -drive file=disk1.img,if=ide,media=disk,cache=writeback \
-cdrom mothers-day-1.1.iso -net nic,model=pcnet -net user -boot a
(This adds the hard disk image in writeback cache mode. This is not recommended from a data security standpoint, as data written by the virtual machine is not immediately committed to host storage, but since this is just a for fun exercise and EXT2 formatting takes ages with the default cache strategy I'll pass on data security here)
At the LILO prompt, just press Enter to boot with default options. When prompted, change the floppy to the root disk (change floppy0 rootdisk.img
in the QEMU monitor mode) and press Enter to continue. The installer will come up (which is quite nice), prompting to change the floppy back to the boot floppy.
Select an Express install, say "No" to the default package list question, and select CD as the install media. The installer ought to find the CD image on /dev/hdc
, which is correct.
There will be no OS/2 on this install, so skip the reboot at the next question.
The hard disk will need to be partitioned. The installer should find a hard disk at /dev/hda
(if the installer just presents a list of partitioning programs without a disk device your hard disk image is too large). Partition the disk into one data partition (taking most of the space) and a small swap partition (16MB or so). The installer will ask to reboot if partitions were changed, this is not needed as there were no partitions on the disk to start with.
Confirm /dev/hda2
as a swap partition, and select /dev/hda1
for formatting.
On the package selection screen select whatever needed (or just everything, it does not really matter :) I'd recommend at least the Net Utils, everything X and Utils+. And there's Doom (but more on that later).
When asked for the type of video card select SVGA, and enter a hostname for the machine.
The installer will then format swap and file system, which might take a few seconds. Or even minutes. If you did not change the default caching strategy in the QEMU call above it will definitely take minutes. Or hours.
After the formatting the package installation phase begins. This will also take a few minutes, but at least it has a progress bar. The installer may complain about XF86_SVGA being already installed in the end, this can be ignored.
Then the boot kernel is copied from the boot floppy.
For the mouse, select microsoft-serial
, connected to /dev/ttyS0
.
The X configuration is a bit wonky (and this would not really change for the next decade or more). Decline autoprobe, select clgd5434
as the chipset (this isn't correct, but close enough). Enter 4096k of video memory, 10-100 for the clocks, and select the Generic Multisync
monitor. The configurator will tell you that it failed after that, but never mind.
Configure networking, entering a host name, domain name and fully qualified host name. Select 10.0.2.100
as the IP, 10.0.2.0
as the network, 255.255.255.0
as the netmask, 10.0.2.255
as the broadcast, 10.0.2.2
as the gateway and 10.0.2.3
as the DNS server (QEMU user mode networking is funny).
Select no modem, your keymap, local time and your time zone (the list is sorted upside down, for whatever reason).
Select to install LILO in /dev/hda
without specific parameters and without other operating systems.
Create a user account (if you want) and select a root password.
After that, the installation is finished. Select reboot.
The system will be unable to actually reboot, so stop QEMU after the installer has terminated and start it again:
$ qemu -M pc -m 8 -drive file=disk1.img,if=ide,media=disk -net nic,model=pcnet -net user -serial msmouse
This invocation is missing the floppy and CD images (they are not needed anymore) and adds a serial mouse.
At the boot prompt press Enter, and wait until the system has bootet to the login prompt (which will take all of a few seconds). Look around. If you're used to RedHat based systems (or Fedora) most things should look familiar.
Next up: getting X to actually work.