next up previous
Next: The Mach micro-kernel Up: The GNU Hurd Previous: Technical interlude: RPCs

Subsections

The GNU Hurd

Definition

The GNU Hurd is a set of servers, libraries and interfaces, running on top of a micro kernel, and providing the services which used to be inside the kernel.

Vocabulary

The Hurd
The Hurd, or the GNU Hurd, is the set of servers, it is not an operating system, and since it runs in user space, it is not what we call a kernel. ``Hurd'' means ``Hird of Unix-Replacing Daemons'' and ``Hird'' means ``Hurd of Interfaces Representing Depth'', but all of them are spelled like the word ``herd'', which is the real meaning of this name: the GNU Hurd is a herd of gnus.
GNU/Hurd
GNU/Hurd, or GNU, is the full operating system, including the micro-kernel, the Hurd, the dynamic linker (GNU ld) the C library (GNU libc), ...

The Hurd's goals

The Hurd is the core of the GNU project. Every program running on the GNU system will rely upon the Hurd to perform most of all operating system related tasks. The philosophy of the GNU project, as defined in the GNU manifesto, was the philosophy leading to the Hurd design. The goal of the GNU project is to give back the freedom to the users of computer systems; but not only at the license level. Every technical limitation which is not strictly necessary is a reduction of user freedom. The fact that non-privilegied user in a Unix system cannot mount an ISO image (setuid does not count), or test his own file system implementation, is a reduction of user freedom. With its highly modular design, the Hurd gives back some additional freedom to the users. This is a major idea of the whole GNU project, displayed even in the name of the project: we want to stay compatible with Unix programs as much as possible, but we want to overthrow as much limitations as we can.

Interfaces between components of the GNU Hurd were clearly defined and fixed as soon as possible during the development. Fixed interfaces are very important to allow users to design their own replacement of some part of the system, without breaking the other parts. It also suppress compatibility problems.

Interfaces of the GNU Hurd were designed to fill the flaws of Unix systems. For example, there is no (standard) way in a Unix system to create a file with no name. The commonly used method is to create it in /tmp, and then unlink it without closing the file descriptor. The kernel will wait for the file descriptor to be closed before deleting it. But during a short amount of time, the file has a name, and this causes many security holes. Another example is notification: the most common way to ask the kernel of Unix system to be informed when a file is changed (SIGIO) is non-portable, and not very flexible (in recent Unix kernels, other ways can exist, but still lack flexibility).

All this is possible, because we have the experience of Unices and many other operating systems.

The Hurd history

1983 Richard Stallman starts the GNU project
1988 Mach 3 is chosen as micro-kernel
1991 Mach 3 is released under a Free license
1991 Thomas Bushnell, BSG, founds the Hurd
1994 GNU/Hurd boots for the first time
1997 The Hurd version 0.2 is released
1998 Marcus Brinkmann creates Debian GNU/Hurd
2002 Debian GNU/Hurd has 4 CDs
2002 Port of the Hurd to L4 is started
2002 POSIX threads are now supported
2003 L4Ka::Pistachio 0.1 is released
2003 Ext2fs without the 2GB limit in alpha stage
2004 Ext2fs without the 2gb limit reach release candidate
2005 Ext2fs without the 2gb in Debian GNU/Hurd
2005 First program running on L4Hurd
2005 Initial Gnome port


next up previous
Next: The Mach micro-kernel Up: The GNU Hurd Previous: Technical interlude: RPCs
Gael Le Mignot 2005-06-08