GNU Kernel
   HOME

TheInfoList



OR:

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, and released as free software under the GNU General Public License. When the
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ope ...
proved to be a viable solution, development of GNU Hurd slowed, at times alternating between stasis and renewed activity and interest. 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. The Hurd aims to surpass the Unix kernel in functionality, security, and stability, while remaining largely compatible with it. The GNU Project chose the multiserver microkernel for the operating system, due to perceived advantages over the traditional Unix monolithic kernel architecture, a view that had been advocated by some developers in the 1980s.


Name and logo

In December 1991 the primary architect of the Hurd described the name as a mutually recursive acronym: As both ''hurd'' and ''hird'' are
homophone A homophone () is a word that is pronounced the same (to varying extent) as another word but differs in meaning. A ''homophone'' may also differ in spelling. The two words may be spelled the same, for example ''rose'' (flower) and ''rose'' (p ...
s of the English word ''herd'', the full name ''GNU Hurd'' is also a play on the words ''
herd A herd is a social group of certain animals of the same species, either wild or domestic. The form of collective animal behavior associated with this is called ''herding''. These animals are known as gregarious animals. The term ''herd'' is ...
of gnus'', reflecting how the kernel works. The logo is called the ''Hurd boxes'' and it also reflects on architecture. The logo is a graph where nodes represent the Hurd kernel's servers and directed edges are
IPC IPC may refer to: Computing * Infrastructure protection centre or information security operations center * Instructions per cycle or instructions per clock, an aspect of central-processing performance * Inter-process communication, the sharin ...
messages.


Development history

Richard Stallman founded the GNU Project in September 1983 with an aim to create a
free Free may refer to: Concept * Freedom, having the ability to do something, without having to obey anyone/anything * Freethought, a position that beliefs should be formed only on the basis of logic, reason, and empiricism * Emancipate, to procur ...
GNU operating system. Initially the components required for kernel development were written: editors, shell, compiler, debugger etc. By 1989, the
GNU GPL The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general us ...
came into being and 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 Laboratory for Computer Science (LCS). According to Thomas Bushnell, the initial Hurd architect, their early plan was to adapt the
4.4BSD The History of the Berkeley Software Distribution begins in the 1970s. 1BSD (PDP-11) The earliest distributions of Unix from Bell Labs in the 1970s included the source code to the operating system, allowing researchers at universities to modify a ...
-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." In 1987 Richard Stallman proposed using the Mach microkernel developed by
Richard Rashid Richard Farris Rashid is the founder of Microsoft Research, which he created in 1991. Between 1991 and 2013, as its chief research officer and director, he oversaw the worldwide operations for Microsoft Research which grew to encompass more than ...
at
Carnegie Mellon University Carnegie Mellon University (CMU) is a private research university in Pittsburgh, Pennsylvania. One of its predecessors was established in 1900 by Andrew Carnegie as the Carnegie Technical Schools; it became the Carnegie Institute of Technology ...
. 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 The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ope ...
in 1991, the primary user of GNU's userland components soon became operating systems based on the Linux kernel (
Linux distribution A Linux distribution (often abbreviated as distro) is an operating system made from a software collection that includes the Linux kernel and, often, a package management system. Linux users usually obtain their operating system by downloading one ...
s), prompting the coining of the 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 a significant number of 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 ( Linux), and completing Hurd would not address the main remaining problem for a free operating system: device support. The
Debian Debian (), also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of D ...
project, among others, have worked on the Hurd project to produce binary distributions of Hurd-based GNU operating systems for IBM PC compatible systems. After years of stagnation, development picked up again in 2015 and 2016, with four releases during these two years. On August 20, 2015, amid the Google Summer of Code, it was announced that GNU Guix had been ported to GNU Hurd.


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 A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, and ...
(through
process management Process management may refer to: * Business process management ** Business Process Management Journal ** Dynamic business process management ** International Conference on Business Process Management ** Social business process management * Manag ...
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 A modern computer operating system usually segregates virtual memory into user space and kernel space. Primarily, this separation serves to provide memory protection and hardware protection from malicious or errant software behaviour. Kernel ...
. According to Hurd developers, the main advantage of microkernel-based design is the ability to extend the system: developing a new module would not require in depth knowledge of the rest of the kernel, and a bug in one module would not crash the entire system. Hurd provides a concept of ''translators'', a framework of modules used to extend a file system functionality. 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. Other Unix-like systems working on the Mach microkernel include
OSF/1 OSF/1 is a variant of the Unix operating system developed by the Open Software Foundation during the late 1980s and early 1990s. OSF/1 is one of the first operating systems to have used the Mach kernel developed at Carnegie Mellon University, and ...
, Lites, and MkLinux. macOS and NeXTSTEP use hybrid kernels based on Mach.


Other microkernels

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, Brinkmann and Walfield started researching Coyotos as a new kernel for HURD. In 2006, Brinkmann 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. In further discussion HURD developers realised that Coyotos (as well as other similar kernels) are not suitable for HURD. 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 designed, known as "the position paper". In 2008, Neal Walfield began working on the Viengoos microkernel as a modern native kernel for HURD. , 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. 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 In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
, 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, like 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. 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:


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): Handles all fatal errors. * eieio (translation server): TODO * exec (execution server): Translates an executable image (currently ELF and
a.out a.out is a file format used in older versions of Unix-like computer operating systems for executables, object code, and, in later systems, shared libraries. This is an abbreviated form of "assembler output", the filename of the output of Ken Th ...
are supported) to a runnable image in memory. * fifo ( FIFO translator): Implements named pipes. * new-fifo (new FIFO server): An alternate server for named pipes. * firmlink (the firmlink translator): Implements firmlinks ‒ "half-way between a symbolic link and a
hard link In computing, a hard link is a directory entry (in a directory-based file system) that associates a name with a file. Thus, each file must have at least one hard link. Creating additional hard links for a file makes the contents of that file acc ...
". * 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 In Unix-based computer operating systems, init (short for ''initialization'') is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct ...
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 In some operating systems, the null device is a device file that discards all data written to it but reports that the write operation succeeded. This device is called /dev/null on Unix and Unix-like systems, NUL: (see TOPS-20) or NUL on CP/M an ...
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 don't 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. ;ufs :Translator for the BSD filesystem of the same name, UFS. ;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

Hurd-based GNU distributions include: * Arch Hurd * Bee GNU/Hurd (discontinued) * Debian GNU/Hurd * Gentoo GNU Hurd (discontinued) * GNU/Hurd Live CD (discontinued) * Guix System (under development)


See also

* Comparison of operating system kernels * Free Software * GNU distributions * GNU Mach * Linux-libre – a
free Free may refer to: Concept * Freedom, having the ability to do something, without having to obey anyone/anything * Freethought, a position that beliefs should be formed only on the basis of logic, reason, and empiricism * Emancipate, to procur ...
version of the
Linux kernel The Linux kernel is a free and open-source, monolithic, modular, multitasking, Unix-like operating system kernel. It was originally authored in 1991 by Linus Torvalds for his i386-based PC, and it was soon adopted as the kernel for the GNU ope ...
* Kernel-based Virtual Machine (KVM) * Multiboot Specification


References


External links

* {{Microkernel Free software operating systems GNU Project software Microkernel-based operating systems Microkernels Operating system distributions bootable from read-only media Unix variants