Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

GNU Hurd

From Wikipedia, the free encyclopedia
Operating system kernel designed as a replacement for Unix
"Hurd" redirects here. For other uses, seeHurd (disambiguation).
Operating system
GNU Hurd
DeveloperGNU Project
Thomas Bushnell
Roland McGrath
Marcus Brinkmann
Neal Walfield
Samuel Thibault
Written inAssembly,C
OS familyUnix-like
Working stateCurrent
Source modelFree software
Initial release1990; 35 years ago (1990)
Repository
Supported platformsx86-64,IA-32,i686,ARM[1]
Kernel typeMultiserver microkernel
LicenseGPL-2.0-or-later[2]
Official websitewww.gnu.org/software/hurd/

GNU Hurd is a collection ofmicrokernel servers written as part ofGNU, for theGNU Mach microkernel. It has been under development since 1990 by theGNU Project of theFree Software Foundation, designed as a replacement for theUnix kernel,[3] and released asfree software under theGNU General Public License. When theLinux kernel proved to be a viable solution, development of GNU Hurd slowed, at times alternating between stasis and renewed activity and interest.[4]

The Hurd's design consists of a set of protocols andserver processes (ordaemons, in Unix terminology) that run on the GNU Mach microkernel.[3] 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[5] for the operating system, due to perceived advantages over the traditional Unixmonolithic kernel architecture,[6] a view that had been advocated by some developers in the 1980s.[4]

Name and logo

[edit]

In December 1991 the primary architect of the Hurd described the name as amutuallyrecursive acronym:[7]

It's time [to] explain the meaning of "Hurd". "Hurd" stands for "Hird of Unix-Replacing Daemons". And, then, "Hird" stands for "Hurd of Interfaces Representing Depth". We have here, to my knowledge, the first software to be named by a pair of mutually recursive acronyms.

— Thomas (then Michael) Bushnell

As bothhurd andhird arehomophones of the English wordherd, the full nameGNU Hurd is also a play on the wordsherd ofgnus, reflecting how the kernel works.[8]

The logo is called theHurd boxes and it also reflects on architecture. The logo is a graph where nodes represent the Hurd kernel's servers and directed edges areIPC messages.[7]

Development history

[edit]

Richard Stallman founded theGNU Project in September 1983 with an aim to create afreeGNU operating system.[9] Initially the components required for kernel development were written:editors,shell,compiler,debugger etc. By 1989, theGPL came into being and the only major component missing was the kernel.[10][11]

Development on the Hurd began in 1990 after an abandoned kernel attempt in 1986, based on the researchTRIX operating system developed by ProfessorSteve Ward and his group atMIT'sLaboratory for Computer Science (LCS).[12] According toThomas Bushnell, the initial Hurd architect, their early plan was to adapt the4.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."[13] In 1987 Richard Stallman proposed using theMach microkernel developed byRichard Rashid atCarnegie 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.[12]

With the release of theLinux kernel in 1991, the primary user of GNU'suserland components soon became operating systems based on the Linux kernel (Linux distributions), prompting the coining of the termGNU/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,[14] 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.[15] This has resulted in a poorer product than many, including Stallman, had expected.[16] 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.[17]

TheDebian project, among others, have worked on the Hurd project to produce binary distributions ofHurd-based GNU operating systems forIBM PC compatible systems.

After years of stagnation, development picked up again in 2015 and 2016, with four releases during these two years,[18] but no more until 2025, when a new version was released.[19]

On August 20, 2015, amid theGoogle Summer of Code, it was announced thatGNU Guix had been ported to GNU Hurd.[20]

Architecture

[edit]
General structure of monolithic, microkernel and hybrid kernel-based operating systems, respectively.

