Twenty Years of Linux


Twenty years ago, almost to the day, my friend Jamie showed up with four floppy disks. Two of them were a boot/root pair for 386BSD (none of FreeBSD, NetBSD, or OpenBSD existed yet) and two of them were for Linux 0.96c. It’s pretty hard to overstate how cool and amazing it was to see protected-mode multitasking on a PC. This was an old 20 MHz 386 that my parents had given me when they bought a 486; I mostly used it for Pascal programming, dialing into the campus mainframe to read Usenet, and playing games—Wing Commander, mainly, I think, since Doom was still a ways off.

Both operating systems were an obvious improvement over Minix, which I had hacked in OS class. Minix had pretty source code but, lacking memory protection and such, it wasn’t very useful. I wasn’t sure which of Linux or 386BSD to start using, but Jamie had been reading alt.os.linux for a few weeks and was impressed by the excitement it was generating, so I decided to go with Linux. The boot/root system was very limited—not many utilities could be fit onto the root floppy. However, a handful of rudimentary Linux distributions already existed at this point so it wasn’t too hard to get it installed onto my machine’s hard disk. Even years after this initial installation my friends and I could be found walking around the CS building carrying shoeboxes full of floppies.

This post doesn’t have a point, I just thought it was kind of weird that (since I turn 40 next week) I’ve had a Linux machine on my desk for pretty much exactly half of my life.


5 responses to “Twenty Years of Linux”

  1. For your amusement, here is a taste of what I was doing twenty years ago.

    From eeide Mon Jul 27 15:25:34 1992
    Status: RO
    Received: by asylum.cs.utah.edu (5.65/utah-2.15-leaf)
    id AA21807; Mon, 27 Jul 92 15:25:30 -0600
    Message-Id:
    From: eeide (Eric Eide)
    To: kessler@cons
    Cc: eeide, stoller@morgan
    Subject: New PCL Problem
    Date: Mon, 27 Jul 92 15:25:30 -0600

    I found the new PCL problem. The BLOCK patch causes the following function to
    (apparently) compile incorrectly:

    (defun extract-declarations (body &optional environment)
    (declare (values documentation declarations body))
    (let (documentation declarations form)
    (when (and (stringp (car body))
    (cdr body))
    (setq documentation (pop body)))
    (block outer
    (loop
    (when (null body) (return-from outer nil))
    (setq form (car body))
    (when (block inner
    (loop (cond ((not (listp form))
    (return-from outer nil))
    ((eq (car form) ‘declare)
    (return-from inner ‘t))
    (t
    (multiple-value-bind (newform macrop)
    (macroexpand-1 form environment)
    (if (or (not (eq newform form)) macrop)
    (setq form newform)
    (return-from outer nil)))))))
    (pop body)
    (dolist (declaration (cdr form))
    (push declaration declarations)))))
    (values documentation
    (and declarations `((declare ,.(nreverse declarations))))
    body)))

    I’ve put this function and a sample invocation into the following files:

    /u/eeide/pcl-july-92/Bug2-file.l : the source and sample invocation.
    …/Bug2-file.b : compiled after loading the patch in
    “/u/eeide/block-patch.l”.

    When the function is compiled without the BLOCK patch, it seems to work fine.
    So I blame the patch — or at least, the patch exposes another bug :-).

    Thanks for looking into this. Happy hacking! Eric.

  2. Getting a Linux install was a pivotal day for me. It meant I could have the power of a Sun workstation right in my home.

    Poor Sun.

    I jumped in later than you, so my first version involved a shoebox, not a pair of disks. I borrowed the floppies on the condition that I give them back with Linux on them.

  3. Poor Sun indeed.

    Mark, I’ve used and been pretty happy with Ubuntu for the last 5 years. Before that: SUSE, RedHat, Slackware, SLS, and maybe one or two others.

  4. Eric, it’s great to see how much your quality of life has increased since then, in terms of decreased use of parentheses.