The tale of 3 kernels: BSD, Hurd, and Linux

Posted: April 11, 2013 in BSD, Linux, Open Source, Uncategorized
Tags: , , , ,

It was the best of times, it was the worst of times . . .  I never actually read the book “A Tale of Two Cities” by Charles Dickens, but a book covering these three kernels and how they interrelate would be fascinating.  A few years ago I heard of the Hurd, and I wanted to see what was up today. (Yes, I couldn’t resist that play on words.)  I then decided to see how BSD and its derivatives related to GNU/Linux.  Here’s the tale . . .

It all started with Bell Lab’s product called UNIX, which stands for Uniplexed Information and Computing Service.  The unique trait with UNIX is that you got the source code for the OS as well as other things.  That way you could modify it and recompile it if you wanted.  The compiler for C was the new thing because for the first time, source code was portable because you just needed the pcode to assembler part of the compiler in order to take source code written in C to compile for your machine.  A group from the University of California, at Berkeley got really aggressive and heavily modified and ‘fixed’ some issues they saw with UNIX.  In fact, their fixes and adjustments to UNIX were so popular, they made it available.  Computer Scientists really studied the code and the methodology behind this new and powerful system.  UNIX was made available to Universities at a lower cost so that people would be hitting the market trained to operate and maintain the UNIX system.

About the same time, a new computer innovation hit, the 16 bit home computer.  Computer Scientists wondered if they could bring the UNIX system to the PC.  There were many in Berkeley, who tried this kind of project.  They called themselves Berkeley Software Distribution (BSD).  Many used the letters BSD (Berkeley Software Distribution) in their project’s name.  The Berkeley modifications to UNIX had the letters BSD associated with it.  Soon AT&T sued the Berkeley group because they were worried about their intellectual property rights and wanted to make sure Berkeley wasn’t taking code that was constructed by AT&T and using for their own purposes.  This lawsuit put a hold on everything that had BSD in its name.

A man by the name of Richard Stallman announced on Usenet the founding of a project he called GNU.  It stood for Gnu is Not Unix.  Its goal was to make a version of Unix, following Open Source standards.  It was, as I understand it, to be in the spirit of Unix, but not a dedicated port of Unix.

What is a kernel? As I currently understand it, it is the program that interfaces with the physical hardware and the applications that a user wants to run.  BASH, Firefox, apt-get, and almost all commands from the terminal, as well as your desktop apps are just that apps that the kernel runs in coordination with other things.  All operating systems need a kernel.  Kernels are designed with a certain philosophy in mind.  One type is a monolithic structure where everything is together.  Another type is a distributed kernel where the different tasks are run concurrently and they communicate with each other.  This, from my understanding, is called a micro kernel structure.  Unix, from Bell Labs, has a micro kernel structure.   Back to our story . . .

Stallman wanted a micro kernel structure due to some perceived advantages.  Just before the GNU project was announced.  One of the BSD projects, which became known as FreeBSD was coming along nicely.  The FreeBSD OS is a ‘port’ of Unix without ripping off AT&T’s intellectual’s rights.  FreeBSD is developed and maintained as an entity.  Stallman’s GNU project was to be a community effort.  This means there would be many maintainers and developers.  This is one of the BIG differences between GNU and FreeBSD projects.  Stallman was tempted to choose the BSD kernel, but due to the lawsuit, he stayed clear and started the Hurd kernel project which would be the center of the GNU operating system he proposed.   HURD stands for HIRD of Unix-Replacing Daemons and HIRD stands for HURD of Interfaces Representing Depth.

Somewhere in Finland, a young man who had been captivated by assembly programming on his VIC-20 computer, began a quest for this new computer, a PC running an Intel 386 processor.  He also had discovered a work called Minix.  This is another work where the UNIX foundation and design was ported to a PC.  Using an open standard, he began work on a kernel, not because of Stallman’s announcement  as I understand, but because it was in his nature to write a kernel because he was enamored with assembly programming.  His announcement totally stunned the world and drew the focus off of the HURD project.

Having a working kernel, even though it is monolithic in nature, was better than no kernel, and the dream of getting the GNU system running was very intoxicating.  So intoxicating that the GNU project became known as Linux.  Now this name change has been disturbing to Mr. Stallman.  That is why I refer to it as GNU/Linux rather than Linux.  If HURD gets to a workable state, which I understand it is to an extent, then the releases are called GNU/HURD.  Debian Project is one of the entities working on the HURD kernel.  In a very short time, Linus’ kernel was turned into a working kernel and the GNU/Linux operating system rose to life.  The HURD project has suffered from a lack of support due to most people not really caring about the architecture of the kernel in their computer’s operating system.  I believe very few people even care about such heady and intense considerations.  I also don’t think most people care about the Open Source movement or the Free Software Foundation and the philosophy behind them.  They just like the free OS and apps.

I wonder what would have happened if Mr. Stallman had chosen the BSD kernel?  What would be different today?  Would we even know about Linus Torvalds?  What do you think?  Give me some feedback.

Advertisements
Comments
  1. tPenguinLTG says:

    I remember reading somewhere that had Hurd had been finished, Torvalds said that he probably wouldn’t have made the Linux kernel. I expect the same would have applied had GNU gone with the BSD kernel.
    Stallman has also said that Hurd is no longer a priority because there already exists a free kernel, namely Linux. It’ll be interesting to see if it’ll actually get “finished”. Had Stallman chosen the BSD kernel, though, I don’t think the GNU system would have been as popular as Linux is now.

    • I don’t believe it is done. See this link https://www.debian.org/ports/hurd/ . Gnu/Linux would really be different with the BSD kernel. I think Hurd was too complex of an idea to really work. After my little research, it appears most of the basic styles of kernel were/or have been written and they used the newest ideas for Hurd. The minix project had a great kernel and they wanted to avoid the architecture it used. So that is why they settled on the architecture they did.

      • tPenguinLTG says:

        Hurd is far from done; it’s not even stable enough to use “in production”. Plus, being free software means that, almost by definition, it is never finished (although this is usually more applied to open source).
        It’s interesting to note that the three major kernels in use today (Windows NT, XNU in Darwin/iOS/Mac OS X, and Linux) are all monolithic or hybrid (which Torvalds says are monolithic anyway). There was also a heated debate between Torvalds and Andrew Tanenbaum, the creator of MINIX, about whether the microkernel or the monolithic kernel is better, with Tanenbaum siding for the former and Torvalds with the latter.
        I don’t know how it all ties in, but GNU Hurd and Apple’s XNU kernel are apparently both based on the Mach kernel.

      • Mr. Torvalds is overly passionate about his kernel. I am glad we have his work, but there are other options. Had the BSD group not been sued by UNIX at the time, BSD might have been the kernel.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s