GNU Hurd
Encyclopedia
GNU Hurd is a free software
Unix-like
replacement for the Unix
kernel
, 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. 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.
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.
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). 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". 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.
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 distribution
s), prompting the coining of the controversial term GNU/Linux
.
Development of the Hurd has proceeded slowly. Despite an optimistic announcement by Stallman in 2002 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. This has resulted in a poorer product than many (including Stallman) had expected. 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.
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.
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.
In 2007, Hurd developers Neal Walfield and Marcus Brinkmann gave a critique of the Hurd architecture, known as "the critique", and a proposal for how a future system may be architected, known as "the position paper".
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. Other Unix-like systems working on the Mach microkernel include OSF/1, Lites
, and MkLinux
. Mac OS X
and NeXTSTEP
use hybrid kernel
s 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). 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. In 2008, Neal Walfield began working on the Viengoos microkernel as an alternative. 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.
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
.
The iso filesystem server "isofs"
The nfs server "nfs"
The ufs server "ufs"
The ftp filesystem translator "ftpfs"
"storeio"
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.
distributions include:
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
".
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
replacement for the Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
kernel
Kernel (computing)
In computing, the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level. The kernel's responsibilities include managing the system's resources...
, released under the GNU General Public License
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....
. It has been under development since 1990 by the GNU Project
GNU Project
The GNU Project is a free software, mass collaboration project, announced on September 27, 1983, by Richard Stallman at MIT. It initiated GNU operating system development in January, 1984...
of the Free Software Foundation
Free Software Foundation
The Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...
. It consists of a set of protocols and server processes
Server (computing)
In the context of client-server architecture, a server is a computer program running to serve the requests of other programs, the "clients". Thus, the "server" performs some computational task on behalf of "clients"...
(or daemons
Daemon (computer software)
In Unix and other multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user...
, in Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
terminology) that run on the GNU Mach
GNU Mach
GNU Mach is an implementation of the Mach microkernel. It is the default microkernel in the GNU Hurd operating system. GNU Mach runs on IA-32 machines. GNU Mach is maintained by developers on the GNU project...
microkernel
Microkernel
In computer science, a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system . These mechanisms include low-level address space management, thread management, and inter-process communication...
; together they are intended to form the kernel of the GNU
GNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
operating system. The Hurd aims to surpass Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
operating systems in functionality, security, and stability, while remaining largely compatible with them. The GNU Project chose the microkernel server–client architecture
Microkernel
In computer science, a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system . These mechanisms include low-level address space management, thread management, and inter-process communication...
for the operating system, due to perceived advantages over the traditional Unix monolithic kernel
Monolithic kernel
A monolithic kernel is an operating system architecture where the entire operating system is working in the kernel space and alone as supervisor mode...
architecture.
HURD is a mutually
Mutual recursion
Mutual recursion is a form of recursion where two mathematical or computational functions are defined in terms of each other.For instance, consider two functions even? and odd? defined as follows: function even?...
recursive acronym
Recursive acronym
A recursive acronym is an acronym or initialism that refers to itself in the expression for which it stands...
, 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
Herd
Herd refers to a social grouping of certain animals of the same species, either wild or domestic, and also to the form of collective animal behavior associated with this or as a verb, to herd, to its control by another species such as humans or dogs.The term herd is generally applied to mammals,...
of gnus
Wildebeest
The wildebeest , also called the gnu is an antelope of the genus Connochaetes. It is a hooved mammal...
, reflecting how the kernel works.
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. By the early 1990s, the only major component missing was the kernel.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
Massachusetts Institute of Technology
The Massachusetts Institute of Technology is a private research university located in Cambridge, Massachusetts. MIT has five schools and one college, containing a total of 32 academic departments, with a strong emphasis on scientific and technological education and research.Founded in 1861 in...
Laboratory for Computer Science (LCS). According to Thomas Bushnell
Thomas Bushnell
Thomas Bushnell, BSG, formerly known as Michael Bushnell, is a software developer and Gregorian friar. He was the founder and principal architect of GNU's official kernel project, GNU Hurd, from its instigation until November 2003, when he posted to the GNU project's discussion mailing list saying...
, 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". However, in 1987, due to a lack of cooperation from the Berkeley
University of California, Berkeley
The University of California, Berkeley , is a teaching and research university established in 1868 and located in Berkeley, California, USA...
programmers, Richard Stallman
Richard Stallman
Richard Matthew Stallman , often shortened to rms,"'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman|first= Richard|date= N.D.|work=Richard Stallman's homepage...
proposed instead to use the Mach microkernel
Mach (kernel)
Mach is an operating system kernel developed at Carnegie Mellon University to support operating system research, primarily distributed and parallel computation. Although Mach is often mentioned as one of the earliest examples of a microkernel, not all versions of Mach are microkernels...
developed at Carnegie Mellon University
Carnegie Mellon University
Carnegie Mellon University is a private research university in Pittsburgh, Pennsylvania, United States....
. Work on this was delayed for three years due to uncertainty over whether CMU would release the Mach code under a suitable license.
With the release of the Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....
in 1991, the primary user of GNU's userland components soon became operating systems based on the Linux kernel (Linux distribution
Linux distribution
A Linux distribution is a member of the family of Unix-like operating systems built on top of the Linux kernel. Such distributions are operating systems including a large collection of software applications such as word processors, spreadsheets, media players, and database applications...
s), prompting the coining of the controversial term GNU/Linux
GNU/Linux naming controversy
The GNU/Linux naming controversy is a dispute among members of the free and open source software community over how to refer to the computer operating system commonly called Linux....
.
Development of the Hurd has proceeded slowly. Despite an optimistic announcement by Stallman in 2002 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. This has resulted in a poorer product than many (including Stallman) had expected. 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
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
, and completing Hurd would not address the main remaining problem for a free operating system: device support.
The Debian
Debian
Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...
project, among others, have worked on the Hurd project to produce binary distributions of Hurd-based GNU operating systems for IBM PC compatible
IBM PC compatible
IBM PC compatible computers are those generally similar to the original IBM PC, XT, and AT. Such computers used to be referred to as PC clones, or IBM clones since they almost exactly duplicated all the significant features of the PC architecture, facilitated by various manufacturers' ability to...
systems.
Architecture
Unlike most Unix-likeUnix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
kernels, the Hurd uses a server–client architecture, built on a microkernel
Microkernel
In computer science, a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system . These mechanisms include low-level address space management, thread management, and inter-process communication...
that is responsible for providing the most basic kernel services – coordinating access to the hardware
Computer hardware
Personal computer hardware are component devices which are typically installed into or peripheral to a computer case to create a personal computer upon which system software is installed including a firmware interface such as a BIOS and an operating system which supports application software that...
: the CPU
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...
(through process management
Process management (computing)
Process management is an integral part of any modern day operating system . The OS must allocate resources to processes, enable processes to share and exchange information, protect the resources of each process from other processes and enable synchronisation among processes...
and scheduling
Scheduling (computing)
In computer science, a scheduling is the method by which threads, processes or data flows are given access to system resources . This is usually done to load balance a system effectively or achieve a target quality of service...
), RAM (via memory management
Memory management
Memory management is the act of managing computer memory. The essential requirement of memory management is to provide ways to dynamically allocate portions of memory to programs at their request, and freeing it for reuse when no longer needed. This is critical to the computer system.Several...
), and other various input/output
Input/output
In computing, input/output, or I/O, refers to the communication between an information processing system , and the outside world, possibly a human, or another information processing system. Inputs are the signals or data received by the system, and outputs are the signals or data sent from it...
devices (via I/O scheduling
I/O scheduling
Input/output scheduling is a term used to describe the method computer operating systems decide the order that block I/O operations will be submitted to storage volumes...
) 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
User space
A conventional computer operating system usually segregates virtual memory into kernel space and user space. Kernel space is strictly reserved for running the kernel, kernel extensions, and most device drivers...
, but today most drivers of this kind are still contained in the GNU Mach
GNU Mach
GNU Mach is an implementation of the Mach microkernel. It is the default microkernel in the GNU Hurd operating system. GNU Mach runs on IA-32 machines. GNU Mach is maintained by developers on the GNU project...
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.
In 2007, Hurd developers Neal Walfield and Marcus Brinkmann gave a critique of the Hurd architecture, known as "the critique", and a proposal for how a future system may be architected, known as "the position paper".
Choice of microkernel
From early on, the Hurd was developed to use GNU MachGNU Mach
GNU Mach is an implementation of the Mach microkernel. It is the default microkernel in the GNU Hurd operating system. GNU Mach runs on IA-32 machines. GNU Mach is maintained by developers on the GNU project...
as the microkernel. This was a technical decision made by Richard Stallman
Richard Stallman
Richard Matthew Stallman , often shortened to rms,"'Richard Stallman' is just my mundane name; you can call me 'rms'"|last= Stallman|first= Richard|date= N.D.|work=Richard Stallman's homepage...
, who thought it would speed up the work by saving a large part of it. He has admitted that he was wrong about that. Other Unix-like systems working on the Mach microkernel include OSF/1, Lites
Lites
Lites was a Unix-like operating system, based on 4.4BSD and the Mach microkernel.Specifically, Lites was a multi-threaded server and emulation library that provided unix functionality to a Mach based system...
, and MkLinux
MkLinux
MkLinux is an open source computer operating system started by the OSF Research Institute and Apple Computer in February 1996 to port Linux to the PowerPC platform, and Macintosh computers...
. Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
and NeXTSTEP
NEXTSTEP
NeXTSTEP was the object-oriented, multitasking operating system developed by NeXT Computer to run on its range of proprietary workstation computers, such as the NeXTcube...
use hybrid kernel
Hybrid kernel
A hybrid kernel is a kernel architecture based on combining aspects of microkernel and monolithic kernel architectures used in computer operating systems. The category is controversial due to the similarity to monolithic kernel; the term has been dismissed by Linus Torvalds as simple marketing...
s based on Mach.
From 2004 onward, various efforts were launched to port the Hurd to more modern microkernels. The L4 microkernel
L4 microkernel family
L4 is a family of second-generation microkernels, generally used to implement Unix-like operating systems, but also used in a variety of other systems.L4 was a response to the poor performance of earlier microkernel-base operating systems...
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
Marcus Brinkmann
Marcus Brinkmann is a German computer programmer. He is one of the lead developers of the Hurd/L4 which is supposed to supersede the GNU Mach microkernel in GNU...
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
Hello world program
A "Hello world" program is a computer program that outputs "Hello world" on a display device. Because it is typically one of the simplest programs possible in most programming languages, it is by tradition often used to illustrate to beginners the most basic syntax of a programming language, or to...
in C) to run. Since 2005, most of the developers' time has gone into thinking about Coyotos
Coyotos
Coyotos is a capability-based security-focused microkernel operating system developed by The EROS Group, LLC. It is a successor to the EROS system that was created at the University of Pennsylvania and Johns Hopkins University.- History :...
(EROS
Extremely Reliable Operating System
EROS is an operating system developed by The EROS Group, LLC., the Johns Hopkins University, and the University of Pennsylvania. Features include automatic data and process persistence, some preliminary real-time support, and capability-based security. EROS is purely a research operating system,...
successor). 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. In 2008, Neal Walfield began working on the Viengoos microkernel as an alternative. 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.
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
Process (computing)
In computing, a process is an instance of a computer program that is being executed. It contains the program code and its current activity. Depending on the operating system , a process may be made up of multiple threads of execution that execute instructions concurrently.A computer program is a...
. 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
File system
A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...
, 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
Symbolic link
In computing, a symbolic link is a special type of file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. Symbolic links were already present by 1978 in mini-computer operating systems from DEC and Data...
. The effect of Unix mounting
Mount (computing)
Mounting takes place before a computer can use any kind of storage device . The user or their operating system must make it accessible through the computer's file system. A user can access only files on mounted media.- Mount point :A mount point is a physical location in the partition used as a...
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
FTPFS
FTPFS refers to file systems that support access to a File Transfer Protocol server through standard file system application programming interfaces ....
translator allows a user to encapsulate remote FTP sites within a directory. Then, standard tools such as ls
Ls
In computing, ls is a command to list files in Unix and Unix-like operating systems. ls is specified by POSIX and the Single UNIX Specification.- History :An ls utility appeared in the original version of AT&T UNIX...
, cp
Cp (Unix)
cp is a UNIX command used to copy a file. Files can be copied either to the same directory or to a completely different directory, possibly on a different file system or hard disk drive. If the file is copied to the same directory, the new file must have a different name to the original; in all...
, and rm
Rm (Unix)
rm is a basic UNIX command used to remove objects such as files, directories, device nodes, symbolic links, and so on from the filesystem...
can be used to manipulate files on the remote system. Even more powerful translators are ones such as UnionFS
UnionFS
UnionFS is a filesystem service for Linux, FreeBSD and NetBSD which implements a union mount for other file systems. It allows files and directories of separate file systems, known as branches, to be transparently overlaid, forming a single coherent file system...
, 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
Berkeley Software Distribution
Berkeley Software Distribution is a Unix operating system derivative developed and distributed by the Computer Systems Research Group of the University of California, Berkeley, from 1977 to 1995...
).
The Hurd requires a multiboot
Multiboot Specification
The Multiboot Specification is an open standard originally created in 1995 and developed by the Free Software Foundation. The specification describes a method of loading various multiboot kernels using a single compliant boot loader. GNU Hurd, VMware ESXi, Xen, and L4 microkernels all need to be...
-compliant boot loader
Booting
In computing, booting is a process that begins when a user turns on a computer system and prepares the computer to perform its normal operations. On modern computers, this typically involves loading and starting an operating system. The boot sequence is the initial set of operations that the...
, such as GRUB
GNU GRUB
GNU GRUB is a boot loader package from the GNU Project. GRUB is the reference implementation of the Multiboot Specification, which provides a user the choice to boot one of multiple operating systems installed on a computer or select a specific kernel configuration available on a particular...
.
Architecture of the servers
According to the Debian documentation there are 24 servers (18 core servers and 6 file system servers) named as follows:Core servers
- auth (authentication serverAuthentication serverAuthentication servers are servers that provide authentication services to users or other systems via networking. Remotely placed users and other servers authenticate to such a server, and receive cryptographic tickets...
) : Receives requests and passwords from programs and gives them an ID, which changes the privileges of the program. - crash (crashCrash (computing)A crash in computing is a condition where a computer or a program, either an application or part of the operating system, ceases to function properly, often exiting after encountering errors. Often the offending program may appear to freeze or hang until a crash reporting service documents...
server): - exec (execution server): Translates an executable image (currently ELFExecutable and Linkable FormatIn computing, the Executable and Linkable Format is a common standard file format for executables, object code, shared libraries, and core dumps. First published in the System V Application Binary Interface specification, and later in the Tool Interface Standard, it was quickly accepted among...
and a.out are supported) to a runnable image in memory. - fifo (FIFOFIFOFIFO is an acronym for First In, First Out, an abstraction related to ways of organizing and manipulation of data relative to time and prioritization...
translator): - new-fifo (new FIFO server)
- firmlink (the firmlink translator):
- fwd (forward server)
- hostmux (host multiplexer server);
- ifsock (server for sockets interface):
- init (initInitinit is a program for Unix-based computer operating systems that spawns all other processes. It runs as a daemon and typically has PID 1. The boot loader starts the kernel and the kernel starts init...
server) - magic (magic server)
- null (null server): implements /dev/null/dev/nullIn Unix-like operating systems, /dev/null or the null device is a special file that discards all data written to it and provides no data to any process that reads from it ....
and /dev/zero - pfinet (pfinet server)
- pflocal (pflocal server)
- proc (process server)
- symlink (symbolic linkSymbolic linkIn computing, a symbolic link is a special type of file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution. Symbolic links were already present by 1978 in mini-computer operating systems from DEC and Data...
translator) - term (terminal server)
- usermux (user multiplexer server)
Filesystem servers
The ext2fs server "ext2fs"- The ext2Ext2The ext2 or second extended filesystem is a file system for the Linux kernel. It was initially designed by Rémy Card as a replacement for the extended file system ....
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 9660ISO 9660ISO 9660, also referred to as CDFS by some hardware and software providers, is a file system standard published by the International Organization for Standardization for optical disc media....
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, UFSUnix File SystemThe Unix file system is a file system used by many Unix and Unix-like operating systems. It is also called the Berkeley Fast File System, the BSD Fast File System or FFS...
.
The ftp filesystem translator "ftpfs"
- See File transfer protocolFile Transfer ProtocolFile Transfer Protocol is a standard network protocol used to transfer files from one host to another host over a TCP-based network, such as the Internet. FTP is built on a client-server architecture and utilizes separate control and data connections between the client and server...
"storeio"
- The storage translator
The servers collectively implement the POSIX
POSIX
POSIX , an acronym for "Portable Operating System Interface", is a family of standards specified by the IEEE for maintaining compatibility between operating systems...
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
Virtual file system
A virtual file system or virtual filesystem switch is an abstraction layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way...
of Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
is achieved by libdiskfs and libpager libraries.
GNU distributions running Hurd
Hurd-based GNUGNU
GNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
distributions include:
- Arch HurdArch HurdArch Hurd is an operating system based on Arch Linux, but uses GNU Hurd kernel instead of Linux.The Arch Hurd project was founded on an Arch Linux forum thread and, after a few weeks with many contributions, progressed to the point where it could boot in a virtual machine...
- Bee GNU/Hurd
- Debian GNU/HurdDebian GNU/HurdDebian GNU/Hurd is the Debian project's distribution of the GNU operating system, using the GNU Hurd microkernel. Its developers are hoping to be able to release Debian GNU/Hurd for the next major release of Debian, "wheezy"....
- Gentoo GNU Hurd (abandoned)
- GNU/Hurd Live CD
Error messages
A "computer bought the farm" message is an error messageError message
An error message is information displayed when an unexpected condition occurs, usually on a computer or other device. On modern operating systems with graphical user interfaces, error messages are often displayed using dialog boxes...
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
Kernel panic
A kernel panic is an action taken by an operating system upon detecting an internal fatal error from which it cannot safely recover. The term is largely specific to Unix and Unix-like systems; for Microsoft Windows operating systems the equivalent term is "Bug check" .The kernel routines that...
in monolithic Unix-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
kernels. Its corresponding error code
Error code
In computer programming, error codes are enumerated messages that correspond to faults in a specific software application. They are typically used to identify faulty hardware, software, or incorrect user input in programming languages that lack exception handling, although they are sometimes also...
is the Hurd-specific EIEIO, a reference to the folk song "Old McDonald Had a Farm
Old McDonald Had a Farm
"Old MacDonald Had a Farm" is a children's song and nursery rhyme about a farmer named MacDonald and the various animals he keeps on his farm. Each verse of the song changes the name of the animal and its respective noise. In many versions, the song is cumulative, with the noises from all the...
".
See also
- Arch HurdArch HurdArch Hurd is an operating system based on Arch Linux, but uses GNU Hurd kernel instead of Linux.The Arch Hurd project was founded on an Arch Linux forum thread and, after a few weeks with many contributions, progressed to the point where it could boot in a virtual machine...
- Debian GNU/HurdDebian GNU/HurdDebian GNU/Hurd is the Debian project's distribution of the GNU operating system, using the GNU Hurd microkernel. Its developers are hoping to be able to release Debian GNU/Hurd for the next major release of Debian, "wheezy"....
- Free Software FoundationFree Software FoundationThe Free Software Foundation is a non-profit corporation founded by Richard Stallman on 4 October 1985 to support the free software movement, a copyleft-based movement which aims to promote the universal freedom to create, distribute and modify computer software...
- GNUGNUGNU is a Unix-like computer operating system developed by the GNU project, ultimately aiming to be a "complete Unix-compatible software system"...
- Linux-libreLinux-libreLinux-libre is a project that aims to publish and maintain modified versions of the Linux kernel that include only free software. This is accomplished by removing software modules without included source code , obfuscated code or portions of code under proprietary licenses.This project is endorsed...
- Minix 3MINIX 3MINIX 3 is a project to create a small, highly reliable and functional Unix-like operating system. It is published under the BSD license.The main goal of the project is for the system to be fault-tolerant by detecting and repairing its own faults on the fly, without user intervention...
- MERT
External links
- The GNU Hurd by Marcus Brinkmann
- Towards a New Strategy of OS Design
- Debian GNU/Hurd installation CDs
- Interview with Neal Walfield, Hurd and Hurd/L4 developer. (2001)
- Interview with Marcus BrinkmannMarcus BrinkmannMarcus Brinkmann is a German computer programmer. He is one of the lead developers of the Hurd/L4 which is supposed to supersede the GNU Mach microkernel in GNU...
, Hurd and Hurd/L4 developer. - [irc://irc.gnu.org/hurd #hurd] IRC channel