GNU Hurd

GNU Hurd
GNU Hurd
Hurd-logo.svg
HURD Live CD.png
HURD Live CD
Company / developer GNU Project
Thomas Bushnell
Roland McGrath
Marcus Brinkmann
Neal Walfield
Programmed in Assembly, C
OS family Unix-like
Working state Current
Source model Free and open source software
Latest stable release L1 / October 19, 2009; 2 years ago (2009-10-19)
Supported platforms i386 architecture
Kernel type Microkernel server/client
Userland GNU and others
Default user interface Bash
License GNU General Public License
Official website http://www.gnu.org/software/hurd/

GNU Hurd (usually referred to as the Hurd) is a free software Unix-like replacement for the Unix kernel,[1] released under the GNU General Public License. It has been under development since 1990 by the GNU Project of the Free Software Foundation. It consists of a set of protocols and server processes (or daemons, in Unix terminology) that run on the GNU Mach microkernel; together they are intended to form the kernel of the GNU operating system.[1] The Hurd aims to surpass Unix operating systems in functionality, security, and stability, while remaining largely compatible with them. The GNU Project chose the microkernel server–client architecture for the operating system, due to perceived advantages over the traditional Unix monolithic kernel architecture.[citation needed]

HURD is a mutually recursive acronym, standing for HIRD of Unix-replacing daemons, where HIRD stands for HURD of interfaces representing depth. As both hurd and hird are just alternate spellings for the English word herd, the full name GNU Hurd is also a play on the words herd of gnus, reflecting how the kernel works.[2]

Contents

Development history

Development on the GNU operating system began in 1984 and initially made good progress. Free GNU tools started to acquire a good reputation and were often adopted in preference to proprietary tools provided by system vendors.[citation needed] By the early 1990s, the only major component missing was the kernel.[3]

Development on the Hurd began in 1990 after an abandoned kernel attempt in 1986, based on the research TRIX operating system developed by Professor Steve Ward and his group at MIT's Laboratory for Computer Science (LCS).[4] According to Thomas Bushnell, the initial Hurd architect, their early plan was to adapt the 4.4BSD-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".[5] However, in 1987, due to a lack of cooperation from the Berkeley programmers, Richard Stallman proposed instead to use the Mach microkernel developed at Carnegie Mellon University. Work on this was delayed for three years due to uncertainty over whether CMU would release the Mach code under a suitable license.[4]

With the release of the Linux kernel in 1991, the primary user of GNU's userland components soon became operating systems based on the Linux kernel (Linux distributions), prompting the coining of the controversial term GNU/Linux.

Development of the Hurd has proceeded slowly. Despite an optimistic announcement by Stallman in 2002[6] predicting a release of GNU/Hurd later that year, the Hurd is still not considered suitable for production environments. Development in general has not met expectations, and there are still bugs and missing features.[7] This has resulted in a poorer product than many (including Stallman) had expected.[8] In 2010, after twenty years under development, Stallman said that he was "not very optimistic about the GNU Hurd. It makes some progress, but to be really superior it would require solving a lot of deep problems", but added that "finishing it is not crucial" for the GNU system because a free kernel already existed in Linux, and completing Hurd would not address the main remaining problem for a free operating system: device support.[9]

The Debian project, among others, have worked on the Hurd project to produce binary distributions of Hurd-based GNU operating systems for IBM PC compatible systems.[10]

Architecture

Unlike most Unix-like kernels, the Hurd uses a server–client architecture, built on a microkernel that is responsible for providing the most basic kernel services – coordinating access to the hardware: the CPU (through process management and scheduling), RAM (via memory management), and other various input/output devices (via I/O scheduling) for sound, graphics, mass storage, etc. In theory the microkernel design would allow for all device drivers to be built as servers working in user space, but today most drivers of this kind are still contained in the GNU Mach kernel space. This is because, initially, user-space drivers would have suffered from performance loss, due to the overhead of the Mach interprocess communication. With the performance of today's machines, it is possible that this overhead would no longer cause a significant performance problem.[11]

In 2007, Hurd developers Neal Walfield and Marcus Brinkmann gave a critique of the Hurd architecture, known as "the critique",[12] and a proposal for how a future system may be architected, known as "the position paper".[13]

Choice of microkernel

