GNU Hurd
Encyclopedia : G : GN : GNU : GNU Hurd
- "Hurd" redirects here. For , see .
"HURD" is an indirectly recursive acronym, standing for "HIRD of Unix-Replacing Daemons", where "HIRD" stands for "HURD of Interfaces Representing Depth". It is also a play of words to give "herd of gnus" reflecting how it works.
Development history
Development on the GNU operating system began in 1984 and progressed rapidly. By the early 1990s, the only major component missing was the kernel.Development on the Hurd began in 1990, after an abandoned kernel attempt called Trix. According to Thomas Bushnell, the initial Hurd architect, their early plan was to adapt the BSD 4.4-Lite kernel and, in hindsight, "It is now perfectly obvious to me that this would have succeeded splendidly and the world would be a very different place today" [link]. However, due to a lack of cooperation from the Berkeley programmers, Richard Stallman decided instead to use the Mach microkernel, which subsequently proved unexpectedly difficult, and the Hurd's development proceeded slowly.
Because of this slow pace, the GNU userland components came to be used with the Linux kernel and are now commonly associated with "Linux" systems (see also GNU/Linux naming controversy).
Despite an optimistic announcement by Stallman in 2002 [link] predicting a release of GNU/Hurd, further development and design are still required. No official release of the Hurd has yet been made, and the system is currently unstable.
OSKit-Mach began as a branch of the Gnu Mach 1.2 kernel, but since the release of GNU Mach 1.3, OSKit-Mach has been merged as the new Gnu Mach 2.x mainline. Development of the Hurd has also shifted significantly for some developers towards the L4 microkernel family.
In 2005, Hurd developer Neal Walfield finished the initial memory management framework for the [L4/Hurd port], and Marcus Brinkmann ported essential parts of glibc; namely, getting the process startup code working, allowing programs to run, thus allowing the first user programs (trivial ones such as the hello world program in C) to run.
The Debian project, among others, have contributed funding to speed up development.
In 2006, Marcus Brinkmann and associates have met with Jonathan Shapiro (one of the primary achitects of the Coyotos Operating System) to aid in and discuss the use of the Coyotos kernel for GNU/Hurd as there is no focus on L4 anymore.
Architecture
Unlike Unix-like kernels, the Hurd builds on top of a microkernel which is responsible for providing the most basic kernel services – coordinating access to the hardware: the CPU (through multiprocessing), RAM (via memory management), and other various devices for sound, graphics, mass storage, etc. Being built on top of a Microkernel the Hurd inherits the architecture of these systems. This implies that the drivers for the hardware will have to work in the Microkernel space, and probably they will have to be compiled inside.GNU Mach is currently used as the microkernel, but efforts are underway to port the Hurd to the more modern L4 microkernel. It is also being discussed whether or not L4 is actually suitable at all and there may be a switch or port to yet another microkernel [link]. There is speculation about Coyotos (EROS successor) and l4.sec (not yet complete). Exokernels have not been proposed so far.
Other Unix-like systems running on top of the Mach microkernel include Mac OS X, OSF/1, NEXTSTEP, Lites, and MkLinux. These share one detail in common, in that they are implemented as a single so-called server. In effect they replace the monolithic kernel from a traditional Unix system with two parts, the microkernel and Unix server.
The Hurd instead consists of multiple servers working together. Instead of a single large code base which includes everything from handling the clock to handling the networking, in Hurd each of these are handled by a separate server. This makes developing the Hurd much easier (at least in theory) as making changes to one is less likely to have side-effects in others.
In the original Mach efforts, this sort of "set of servers" was considered to be one of the main goals of the design, but the Hurd appears to be the first Mach-based system to actually be implemented in this fashion (whereas QNX is similar but based on its own microkernel). It's not entirely clear why this happened, but it appears that groups working on Mach were too busy working on Mach to work on the operating system as a whole. Hurd also aims to be microkernel-independent.
Unix extensions
A number of traditional Unix concepts are replaced or extended in the Hurd: Under Unix every program running has an associated user id, which normally corresponds to the user that started the process. This id largely dictates the actions permitted to the program. No outside process can change the user id of a running program. A Hurd process, on the other hand, runs under a set of user ids, which can contain multiple ids, one, or none. A sufficiently privileged process can add and remove ids to another process. For example there is a password server that will hand out ids in return for a correct login password.Regarding the file system, a suitable program can be designated as a translator for a single file or a whole directory hierarchy. Every access to the translated file, or files below a hierarchy in the second case, is in fact handled by the program. For example a file translator may simply redirect read and write operations to another file, not unlike a Unix symbolic link. What mounting is to Unix, the Hurd achieves by setting up a filesystem translator (using the "settrans" command). Translators can also be used to provide services to the user. For example, the ftpfs translator allows a user to encapsulate remote FTP sites within a directory. Then, standard tools such as ls, cp, and rm can be used to manipulate files on the remote system. Even more powerful translators are ones such as UnionFS, which allows a user to unify multiple directories into one; so that listing the unified directory reveals the contents of all the unified directories (a feature that is missing in many Unixes, although available in FreeBSD, NetBSD and DragonFly BSD).
Perhaps the most empowering aspect of the Hurd is the ability for any user to start their own system services. Any user can attach any translator to the filesystem for their own personal use. A user could even replace system servers, such as the auth server, with other servers of their own choosing. All this can be done without affecting other users, due to well defined scopes. Indeed, it is even possible for a user to run the Hurd within itself, which is known as a sub-Hurd.
The Hurd requires a multiboot-compliant boot loader, such as GRUB.
Architecture of the servers
According to the Debian documentation there are 24 servers named as follows: [link]
Filesystem servers
- The ext2fs server "ext2fs": The ext2 filesystem translator. It receives disk blocks from the microkernel and gives files and directories to the applications.
- The iso filesystem server "isofs": The translator for the iso9660 filesystem. Translates blocks of a CD or DVD to files and directories for the applications
- The nfs server "nfs": The translator for the network file system NFS. It gives the applications the illusion of local files when they are in another computer of the network, translating their filesystem requests to network requests and translating the received blocks to files.
- The ufs server "ufs": Translator for the BSD filesystem of the same name, UFS
- The ftp filesystem translator "ftpfs":
- The storage translator "storeio":
Other servers
- The authentication server "auth"
- The crash server "crash"
- The exec server "exec"
- The fifo translator "fifo"
- The firmlink translator "firmlink"
- The fwd server "fwd"
- The hostmux server "hostmux"
- The ifsock server "ifsock"
- The init server "init"
- The magic server "magic"
- The new-fifo server "new-fifo"
- The null server "null"
- The pfinet server "pfinet"
- The pflocal server "pflocal"
- The process server "proc"
- The symbolic link translator "symlink"
- The terminal server "term"
- The usermux server "usermux"
GNU/Hurd-based distributions
See also
- redirect[[Template:Portal]]
External links
- redirect [[Template:Wikinews]]
- [The GNU Hurd]
- [Debian GNU/Hurd installation CDs]
- [Citations from CiteSeer]
- [Interview] with Neal Walfield, Hurd and Hurd/L4 developer. (2001)
- [Interview] with Marcus Brinkmann, Hurd and Hurd/L4 developer. (2005)
- [Gnuppix, a GNU/Hurd-L4 LiveCD] -- still in alpha stage
- [A GNU/Hurd on Mach LiveCD], based on Debian GNU/Hurd ([mirror here])
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.