Unlike mostUnix-like kernels, the Hurd uses aserver–client architecture, built on amicrokernel that is responsible for providing the most basickernel services – coordinating access to thehardware: theCPU (throughprocess management andscheduling),RAM (viamemory management), and other variousinput/output devices (viaI/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 inuser space, but today most drivers of this kind are still contained in theGNU Machkernel space.[21]

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 oftranslators, a framework of modules used to extend a file system functionality.[22]

From early on, the Hurd was developed to useGNU Mach as the microkernel. This was a technical decision made byRichard 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.[23] Other Unix-like systems working on theMach microkernel includeOSF/1,Lites, andMkLinux.macOS andNeXTSTEP usehybrid kernels based on Mach.

Other microkernels

[edit]

From 2004 onward, various efforts were launched to port the Hurd to more modern microkernels. TheL4 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 ofglibc; namely, getting the process startup code working, allowing programs to run, thus allowing the first user programs (trivial ones such as thehello world program) in C to run.

Since 2005, Brinkmann and Walfield started researchingCoyotos as a new kernel for HURD.[24][25] 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.[26]

In 2007, Hurd developers Neal Walfield and Marcus Brinkmann gave a critique of the Hurd architecture, known as "the critique",[27] and a proposal for how a future system may be designed, known as "the position paper".[28] In 2008, Neal Walfield began working on the Viengoos microkernel as a modern native kernel for HURD. As of 2009[update], development on Viengoos is paused due to Walfield lacking time to work on it.[29]

In the meantime, others have continued working on the Mach variant of Hurd.[30]

Unix extensions

[edit]
icon
This sectiondoes notcite anysources. Please helpimprove this section byadding citations to reliable sources. Unsourced material may be challenged andremoved.(March 2007) (Learn how and when to remove this message)

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

Under Unix, every running program has an associateduser id, which normally corresponds to the user that started theprocess. 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 aset 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 thefile system, a suitable program can be designated as atranslator 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 Unixsymbolic link. The effect of Unixmounting 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, theftpfs translator allows a user to encapsulate remote FTP sites within a directory. Then, standard tools such asls,cp, andrm can be used to manipulate files on the remote system. Even more powerful translators are ones such asUnionFS, 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 amultiboot-compliantboot loader, such asGRUB.

Architecture of the servers

[edit]

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

Core servers

[edit]
  • 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 (currentlyELF anda.out 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 asymbolic link and ahard link".[32]
  • 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): ImplementsUNIX domain sockets.
  • proc (process server): AssignsPIDs and manages process-level actions.
  • symlink (symbolic link translator): Implements symbolic links for filesystems that do not support them.
  • term (terminal server): APOSIX terminal.
  • usermux (user multiplexer server): Invokes user-specific translators.

Filesystem servers

[edit]
ext2fs
Theext2 filesystem translator. It receives disk blocks from the microkernel and gives files and directories to the applications.
isofs
The translator for theISO 9660 filesystem. Translates blocks of a CD or DVD to files and directories for the applications.
nfs
SeeNetwork File System.
ftpfs
File Transfer Protocol filesystem translator.
storeio
The storage translator.

The servers collectively implement thePOSIXAPI, 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 ofVFS ofLinux is achieved by libdiskfs and libpager libraries.

GNU distributions running Hurd

[edit]
Debian GNU/Hurd withXfce

Hurd-basedGNU distributions include:

See also

[edit]

References

[edit]
  1. ^"GNU Hurd ported to AArch64, and more Hurd news".osnews.com. Retrieved22 April 2024.
  2. ^"COPYING - hurd/hurd.git - Hurd".Git.savannah.gnu.org. Retrieved25 February 2019.
  3. ^ab"What Is the GNU Hurd?".GNU. Retrieved2010-03-04.
  4. ^abTozzi, Christopher (2015-04-20)."30 Years On, HURD Lives: GNU Updates Open Source Unix Kernel".The VAR Guy. Archived from the original on 2015-04-24.
  5. ^"What is a Multiserver Microkernel?". GNU. 2013-04-13. Retrieved2015-08-11.
  6. ^"advantages".GNU. Retrieved2011-12-07.
  7. ^abVervloesem, Koen (July 7, 2010)."The Hurd: GNU's quest for the perfect kernel".LWN.net. RetrievedOctober 5, 2012.
  8. ^"GNU Hurd: Origin of the Name".GNU. Retrieved2010-03-04.
  9. ^"GNU History".cs.stanford.edu. Retrieved2024-09-03.
  10. ^Hillesley, Richard (June 30, 2010)."GNU HURD: Altered visions and lost promise". RetrievedOctober 1, 2012.
  11. ^"Linux and the GNU Project".GNU. 2010-01-26. Retrieved2010-03-04.
  12. ^ab"The GNU Hurd History, 'How it Started'".GNU. Retrieved2006-08-27.
  13. ^Salus, Peter."The Daemon, the GNU and the Penguin". Archived from the original on 2023-07-10. Retrieved2006-08-08.
  14. ^Ribeiro, John (2002-03-11)."Free Software Sees GNU Loose of Linux".PC World. Archived fromthe original on 2016-09-22. Retrieved2012-10-05.
  15. ^"Status".GNU. Retrieved2010-03-04.
  16. ^Stallman, Richard (2006-03-09)."The Free Software Movement and the Future of Freedom"(ogg).Free Software Foundation.Zagreb.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.
  17. ^Stallman, Richard (2010-07-29)."RMS AMA".Reddit. Archived fromthe original on 2014-03-05. Retrieved2011-12-07.
  18. ^"Free Software Foundation changes priorities - SD Times".SD Times. 2017-01-17. Retrieved2017-04-17.
  19. ^"Debian GNU/Hurd 2025 released!".lists.debian.org. Retrieved2025-08-23.
  20. ^Ragkousis, Manolis (August 20, 2015)."[GSoC update] Porting Guix to GNU/Hurd" (Mailing list). guix-devel. RetrievedAugust 20, 2015.
  21. ^Kousoulos, Constantine (2007-03-21)."Re: Device drivers in Mach?".bug-hurd (Mailing list).
  22. ^Doeppner, Thomas W. (20 December 2010).Operating Systems In Depth: Design and Programming. John Wiley & Sons. p. 160.ISBN 978-0-471-68723-8. Retrieved29 November 2012.
  23. ^Stallman, Richard (2000-10-12)."In Defense of Red Hat".Linux Today. Archived fromthe original on 2021-06-23. Retrieved2011-12-07.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.
  24. ^Shapiro, Jonathan S. (2005-10-27)."Re: A comment about changing kernels".l4-hurd (Mailing list).
  25. ^Bachmann, Tom (2006-07-07)."Re: seL4, L4.sec and coyotos mess".l4-hurd (Mailing list).
  26. ^"Porting the Hurd to another microkernel".GNU Hurd. Free Software Foundation. Retrieved2017-05-06.
  27. ^Walfield, Neal H.; Brinkmann, Marcus (July 2007)."A Critique of the GNU Hurd Multi-server Operating System"(PDF).GNU. Retrieved2011-12-07.
  28. ^Walfield, Neal H.; Brinkmann, Marcus (2007-01-04)."Improving Usability via Access Decomposition and Policy Refinement"(PDF).GNU. Retrieved2011-12-07.
  29. ^"viengoos".GNU. Retrieved2010-03-04.
  30. ^"What happened to the L4/Coyotos/viengoos micro-kernels?".GNU. Retrieved2011-01-07.
  31. ^"Preliminary GNU/Hurd User Interface Description".Debian. 1996-10-10. Retrieved2010-03-04.
  32. ^"GNU/Hurd - Documentation". Debian. 1996-10-10. Retrieved2012-07-12.
  33. ^"GNU Hurd/ hurd/ running/ distrib".GNU. 2015-05-03. Retrieved2017-09-21.
  34. ^"GNU Hurd/ hurd/ running/ live cd".GNU. 2013-04-09. Retrieved2017-09-21.

External links

[edit]
Wikimedia Commons has media related toGNU Hurd.
History
Licenses
Software
Contributors
Other topics
Operating
systems
BSD
Linux
System V
Other
Compatibility
layers
People
GNU Project
Other projects
Sister organizations
See also
Kernels
L4 family
Macintosh hosted
Psion
Amiga-type
Operating
systems
POSIX support
Unix-like
Partial
Capability-based
L4 kernel
Java virtual machine
Macintosh hosted
Unix-like
Psion
  • EPOCSymbian OS
  • Amiga-type
    Microsoft
    AIM alliance
    Frameworks,kits
    Developers
    Retrieved from "https://en.wikipedia.org/w/index.php?title=GNU_Hurd&oldid=1323891175"
    Categories:
    Hidden categories:

    [8]ページ先頭

    ©2009-2025 Movatter.jp