From early on, the Hurd was developed to use GNU Mach as the microkernel. This was a technical decision made by Richard Stallman, who thought it would speed up the work by saving a large part of it. He has admitted that he was wrong about that.[14] Other Unix-like systems working on the Mach microkernel include OSF/1, Lites, and MkLinux. Mac OS X and NeXTSTEP use hybrid kernels based on Mach.

From 2004 onward, various efforts were launched to port the Hurd to more modern microkernels. The L4 microkernel was the original choice in 2004, but progress slowed to a halt. Nevertheless, during 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. Since 2005, most of the developers' time has gone into thinking about Coyotos (EROS successor).[15][16] In 2006, Marcus Brinkmann and associates met with Jonathan Shapiro (a primary architect of the Coyotos Operating System) to aid in and discuss the use of the Coyotos kernel for GNU/Hurd. These discussions continued into 2007, but progress was slow.[citation needed] In 2008, Neal Walfield began working on the Viengoos microkernel as an alternative.[17][18] In April 2009, Shapiro announced that work on the Coyotos project had ceased.

As of 2011, development on Viengoos is paused due to Walfield lacking time to work on it. In the meantime, others have continued working on the Mach variant of Hurd.[19]

Unix extensions

A number of traditional Unix concepts are replaced or extended in the Hurd.

Under Unix, every running program 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. The effect of Unix mounting is achieved 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; thus listing the unified directory reveals the contents of all the directories (a feature that is missing in many Unixes, although available in modern BSDs).

The Hurd requires a multiboot-compliant boot loader, such as GRUB.

Architecture of the servers

According to the Debian documentation there are 24 servers (18 core servers and 6 file system servers) named as follows:[20]

Core servers

  • auth (authentication server) : Receives requests and passwords from programs and gives them an ID, which changes the privileges of the program.
  • crash (crash server):
  • exec (execution server): Translates an executable image (currently ELF and a.out are supported) to a runnable image in memory.
  • fifo (FIFO translator):
  • new-fifo (new FIFO server)
  • firmlink (the firmlink translator):
  • fwd (forward server)
  • hostmux (host multiplexer server);
  • ifsock (server for sockets interface):
  • init (init server)
  • magic (magic server)
  • null (null server): implements /dev/null and /dev/zero
  • pfinet (pfinet server)
  • pflocal (pflocal server)
  • proc (process server)
  • symlink (symbolic link translator)
  • term (terminal server)
  • usermux (user multiplexer server)

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 ISO 9660 filesystem. Translates blocks of a CD or DVD to files and directories for the applications.
The nfs server "nfs"
See Network File System.
The ufs server "ufs"
Translator for the BSD filesystem of the same name, UFS.
The ftp filesystem translator "ftpfs"
See File transfer protocol
"storeio"
The storage translator

The servers collectively implement the POSIX API, with each server implementing a part of the interface. For instance, the various filesystem servers each implement the filesystem calls. The storage server will work as a wrapping layer, similar to the block layer of Linux. The equivalent of VFS of Linux is achieved by libdiskfs and libpager libraries.

GNU distributions running Hurd

Hurd-based GNU distributions include:

Error messages

A "computer bought the farm" message is an error message displayed on GNU Hurd when one of the servers that provide kernel-like functions reaches a "hopeless" situation (after which it is usually terminated). This is a rough equivalent of a kernel panic in monolithic Unix-like kernels. Its corresponding error code is the Hurd-specific EIEIO, a reference to the folk song "Old McDonald Had a Farm".[21]

See also

