# Linux Retrospective by Seth Kenlon A unique trait of open source is that it's never truly EOL (End of Life). The disc images mostly just remain online, and their licenses don't expire, so it's relatively simple to go back and install an old version of Linux in a virtual machine and get a very precise picture of what progress Linux has made over the years. I wanted to look back at Linux over the years for that purpose: to see how Linux itself has developed. I was surprised to find that not only did I learn a lot about Linux's development, but also about computing in general. It's easy to fall into a short-term world view, where computers begin with the x86 architecture, the loudest two mass-market operating systems, and the Internet, but there's a lot to the world of computing, and looking back helps comprehend the sheer depth of what exists now and what may exist in the future. We begin our journey with Slackware 1.01, posted to `comp.os.linux.announce` well over 20 years. ## Slackware 1.01 (1993) > From: Patrick J. Volkerding (volkerdi@mhd1.moorhead.msus.edu) > Subject: [ANNOUNCE] Slackware Linux 1.01 > Newsgroups: comp.os.linux.announce > Date: 1993-08-04 08:33:56 PST > > The Slackware Linux distribution (v. 1.01) is now available for > anonymous FTP. This is a complete installation system designed for > 386/486 systems with a 3.5" boot floppy. 486 optimizations are now > used for most of the included software. Booting Slackware 1.01 is surprisingly easy, with a few caveats. First of all, there was no PCI interface back in 1993, so emulating PCI hardware in a virtual machine is pointless. Emulating ISA hardware creates a functioning virtual machine. Another sobering realisation: August 1993 was two months prior to DHCP! Since 1985, there was BOOTP, a precursor of DHCP, but the wonderfully convenient and simplistic DHCP didn't exist until RFC 1531 and 1541, two months after Slackware 1.01's release. In plain English, this means that acquiring an address on even your emulated network can be tricky. Luckily, since there's no web browser, as such, it won't affect you all that much. Assuming you do get an address, though, you can either use `telnet` to browse port 80, although modern HTTP and HTML isn't exactly handled smoothly by 1993's `telnet`. FTP works as expected, however, and for fun I logged in to a Slackware mirror to browse what updates had occurred in the latest Slackware-current. ![Slackware 1.01](images/slack1.png) In fact, many things in 1993's version of Linux works just as you'd expect. The obvious stuff isn't surprising; all the basic commands like `ls` and `cd` work, all the basic tools (`gawk`, `vi` and of course Volkerding's favourite `elvis`, `cut`, `diff` `perl`, and so on) are present and accounted for, but some of the little things surprised me. For instance, BASH courteously asks if you *really* want all 500 files in a location to be listed when you use tab completion. And tools to inspect compressed files (like `zless` and `zmore` and `zcat`) already existed. In more ways than I'd expected, the system feels surprisingly modern. What's missing is any notion of package management. All installs and uninstalls are entirely manual. ### Command to Launch I used the Slackware ISO distributed by Qemu during their Advent Calendar image giveaway. The image provided Slackware 1.01 pre-installed, so it's trivial to get started. The command: $ qemu-kvm -m 16M -drive if=ide,format=qcow2,file=slackware.qcow2 \ -netdev user,id=slirp -device ne2k_isa,netdev=slirp \ -serial stdio -redir tcp:22122::22 ## Debian 0.91 (1994) A year later, Debian 0.91 was released by Ian Murdock, an amazing force in open source UNIX who we sadly lost last year around this time. I met Ian once at the Open Solaris booth at Ohio Linux Fest in 2007 or 2008, and his passion for intelligent and open UNIX was contagious. The bootdisk (`bootdsk.gz`) for Debian 0.91 boots to a simple shell, with clear instructions on the steps you're meant to take next. ### Command to Launch I used the floppy disk images contained in https://ibiblio.org/pub/historic-linux/distributions/debian-0.91/debian-0.91/dist/, posted in 1994. The commands to boot: $ gunzip bootdsk.gz basedsk1.gz basedsk2.gz $ qemu-system-i386 -M pc -m 64 -boot order=ac,menu=on \ -drive file=bootdisk,if=floppy,format=raw \ -drive file=debian.raw,if=ide,format=raw \ -device ne2k_isa,netdev=slirp \ -serial msmouse -vga std \ -redir tcp:22122::22 \ -netdev user,id=slirp The install process is surprisingly smooth. It works off of a menu system with 7 steps from partitioning a hard drive and writing the ext2 filesystem to it all the way through to copying the `basedsk` images. This provided a minimal Debian install with many of the familiar conventions any modern Linux user would expect from their OS. Like Slackware 1.01 before it, Debian 0.91 makes no effort to boot to a graphical environment. Then again, in 1994 even the big, corporate operating systems weren't 100% sold on the idea of a GUI by default. A few things from my virtual machine were recognised by this early Debian release, but the (emulated) network card, for instance, required entries into configuration files, and generally I felt very much on my own in setting up my machine. In an odd way, it was comforting; it reminded me of my early Linux days, learning how to install a WiFi driver and join a network from a shell. In other words, modern Linux is by comparison more convenient in some very noticeable ways, but that's not to say that *old* Linux is anywhere near as daunting as I'd imagined. ### Packages Debian is now famous for its package management system, but there are mere hints of that in this early release. The `dpkg` command exists, but it's an interactive menu-based system; a sort of clunky `aptitude`, with several layers of menu selections and, unsurprisingly, a fraction of available packages. Even so, you can sense the convenience factor in the design concept. You download three floppy images and end up with a bootable system, and then use a simple text menu to install more goodies. I sincerely see why Debian made a splash. ## Jurix/S.u.S.E. (1996) In the mid 90s, a German company called Software und System Entwicklung translated Slackware to German and marketed it as S.u.S.E. Linux 1.0. In 1996, they started their own custom distribution of Linux, basing their work upon Jurix Linux by Florian La Roche. ![Jurix](images/jurix_install.png) Jurix shipped with kernel 1.3.61, with binary `.tgz` packages, organised into directories resembling the structure of Slackware's install packages. The installer is similar to Slackware's installer. ![Jurix](images/jurix_install2.png) ### Command to Launch The commands to boot Jurix in Qemu: $ qemu-system-i386 -M pc -m 1024 -boot order=ac,menu=on \ -drive file=./jurix/install/install,if=floppy,format=raw \ -drive file=jurix.img,if=ide \ -drive file=pkg.raw,if=ide,format=raw \ -device ne2k_isa,netdev=slirp \ -serial msmouse -vga std \ -redir tcp:22122::22 \ -netdev user,id=slirp After juggling the prep for virtualising Jurix (building a raw image to hold all the installable packages, sorting out emulating the mouse, and so on), installation was sublimely simple. There were three steps in the installer, and mostly all it did was format your target drive (without confirmation!) and then untar the packages from your sources drive to your target drive. ### Running Jurix Without specifically looking for the earliest instance, Jurix was the first Linux distribution I found that really "felt" like it intended the user to definitely use a GUI environment. [XFree86](http://www.xfree86.org/) is installed by default, so if you didn't intend to use it, you had to opt out. Back in 1996, something being installed on Linux didn't necessarily mean it was *configured*. I got to fight with `Xorg.conf` a little back when I switched to Linux with Slackware 12.0, but mostly during my Linux lifetime, `X` has sorted itself out for me. I got to remedy that life of luxury with Jurix. In Jurix, the config file of interest was `/usr/lib/X11/XF86Config`. An example file was provided, and that got me 90% of the way to a GUI, but fine-tuning took me a whole Saturday. In the end, I didn't get a GUI going, because after all the `vsync` and `hsync` and resolution settings and `ramdac` colourmap overrides, it turned out that the I, myself, or the Jurix installer, had somehow failed to install kernel modules for mouses, and as far as I can tell, there was no override to launch X without a working mouse in 1996. I had to move on with my exploration of historic Linux, so I gave up in the interest of time. Installing new packages on Jurix was simple; find a `.tgz` on your sources drive, and run a routine `tar` command: $ su -c 'tar xzvf foo.tgz -C /' The package get unzipped and unarchived to the root partition, and ready to use. I did this with several packages I hadn't installed to begin with, and found it easy, fast, and reliable. Like the previous attempts, Jurix turned out to be more familiar than foreign. There were no surprises or unexpected quirks, and it's easy to see why it became the basis for S.u.S.E. ## SUSE 5.1 (1998) There were only two years between SuSE 1.0 and SuSE 5.1; in the interim was SuSE 4.2 (a reference to the **Hitchhiker's Guide to the Galaxy**). With 5.1, the YaST install and system configuration tool came to the forefront, and a GUI environment was, while not a default, obviously an expectation. ![FVWM running on SuSE 5.1](images/suse5fvwm.png) ### Command to Launch I installed SuSE 5.1 from a InfoMagic CD ROM purchased from a software store in Maryland in 1998. The CD set included 6 discs: Slackware 3.4, Red Hat 5.0 and Red Hat Powertools, SuSE, and two discs full of UNIX software from the SunSite servers. $ qemu-system-i386 -M pc-0.10 -m 64 -boot order=ad,menu=on \ -drive file=floppy.raw,if=floppy,format=raw \ -cdrom /dev/sr0 -drive file=suse5.raw,if=ide,format=raw \ -vga cirrus -serial msmouse The install process was relatively simple, albeit a little convoluted compared to Slackware, Debian, and Jurix before it. YaST volleyed configuration files and settings between a floppy disk and the boot CD ROM, requiring several reboots and a few re-starts as I tried to understand the sequence expected from me. Once I'd failed the process twice (partly my fault, for not having an emulated floppy on hand the first time), I got used to the way YaST worked, and the third time was smooth and very much a hint at the Linux user experience to come in later years. ### Running SuSE 5.1 A GUI environment was my main target for SuSE 5.1. The configuration process was familiar, with a few very nice graphical tools (including a very good `XF86Setup` frontend) to help test and debug mouse and monitor problems. It took me under an hour to get a GUI up and running, and most of the delay wasn't caused by SuSE but by my own research on what resolutions and colour depths Qemu's virtualised video card could handle. Included desktops were `fvwm`, `fvwm2`, and `ctwm`. I used `fvwm`, and aside from a false start due to setting the wrong resolution in my configuration file, it worked as expected. I even discovered `tkDesk`, a dock and file manager combo pack that is surprisingly similar to Ubuntu's `Unity` launcher bar. The experience was, over all, very pleasant, and in terms of getting a successful desktop up and running, SuSE 5.1 was a rousing success. ## Red Hat 6.0 (1999) The next install disc I happened to have lying around was Red Hat 6.0. That's not RHEL 6.0; just Red Hat 6.0. This was a desktop distribution sold in stores. The disc I used was purchased in June 1999. ### Launch Command The Red Hat 6.0 set contained one disc, requiring Pentium III or better, 500MB hard drive, and 16MB RAM. To emulate this: $ qemu-system-i386 -M pc-0.10 -m 512 -boot order=ad,menu=on \ -drive file=redhat6.raw,if=ide,format=raw \ -serial msmouse -netdev user,id=slirp \ -vga cirrus -cdrom /dev/sr0 ### Installing The installation was very simple and fully guided. You never have to leave the safety of the install process, whether choosing what packages to install (grouped together in **Workstation**, **Server**, and **Custom** groups), partitioning a drive, or kicking off the install. And the install is [Fedora](http://fedoraproject.org)-fast. If you're stepping through it using just the obvious defaults, you're installing the OS before you know it. I found it far simpler than SuSE 5.1's YaST, and less demanding than the earlier Linux distributions that required a mix of shell commands to partition and format along with menu-driven package installs. ### Using Red Hat 6.0 The usual initial hurdle, configuring X, was relatively simple this time around, because I imported the XF86Config file I'd created for SuSE 5.1 and obviously the virtual hardware of Qemu had not changed. Red Hat 6 includes a `xf86config` (an application, not the file bearing the same name except with capitals) to step you through X configuration, although it strangely allowed some mouse emulation options that X later claimed were invalid, and regardless of the configuration script, getting X correct was still clearly not a simple task. ![Xdm login manager.](images/redhat6_xdm.png) The desktop bundled with Red Hat 6 was, as it still is, Gnome, although the window manager was a very early Enlightenment (which also provided the main sound daemon). `Xdm` and `gdm` were both provided as login managers so that normal users could log in without having the permission to start or kill X itself (particularly important on multi-user systems). All the usual UNIX applications are present and accounted for, and as familiar as ever. Certain staple applications are still not yet present, for instance `gedit` doesn't exist, there's no grand unified office application, and no package manager to speak of. `GnoRPM`, a GUI interface for RPM installation, review, and removal, was the closest to a `yum` or `PackageKit` experience it had, and `gnotepad+` is the GUI text editor (Emacs notwithstanding, obviously). Over all, the system is intuitive. Unlike later implementations of Gnome, this early version featured a panel at the bottom of the screen, with an application menu and launcher icons and virtual desktop control in a central location. The two have diverged significantly now, but early Gnome was not unlike KDE. Red Hat 6 was a strong entry for Linux, which was obviously moving seriously toward being a proper desktop OS. ## Mandrake 8.0 Mandrake Linux is the beginning of what continues today as Mageia Linux. It was a well-respected Linux distribution that provided paid support options. I'd never used Mandrake, proper, but had heard good things about it. It has been referred to as "the Ubuntu of its time", and although I've used Mandriva and Mageia as the main OS for a computer in the past, I was eager to try the one that started it all. Mandrake 8.0 was released in 2001, so it would have been competing against, for instance, Apple OS 9.2 and Windows ME. ### Command to Launch I fell back on fairly old emulated tech to be safe: $ qemu-system-i386 -M pc-0.10 -m 2048 \ -boot order=ad,menu=on \ -drive file=mandrake8.qcow2 -usb \ -net nic,model=rtl8139 -netdev user,id=slirp \ -vga cirrus -cdrom mandrake-8.0-i386.iso ### Install Mandrake's install process was alarmingly good. I thought the Red Hat installation process had been nice, but Mandrake's was astonishing. It was friendly, it gave the user a chance to test configurations before continuing, it was easy, and fast, and it worked almost like magic. ![Mandrake 8.0 installer](images/mandrake8install.png) The install took maybe 15 minutes, and the next thing I knew, I'd rebooted into a graphical desktop. ### Using Mandrake 8.0 Both Gnome, KDE, and a collection of "Other Desktops" are installed by default, but I booted to KDE. By this point, the K Desktop had developed its own traditions, it had nailed down its look and feel, and had a very polished interface. Mandrake clearly spent time making the desktop ready for its users, though, by carefully placing important shortcuts on the desktop so that users knew where to find support and reference material. Using the Mandrake desktop is a lot like using any given desktop of the time, actually. I was a little surprised at just how similar the experience was. I feel certain that if I'd somehow stumbled into Mandrake Linux at this time, it actually wouldn't have been beyond my ability, even as a young and not very technical user. The interfaces are intuitive, the documentation helpful, and the package management quite natural, for a time when it still wasn't yet the mental default for people to just go to a website and download an installer for whatever software they wanted. ![Mandrake: a turning point in Linux](images/mandrake8.png) The impression, overall, when walking away from Mandrake was that it must have been a real turning point for Linux. It was the first desktop Linux experience that felt like a *product* was being delivered to the user. Justly so, since many users would have paid for support from Mandrake. It is indicative, too, of advances being made in Linux in general, though. Inroads were being made into auto-detection of hardware, USB was making input devices trivial to configure, and even X configuration was something that could be tested and re-tested until it was gotten right *before* the config files are written and the install is finalised. This is was a strong release for Mandrake, and a great representation of Linux. Now if I could just go back 15 years and tell the younger me that it had existed... ## Fedora 1 The "Red Hat" distribution, as such, became Red Hat Enterprise Linux (RHEL), which was widely reported as the discontinuation of $0 Red Hat. Consequently, in 2003, the new **Fedora Core** distribution was released. ### Command to Launch Nothing particularly special is required to boot the old Fedora Core 1 disc. $ qemu-system-i386 -M pc -m 2048 -boot order=ac,menu=on \ -drive file=mandrake8.qcow2 -usb \ -net nic,model='rtl8139' -netdev user,id=slirp \ -vga cirrus -cdrom fedora-1-i386-cd1.iso ### Installation Installing Fedora Core is simple and familiar; it uses the same installer as Fedora and Red Hat for the next 9 years. It's a graphical interface that's easy to use and easy to understand. ![Anaconda GUI](images/fedora1anaconda.png) ### Using Fedora Core 1 The Fedora Core experience is largely indistinguishable from Red Hat 6 or 7. The desktop is polished, there are all the signature configuration helper applications, and the presentation is clean and professional. ![Blue Fedora, Red Hat](images/fedora1.png) A **Start Here** icon on the desktop guides the user toward three locations: an Applications folder, the Preferences panel, and System Settings. A red hat icon marks the applications menu, and the lower Gnome panel holds all the latest Linux application launchers, including Open Office and the Mozilla browser. ## The Future By the early 2003, it's clear that Linux has well and truly hit its stride. The desktop is more polished than ever, the applications available want for nothing, the installation is easier and more efficient than other operating systems. In fact, from the early 2000s onward, the relationship between the user and the system is firmly established and remains basically unchanged even today. There are some changes, and of course several updates and improvements and a staggering number of innovation. Project names come and go; Mandrake became Mandriva and then Mageia, Fedora Core became Fedora, Ubuntu popped up from Debian and has made "Linux" a household term, and Valve has made SteamOS the official basis for its gaming platform, and Slackware quietly continues to this day! Whether you're new to Linux, or whether you're such an old hand that most of these screenshots have been more biographical than historical, it's good to be able to look back at how one of the largest open source projects in the world has developed. More importantly, it's exciting to think of where it's headed and how we can all be a part of that, starting now, and for years to come.