One of the most complex sides of free software is when people have to define things, give things a name or a short description. Think of the differences of Open Source and Free Software, or what an OS is, or even why some people call Linux as GNU Linux.

Giving a clearly definition seems to be tough, but tough enough is to understand what Free Software is. Free Software finds a “solid form” through various licenses. I remember as a student in university I had picked an assignment about Open Source Licenses, but after a week I changed my subject, as I discovered Licensing and Definitions in Free Software are quite Objective Opinions.

While it is hard to understand what Free Software is, is quite easy to realize the benefits of it. Software that are you free (as free as the licenses permit!), to use, study, modify, distribute or distribute modified versions.

Operating System or Kernel

I consider OS definition a very controversial subject. We know what Kernel is and what does, what Display Manager is and what does, what GNU Tools are and what do and when we assemble all those into “something” (call it a distro?) is what we (not all) mean as Operating System.

There is this Wiki’s GNU/Linux naming controversy article which is a good place to start if you want to read some “well known” people opinions about what OS is. For now I will re-print Emmanule Bassi (GNOME Dev) opinion what an OS is:

The Linux kernel is most definitely not the operating system. The entirety of the stack, from the kernel to the user-facing shell, to the API that allows creating new applications, is the OS.

This is what GNU Hurd OS is, a collection of various pieces of software that all together assembling a completely Free Operating System. The most interesting part is probably its kernel.

GNU Mach kernel

GNU (Mach) is a recursive acronym for “GNU’s Not Unix!”, but you can also call it a recursive acronym for “GNU’s Not linUx!”. GNU Mach ships GNU Mach Kernel (an implementation of the Mach microkernel), not Unix, nor Linux.

Mach is a Unix -largely-compatible kernel and unlikely to Linux Monolithic Kernels, it uses Client-Server architecture and in general it is sharing architectural concepts and mechanisms with Microkernel designs.

Monolithics vs Microkernels

This is just a quick reference about the main difference between Mono and Micro Kernels, and is really really better to Google around to learn more!

In a monolithic arch, all kernel services and processes exist and are executed into a single address space, known as Kernel Space. You can think it as a single process that lies on Kernel Space and runs all Kernel Extensions and most of devices drivers. Applications runs on a different address space, known as User Space.

On Microkernels (like Windows NT) Kernel runs various processes as separate Servers that are executed on different Address Spaces. Server Processes communicate between them and are invoked by parsing messages, therefore is also called Server-Client architecture.

By definition Microkernel Arch approach has the advantage of stability and security over Monolithic, since if a Kernel process fails (like a device driver), the rest will remain healthy. On the other hand, Monolithic approach is considered to have better performance even up to 5%.

Kernel structure is way more complex, for example Linux can load/unload Kernel Modules and devices at runtime and is a plug ‘n’ playable OS.

Why GNU Mach and not just GNU Linux

The most interested question is why GNU Hurd uses Mach kernel instead of Linux? When GNU OS Project started there even wasn’t a Linux Kernel and GNU people had already started to build their own kernel. So they decided to continue their work even after Linux introduced as the most common kernel in a GNU system.

The second reason is that Hurd is considered a superior Kernel than Linux. Superior by architecture only, because it lacks behind Linux in features, stability, performance and of course adoption. At this point take on mind that they are dozens of experimental kernels (mostly build-ed as university projects) that are considered superior to Linux, but that doesn’t decrease -at all- the value of Linux and the role that played in Free Software Ecosystem.

Richard Stallman, the founder of GNU Project explains why FSF (Free Software Foundation) continues to develop GNU Mach:

People sometimes ask, “Why did the FSF develop a new free kernel instead of using Linux?” It’s a reasonable question. The answer, briefly, is that that is not the question we faced. When we started developing the Hurd in 1990, the question facing us was, “How can we get a free kernel for the GNU system?” There was no free Unix-like kernel then, and we knew of no other plan to write one. The only way we could expect to have a free kernel was to write it ourselves. So we started. We heard about Linux after its release. At that time, the question facing us was, “Should we cancel the Hurd project and use Linux instead?” We heard that Linux was not at all portable (this may not be true today, but that’s what we heard then). And we heard that Linux was architecturally on a par with the Unix kernel; our work was leading to something much more powerful. Given the years of work we had already put into the Hurd, we decided to finish it rather than throw them away. If we did face the question that people ask—if Linux were already available, and we were considering whether to start writing another kernel—we would not do it. Instead we would choose another project, something to do a job that no existing free software can do. But we did start the Hurd, back then, and now we have made it work. We hope its superior architecture will make free operating systems more powerful.

Running GNU Hurd

Running GNU Hurd in a Virtual Box is a really simple procedure.

You only need to download the (only 32bit) Virtual Debian GNU/Hurd Image. At this point I followed the instructions here:

http://www.gnu.org/software/hurd/hurd/running/debian.html

But then I discovered that image was running GNU Hurd 0.3 when the latest Hurd is 0.5.

Probably the updated instructions with the latest Mach Kernel are those:

Without having tried the above instructions, it should work like this:

Downloading:

$ wget http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz

Extracting:

$ tar xzf debian-hurd.img.tar.gz

Run directly in qemu/kvm:

$ kvm -no-kvm-irqchip -drive file=debian-hurd*.img,cache=writeback -m 1G

Or convert the image into VDI to run in on Virtual Box.

$ VBoxManage convertfromraw debian-hurd.img debian-hurd.vdi --format vdi

In Fedora 19 I used qemu-img program to make the conversion

$ qemu-img convert -O vdi debian-hurd.img debian-hurd.vdi

By the way the same way you can use to try GNOME OS daily images.

Since you got a VDI image you can simple create a virtual machine in VBox and test it!

Select your “I’m not Linux” Mach Kernel!

Login as Root, password not needed - Also there is this sweet GNU Logo!

Notice that I run Hurd 0.3, which is an older version, current is 0.5

Type “startx” in VT to start the graphical interface - I think this is ICE Window Manager

For more info visit GNU Operating System Page!