References

  1. ^ a b "What Is the GNU Hurd?". Gnu.org. http://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html. Retrieved 2010-03-04. 
  2. ^ "GNU Hurd: Origin of the Name". Gnu.org. http://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd/origin_of_the_name.html. Retrieved 2010-03-04. 
  3. ^ "''Linux and the GNU Project''". Gnu.org. 2010-01-26. http://www.gnu.org/gnu/linux-and-gnu.html. Retrieved 2010-03-04. 
  4. ^ a b "The GNU Hurd History, "How it Started"". http://www.gnu.org/software/hurd/history.html. Retrieved 2006-08-27. 
  5. ^ Peter H. Salus. "The Hurd and BSDI". The Daemon, the GNU and the Penguin. http://www.groklaw.net/article.php?story=20050727225542530. Retrieved 2006-08-08. 
  6. ^ John Ribeiro (2002-03-11). "Free Software Sees GNU Loose of Linux". PC World. http://www.pcworld.com/news/article/0,aid,88464,00.asp. Retrieved 2006-08-08. 
  7. ^ "http://www.gnu.org/software/hurd/hurd/status.html". Gnu.org. http://www.gnu.org/software/hurd/hurd/status.html. Retrieved 2010-03-04. 
  8. ^ "This is the way, also, that people thought was the cleanest possible way to design kernels back in 1990. Well, it took many many many years to get this kernel to run at all, and it still doesn't run well, and it looks like there may be fundamental problems with this design, which nobody knew about back in 1990." "The Free Software Movement and the Future of Freedom; March 9th 2006", transcript of a lecture given by Richard Stallman in Zagreb.
  9. ^ RMS AMA (Interview with Richard Stallman) Reddit, July 29, 2010
  10. ^ "Debian GNU/HURD project". Debian.org. http://www.debian.org/ports/hurd/. Retrieved 2010-03-04. 
  11. ^ "Re: Device drivers in Mach?". Lists.gnu.org. http://lists.gnu.org/archive/html/bug-hurd/2007-03/msg00089.html. Retrieved 2010-03-04. 
  12. ^ A Critique of the GNU Hurd Multi-server Operating System
  13. ^ Improving Usability via Access Decomposition and Policy Refinement
  14. ^ "Richard Stallman: In Defense of Red Hat". http://www.linuxtoday.com/infrastructure/2000101200421OPCYRH. "I take full responsibility for the technical decision to develop the GNU kernel based on Mach, a decision which seems to have been responsible for the slowness of the development. I thought using Mach would speed the work by saving us a large part of the job, but I was wrong." 
  15. ^ "Re: A comment about changing kernels". Lists.gnu.org. http://lists.gnu.org/archive/html/l4-hurd/2005-10/msg00755.html. Retrieved 2010-03-04. 
  16. ^ "Re: seL4, L4.sec and coyotos mess". Lists.gnu.org. 2006-07-07. http://lists.gnu.org/archive/html/l4-hurd/2006-07/msg00004.html. Retrieved 2010-03-04. 
  17. ^ "walfield.org". walfield.org. http://walfield.org. Retrieved 2010-03-04. 
  18. ^ "GNU Hurd/ microkernel/viengoos". Gnu.org. http://www.gnu.org/software/hurd/microkernel/viengoos.html. Retrieved 2010-03-04. 
  19. ^ "What happened to the L4/Coyotos/viengoos micro-kernels?". Gnu.org. http://www.gnu.org/software/hurd/faq/which_microkernel.html. Retrieved 2011-01-07. 
  20. ^ "Preliminary GNU/Hurd User Interface Description". Debian.org. 1996-10-10. http://www.debian.org/ports/hurd/hurd-doc-server. Retrieved 2010-03-04. 
  21. ^ "Old Hurd FAQ: What does "computer bought the farm" mean ?". http://www.gnu.org/software/hurd/hurd/faq/old_faq.html. 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • GNU HURD — GNU Die unter GNU verwendete Desktop Umgebung GNOME …   Deutsch Wikipedia

  • GNU Hurd — HURD …   Википедия

  • GNU Hurd — Hurd Le Hurd est un ensemble de programmes et de bibliothèques servant de base au système d exploitation GNU. Commencé vers 1990, il s agit d un logiciel libre soumis à la licence GNU GPL. Le but recherché est de remplacer les fonctionnalités d… …   Wikipédia en Français

  • GNU Hurd — Live CD de Hurd …   Wikipedia Español

  • GNU/Hurd — GNU Hurd Entwickler GNU Hurd Entwicklerteam Architekturen IA 32 …   Deutsch Wikipedia

  • GNU Hurd — Bildschirmfoto …   Deutsch Wikipedia

  • Gnu hurd — Entwickler GNU Hurd Entwicklerteam Architekturen IA 32 …   Deutsch Wikipedia

  • GNU/Hurd — GNU GNU Famille Type Unix Type de noyau …   Wikipédia en Français

  • Debian GNU/HURD — GNU Die unter GNU verwendete Desktop Umgebung GNOME …   Deutsch Wikipedia

  • Debian GNU/Hurd — GNU Die unter GNU verwendete Desktop Umgebung GNOME …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”