GNU Hurd is a collection of microkernel servers written as part of GNU, for the GNU Mach microkernel. It has been under development since 1990 by the GNU Project of the Free Software Foundation, designed as a replacement for the Unix kernel,

The Hurd's design consists of a set of protocols and server processes (or daemons, in Unix terminology) that run on the GNU Mach microkernel. for the operating system, due to perceived advantages over the traditional Unix monolithic kernel architecture,

As both hurd and hird are homophones of the English word herd, the full name GNU Hurd is also a play on the words herd of gnus, reflecting how the kernel works. Initially the components required for kernel development were written: editors, shell, compiler, debugger etc. By 1989, the GPL came into being and the only major component missing was the kernel. Since then, no release was made, but distributions pick up snapshots to produce distribution releases.

On August 20, 2015, amid the Google Summer of Code, it was announced that GNU Guix had been ported to GNU Hurd.

Architecture

thumb|600px|General structure of monolithic, microkernel and hybrid kernel-based operating systems, respectively.

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.

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.

In 2007, Hurd developers Neal Walfield and Marcus Brinkmann gave a critique of the Hurd architecture, known as "the critique",

  • fwd (forward server): Forwards requests to other servers, used by fifo and symlink servers.
  • hostmux (host multiplexer server)
  • ifsock (server for sockets interface): Helps with UNIX domain socket addresses.
  • init (init server): Basic system booting and configuration.
  • magic (magic server): Signals that a name lookup must be resolved internally by a process when the result involves the process's state.
  • null (null server): Implements /dev/null and /dev/zero.
  • pfinet (pfinet server): Implements the PF_INET protocol family.
  • pflocal (pflocal server): Implements UNIX domain sockets.
  • proc (process server): Assigns PIDs and manages process-level actions.
  • symlink (symbolic link translator): Implements symbolic links for filesystems that do not support them.
  • term (terminal server): A POSIX terminal.
  • usermux (user multiplexer server): Invokes user-specific translators.

Filesystem servers

;ext2fs

:The ext2 filesystem translator. It receives disk blocks from the microkernel and gives files and directories to the applications.

;isofs

:The translator for the ISO 9660 filesystem. Translates blocks of a CD or DVD to files and directories for the applications.

;nfs

:See Network File System.

;ftpfs

: File Transfer Protocol filesystem translator.

;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

thumbnail|[[Debian GNU/Hurd with Xfce]]

Hurd-based GNU distributions include:

  • Arch Hurd
  • Bee GNU/Hurd (discontinued)
  • Debian GNU/Hurd
  • Gentoo GNU Hurd
  • GNU/Hurd Live CD
  • Guix System (under development)

See also

<!-- Please keep entries in alphabetical order & add a short description WP:SEEALSO -->

  • Comparison of operating system kernels
  • GNU distributions
  • Kernel-based Virtual Machine (KVM)
  • Linux-libre – a free version of the Linux kernel
  • Multiboot Specification

<!-- please keep entries in alphabetical order -->

References