Copyright © 1994-2002  Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

Copyright © 1994--2002 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

Copyright © 1994--2002 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

Copyright © 1994--2002 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

The GNU Hurd Users Guide
************************

This file documents the using of GNU Hurd.  This edition of the documentation was last updated for version of the Hurd.

Introduction
************

The GNU Hurd (The name Hurd stands for ``Hird of Unix-Replacing Daemons.''  The name Hird stands for ``Hurd of Interfaces Representing Depth.'') is the GNU Project's replacement for the Unix kernel. The Hurd is a collection of servers (The term server is a user space daemon not the standard term for web,and file server) that run on the gnumach (the gnumach kernel is GNU's implementation of the Mach 4 micro-kernel from the Carnegie Melon University) microkernel to implement file systems, network protocols, file access control, and other features that are normally implemented by the Unix kernel or similar kernels (such as Linux).

Audience
========

This manual is designed to be useful to everybody who is interested in using or administering  the Hurd.If you are a programmer you may want to just skim through to get comfortable with the Hurd's terminology. There is a Hurd Programmers Reference and a Hurd Hacking guide for the programmer to get started on helping the Hurd.

If you are an end-user and you are looking for help on running the Hurd, the first few chapters of this manual describe the essential parts of installing, starting up, and shutting down a Hurd workstation.  If you need help with a specific program, the best way to use this manual is to find the program's name in the index and go directly to the appropriate section.  You may also wish to try running PROGRAM --help, which will display a brief usage message for PROGRAM (see Foundations).

The rest of this manual is a guide to using the Hurd because it is not unix. If you have never used a terminal or never touched GNU/Linux or the BSD systems you should be reading this through and checking back if your confused.

This manual is organized in a way that a user can get comforatable with using the Hurd. If you already have the machine up and running you can skip right to the userland chapter or the networking chapter and get connected to the rest of the world.

Features
========

The Hurd is not the most advanced operating system known to the planet (yet), but it does have a number of enticing features:

it's free software
     Anybody can use, modify, and redistribute it under the terms of the GNU General Public License (see Copying).  The Hurd is part of the GNU system, which is a complete operating system licensed under the GPL.

it's compatible
     The Hurd provides a familiar programming and user environment.  For all intents and purposes, the Hurd is a modern Unix-like kernel.  The Hurd uses the GNU C Library, whose development closely tracks standards such as ANSI/ISO, BSD, POSIX, Single Unix, SVID, and X/Open.

it's built to survive
     Unlike other popular kernel software, the Hurd has an object-oriented structure that allows it to evolve without compromising its design. This structure will help the Hurd undergo major redesign and modifications without having to be entirely rewritten.

it's scalable
     The Hurd implementation is aggressively multithreaded so that it runs efficiently on both single processors and symmetric multiprocessors. The Hurd interfaces are designed to allow transparent network clusters (collectives), although this feature has not yet been implemented.

it's extensible
     The Hurd is an attractive platform for learning how to become a kernel hacker or for implementing new ideas in kernel technology.  Every part of the system is designed to be modified and extended.

it's stable
     It is possible to develop and test new Hurd kernel components without rebooting the machine (not even accidentally).  Running your own kernel components doesn't interfere with other users, and so no special system privileges are required.  The mechanism for kernel extensions is secure by design: it is impossible to impose your changes upon other users unless they authorize them or you are the system administrator.

it exists
     The Hurd is real software that works Right Now.  It is not a research project or a proposal.  You don't have to wait at all before you can start using and developing it.

Overview
========

An operating system kernel provides a framework for programs to share a computer's hardware resources securely and efficiently.  This framework includes mechanisms for programs to communicate safely, even if they do not trust one another.

The GNU Hurd divides up the work of the traditional kernel, and implements it in separate programs.  The Hurd formally defines the communication protocols that each of the servers understands, so that it is possible for different servers to implement the same interface.

The GNU C Library provides a POSIX environment on the Hurd, by translating standard POSIX system calls into interactions with the appropriate Hurd server.

History
=======

Richard Stallman (RMS) started GNU in 1983, as a project to create a complete free operating system.  In the text of the GNU Manifesto, he mentioned that there is a primitive kernel.  In the first GNUsletter, Feb. 1986, he says that GNU's kernel is TRIX, which was developed at the Massachusetts Institute of Technology.

By December of 1986, the Free Software Foundation (FSF) had ``started working on the changes needed to TRIX'' [Gnusletter, Jan. 1987]. Shortly thereafter, the FSF began ``negotiating with Professor Rashid of Carnegie-Mellon University about working with them on the development of the Mach kernel'' [Gnusletter, June, 1987].  The text implies that the FSF wanted to use someone else's work, rather than have to fix TRIX.

In [Gnusletter, Feb. 1988], RMS was talking about taking Mach and putting the Berkeley Sprite filesystem on top of it, ``after the parts of Berkeley Unix... have been replaced.''

Six months later, the FSF is saying that ``if we can't get Mach, we'll use TRIX or Berkeley's Sprite.''  Here, they present Sprite as a full-kernel option, rather than just a filesystem.

In January, 1990, they say ``we aren't doing any kernel work.  It does not make sense for us to start a kernel project now, when we still hope to use Mach'' [Gnusletter, Jan. 1990].  Nothing significant occurs until 1991, when a more detailed plan is announced:

     ``We are still interested in a multi-process kernel running on top of
     Mach. The CMU lawyers are currently deciding if they can release Mach
     with distribution conditions that will enable us to distribute it. If
     they decide to do so, then we will probably start work. CMU has
     available under the same terms as Mach a single-server partial Unix
     emulator named Poe; it is rather slow and provides minimal
     functionality. We would probably begin by extending Poe to provide full
     functionality. Later we hope to have a modular emulator divided into
     multiple processes.'' [Gnusletter, Jan. 1991].

RMS explains the relationship between the Hurd and Linux in http://www.gnu.org/software/hurd/hurd-and-linux.html, where he mentions that the FSF started developing the Hurd in 1990.  As of [Gnusletter, Nov. 1991], the Hurd (running on Mach) is GNU's official kernel.

GNU General Public License
==========================

     [file gpl.texinfo not included]

Installing
**********

Before you can use the Hurd on your favorite machine, you'll need to install all of its software components.  Currently, the Hurd only runs on Intel i386-compatible architectures (such as the Pentium), using the GNU Mach microkernel.

If you have unsupported hardware or a different microkernel, you will not be able to run the Hurd until all the required software has been ported to your architecture.  Porting is an involved process which requires considerable programming skills, and is not recommended for the faint-of-heart.  If you have the talent and desire to do a port, contact bug-hurd@gnu.org in order to coordinate the effort.

Binary Distributions
====================

By far the easiest and best way to install the Hurd is to obtain a Debian GNU/Hurd binary distribution.  Even if you plan on recompiling the Hurd itself, it is best to start off with an already-working GNU system so that you can avoid having to reboot every time you want to test a program.