What is the GNU Hurd?

The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). More detailed.

What is the mission of the GNU Hurd project?

Our mission is to create a general-purpose kernel suitable for the GNU operating system, which is viable for everyday use, and gives users and programs as much control over their computing environment as possible. Our mission explained.


News

GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8 released. Details.

We're pleased to announce new releases!

  • GNU Hurd 0.9, NEWS:

    Version 0.9 (2016-12-18)
    
    
    The 'boot' program can now be run as unprivileged user, allowing any
    user to create unprivileged Subhurds.
    
    
    An ethernet multiplexer (eth-multiplexer translator) has been merged
    into this repository.  This is a network multiplexer that makes
    available virtual interfaces, and routes traffic between these and a
    real ethernet interface.  It uses the Berkeley Packet Filter library
    (libbpf), which has also been merged.  The ethernet multiplexer now
    generates and uses stable pseudo-random ethernet addresses for the
    virtual interfaces.
    
    
    As usual, bugs have been fixed throughout the code, notably in
    libpager and ext2fs which now gracefully handles running out of space.
    Further compatibility fixes have been applied (for compliance to
    standards such as POSIX).
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/hurd/, http://ftp.gnu.org/gnu/hurd/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/hurd.git. SHA1 checksums:

    7e6f406e5202501216a0da4b4ee7914f1e0a7552  hurd-0.9.tar.bz2
    ffa8d40a99835824a0228bf54570c054d7fe8bf0  hurd-0.9.tar.bz2.sig
    ef999452b794d7239a5ed98999def51bf11c8c17  hurd-0.9.tar.gz
    5f5d34bbbe8cccafbe79f13103d7e48b3a2baddf  hurd-0.9.tar.gz.sig
    

    The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). More detailed: documentation, what is the GNU Hurd.

  • GNU Mach 1.8, NEWS:

    Version 1.8 (2016-12-18)
    
    
    The memory management system was extensively reworked.  A new type for
    physical addresses is now used where appropriate, and the system can
    make use of the high memory segment.  Many paging issues have been
    addressed, and as a result the system handles low memory situations
    more gracefully now.
    
    
    The virtual memory system now uses a red-black tree for allocations,
    and as a result it now supports tasks with tens of thousands of
    mappings.
    
    
    Debugging and error reporting has been improved.  Among other things
    the VM maps are now augmented with names that are used in error
    messages, panics and assertions point to their locations, the lock
    debugging mechanism has been fixed, and the kernel debugger can now
    inspect stack traces reaching into the machine-dependent bits
    implemented in assembler.
    
    
    As usual, bugs have been fixed throughout the code, including minor
    issues with the gsync synchronization mechanism which is now used for
    the internal locks in the GNU C Library (glibc).
    
    
    The deprecated external memory management interface has been removed.
    
    
    The partial ACPI support has been removed.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/gnumach/, http://ftp.gnu.org/gnu/gnumach/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/gnumach.git. SHA1 checksums:

    4b59c7f7bc814576d2b88c43c0cdba292824f230  gnumach-1.8.tar.bz2
    e6262e991a1e056bb87741a9456811cf73e8f7cd  gnumach-1.8.tar.bz2.sig
    8cbebcbee624c64d926de8779272821c67663da5  gnumach-1.8.tar.gz
    28c4a65db3c04bf7508b74a187a3d6aae3a5ce31  gnumach-1.8.tar.gz.sig
    

    GNU Mach is the GNU distribution of the Mach microkernel, upon which a GNU Hurd system is based. The microkernel provides an Inter Process Communication (IPC) mechanism that the Hurd uses to define interfaces for implementing in a distributed multi-server fashion the services a traditional operating system kernel provides. More detailed: documentation.

  • GNU MIG 1.8, NEWS:

    Version 1.8 (2016-12-18)
    
    
    A spurious warning in the generated code has been fixed.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/mig/, http://ftp.gnu.org/gnu/mig/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/mig.git. SHA1 checksums:

    f765881d6ed4e883372eee52fd7842e7048a3da8  mig-1.8.tar.bz2
    2091b6632176eeba1dac524d0ae939334ed51fdb  mig-1.8.tar.bz2.sig
    40ae7a5a12e3e5669a2c449be7ebe53c72c90b3a  mig-1.8.tar.gz
    054ca62368fb7d8e95ca1447510905e3df8906d8  mig-1.8.tar.gz.sig
    

    GNU MIG is the GNU distribution of the Mach 3.0 Interface Generator (MIG). This tool translates Remote Procedure Call (RPC) definition files to C code, and is required to compile any packages that are receiving or invoking RPCs, such as GNU Mach, GNU Hurd, and the GNU C Library (glibc) when compiled for the Hurd. More detailed: documentation.

  • glibc-2.23-hurd+libpthread-20161218

    Based on the glibc 2.23 release, we include additional changes for GNU Hurd support, and bundle GNU Hurd's libpthread.

    Snapshot tarballs may be downloaded from ftp://alpha.gnu.org/gnu/hurd/, http://alpha.gnu.org/gnu/hurd/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/glibc.git and http://git.savannah.gnu.org/cgit/hurd/libpthread.git. SHA1 checksums:

    55c9b6c61991a9ea585f019c787fe0e1da756cd4  glibc-2.23-hurd+libpthread-20161218.tar.bz2
    1475fff2029fcd2c655d6ea05af5efa74d224b4f  glibc-2.23-hurd+libpthread-20161218.tar.bz2.sig
    870425f4398b514ecac06e88fc21e13536eece4f  glibc-2.23-hurd+libpthread-20161218.tar.gz
    e8c9c6ba34cd4bbabb8fadd28f335430ca88ff0b  glibc-2.23-hurd+libpthread-20161218.tar.gz.sig
    

    The GNU C Library (glibc) implements a system's standard library functions (as described by ISO C, and POSIX, for example). An important part of the Hurd actually resides in glibc: here, the system interfaces are implemented on top of the Hurd IPC protocols. This is different to the Linux port, where most simple system interfaces are in fact simply forwarded to/implemented as system calls.

Many thanks to all the people who are helping!

If you want to give the Hurd a try, you may easily do so with Debian GNU/Hurd.

The GNU Hurd system currently runs on 32-bit x86 machines. To compile the Hurd, you need a toolchain configured to target i?86-gnu; you cannot use a toolchain targeting GNU/Linux.

Please read the FAQ. Bug reports should be sent to bug-hurd or filed on http://savannah.gnu.org/bugs/?group=hurd. Requests for assistance should be sent to help-hurd or filed on http://savannah.gnu.org/support/?group=hurd. You can also find us on the Freenode IRC network in the #hurd channel.

GNU Hurd 0.8, GNU Mach 1.7, GNU MIG 1.7 released. Details.

We're pleased to announce new releases!

  • GNU Hurd 0.8, NEWS:

    Version 0.8 (2016-05-18)
    
    
    The netfs library is using the lockless reference-counting primitives
    for both peropen and node objects now, and the global reference
    counting lock has been removed.
    
    
    The integer hashing library gained a new interface to use non-integer
    keys.  It is now used in libdiskfs' and nfs' node cache, and the ftpfs
    translator.
    
    
    Several bugs in our native fakeroot tool have been fixed improving
    stability and correctness of the translation.
    
    
    The devnode translator and the hurd-slab library have been merged into this
    repository.
    
    
    The code has been cleaned up, and we fixed numerous bugs, most notably
    a crash in pfinet, a locking bug in libdiskfs, and an out-of-bounds
    access in ext2fs' block cache.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/hurd/, http://ftp.gnu.org/gnu/hurd/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/hurd.git. SHA1 checksums:

    38585aed93645704477d91d01136e1ae750a5ecb  hurd-0.8.tar.bz2
    531d5035427830e87828a79bf6794531250784d0  hurd-0.8.tar.bz2.sig
    6383479f30933d760c6d981fdd37df27adb5f0bb  hurd-0.8.tar.gz
    63f58d392cb6e0c0ebd71e725938a13a5cab2392  hurd-0.8.tar.gz.sig
    

    The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). More detailed: documentation, what is the GNU Hurd.

  • GNU Mach 1.7, NEWS:

    Version 1.7 (2016-05-18)
    
    
    The code has been updated to work with newer versions of GCC, and numerous bugs
    have been fixed throughout the code, including a pageout deadlock.  The code
    uses integer types from <stdint.h> now instead of the old Mach types.
    
    
    The VM cache policy change has been merged.  The kernel now caches
    unreferenced VM objects unconditionally instead of using a fixed
    limit.
    
    
    The physical page allocator of the X15 kernel has been integrated, and
    is now used directly by the slab allocator.  This increases the kernel
    heap addressing important scalability issues.
    
    
    The gsync synchronization mechanism was added, similar to the Linux kernel's
    futexes, to allow efficient and powerful userland synchronization.
    
    
    Support for profiling kernel code from userland through sampling was added.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/gnumach/, http://ftp.gnu.org/gnu/gnumach/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/gnumach.git. SHA1 checksums:

    4438c7c10f8eef019ada45b749c0796d620d08de  gnumach-1.7.tar.bz2
    6cdf299118066e3280dcc68f75477659fc783f7d  gnumach-1.7.tar.bz2.sig
    5474b2cdc01cb002149db08d745fdab741470c65  gnumach-1.7.tar.gz
    018aa0551e87c4b5eeb900934491811f46ab8b78  gnumach-1.7.tar.gz.sig
    

    GNU Mach is the GNU distribution of the Mach microkernel, upon which a GNU Hurd system is based. The microkernel provides an Inter Process Communication (IPC) mechanism that the Hurd uses to define interfaces for implementing in a distributed multi-server fashion the services a traditional operating system kernel provides. More detailed: documentation.

  • GNU MIG 1.7, NEWS:

    Version 1.7 (2016-05-18)
    
    
    MIG now has a test suite.  It includes a set of valid and invalid
    definition files that MIG will try to process.  For valid
    definitions, GCC will compile the stubs to check if valid C code was
    generated.
    
    
    The generated code uses integer types from <stdint.h> now instead of
    the old Mach types.
    
    
    Code that was hard-coding the word size has been identified and
    fixed.
    
    
    Support for the obsolete kinds of RPC routines 'functions',
    'procedures', and 'simple procedures' has been removed.
    
    
    MIG now emits code that casts objects translated from capabilities
    to the correct C type.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/mig/, http://ftp.gnu.org/gnu/mig/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/mig.git. SHA1 checksums:

    25d87f0271678d044a8af1f45492a96bee32e486  mig-1.7.tar.bz2
    481dce92b8eb718231bf9d409c0e0c9337dc1f90  mig-1.7.tar.bz2.sig
    f1bd05d1b353653f49dbbb44a4624e65c7be0a2e  mig-1.7.tar.gz
    59f71517cd1be26635a27da423bcf75e2399a42e  mig-1.7.tar.gz.sig
    

    GNU MIG is the GNU distribution of the Mach 3.0 Interface Generator (MIG). This tool translates Remote Procedure Call (RPC) definition files to C code, and is required to compile any packages that are receiving or invoking RPCs, such as GNU Mach, GNU Hurd, and the GNU C Library (glibc) when compiled for the Hurd. More detailed: documentation.

  • glibc-2.19-hurd+libpthread-20160518

    Based on the glibc 2.19 release, we include additional changes for GNU Hurd support, and bundle GNU Hurd's libpthread.

    Snapshot tarballs may be downloaded from ftp://alpha.gnu.org/gnu/hurd/, http://alpha.gnu.org/gnu/hurd/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/glibc.git and http://git.savannah.gnu.org/cgit/hurd/libpthread.git. SHA1 checksums:

    3722b7f52aac89c66f064e1e6d19ec9b92ffc9e0  glibc-2.19-hurd+libpthread-20160518.tar.bz2
    69dfe1297013056b4b0d6436a1b3906c1bb67a52  glibc-2.19-hurd+libpthread-20160518.tar.bz2.sig
    2795bacc85c799a028577089c422ff4ef9b876bc  glibc-2.19-hurd+libpthread-20160518.tar.gz
    a7af1d2500f35413003f08801e258f3666dfcb87  glibc-2.19-hurd+libpthread-20160518.tar.gz.sig
    

    The GNU C Library (glibc) implements a system's standard library functions (as described by ISO C, and POSIX, for example). An important part of the Hurd actually resides in glibc: here, the system interfaces are implemented on top of the Hurd IPC protocols. This is different to the Linux port, where most simple system interfaces are in fact simply forwarded to/implemented as system calls.

Many thanks to all the people who are helping!

If you want to give the Hurd a try, you may easily do so with Debian GNU/Hurd.

The GNU Hurd system currently runs on 32-bit x86 machines. To compile the Hurd, you need a toolchain configured to target i?86-gnu; you cannot use a toolchain targeting GNU/Linux.

Please read the FAQ. Bug reports should be sent to bug-hurd or filed on http://savannah.gnu.org/bugs/?group=hurd. Requests for assistance should be sent to help-hurd or filed on http://savannah.gnu.org/support/?group=hurd. You can also find us on the Freenode IRC network in the #hurd channel.

2016-03-18-gsoc

The Google Summer of Code 2016 is on! If you're a student, consider applying for a GNU Hurd project -- details to be found on our GSoC and project ideas pages.

GNU Hurd 0.7, GNU Mach 1.6, GNU MIG 1.6 released. Details.

We're pleased to announce new releases!

  • GNU Hurd 0.7, NEWS:

    Version 0.7 (2015-10-31)
    
    
    The node cache in ext2fs has been improved, generalized, and moved to
    libdiskfs.  It is now also used by isofs and fatfs.
    
    
    The native fakeroot tool has been greatly improved.  It now handles
    named sockets, and multiple corner cases related to permissions were
    identified and fixed.
    
    
    A new utility `rpcscan' has been introduced.  It scans Mach servers
    and displays the RPCs handled by the associated demuxer.
    
    
    A long-standing synchronization issue involving the filesystem
    translators, libdiskfs, and libpager has been identified and fixed.
    
    
    The code has been updated to work with newer versions of the compiler
    and libc, and numerous bugs have been fixed throughout the code.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/hurd/, http://ftp.gnu.org/gnu/hurd/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/hurd.git. SHA1 checksums:

    a735a07687f7996face3bd310af2254192a02f40  hurd-0.7.tar.bz2
    d10b3c1de191ac88425aa30a03c4130e2a883b14  hurd-0.7.tar.bz2.sig
    62032e04bf6b22e4c874772f1f77d5678d916054  hurd-0.7.tar.gz
    7fafd66e0003ea3768f76bd597e617bdc202e312  hurd-0.7.tar.gz.sig
    

    The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). More detailed: documentation, what is the GNU Hurd.

  • GNU Mach 1.6, NEWS:

    Version 1.6 (2015-10-31)
    
    
    The code has been updated to work with newer versions of the compiler,
    and numerous bugs have been fixed throughout the code.
    
    
    The lock debugging infrastructure has been revived and improved, and
    many locking issues have been fixed.
    
    
    The IPC tables and the hash table mapping objects to IPC entries have
    been replaced by radix trees.  This addresses a scalability issue, as
    IPC tables required huge amounts of continuous virtual kernel memory.
    
    
    The kernel now allows non-privileged users to wire a small amount of
    memory.
    
    
    A bug hindering the eviction of inactive pages by the pageout daemon
    has been identified and fixed.
    
    
    The kernel now keeps timestamps relative to the system boot time.
    Among other things this fixes bogus uptime readings if the system time
    is altered.
    
    
    A reference leak in the exception handling mechanism has been
    identified and fixed.
    
    
    ANSI escape sequences are now handled when using `printf'.  This fixes
    the formatting of messages printed by various Linux drivers.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/gnumach/, http://ftp.gnu.org/gnu/gnumach/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/gnumach.git. SHA1 checksums:

    73e09c43955ef2e3459b2877b5e6d6bbe517b8c3  gnumach-1.6.tar.bz2
    96ff426b3b94acf327a88f25c80ab5b5f26ed94a  gnumach-1.6.tar.bz2.sig
    448cd88974a5264736c900691c9ab62a810aff28  gnumach-1.6.tar.gz
    e06e733ad11f2e048dd9ad3348c2d3100be26078  gnumach-1.6.tar.gz.sig
    

    GNU Mach is the GNU distribution of the Mach microkernel, upon which a GNU Hurd system is based. The microkernel provides an Inter Process Communication (IPC) mechanism that the Hurd uses to define interfaces for implementing in a distributed multi-server fashion the services a traditional operating system kernel provides. More detailed: documentation.

  • GNU MIG 1.6, NEWS:

    Version 1.6 (2015-10-31)
    
    
    MIG now emits RPC lookup functions that are declared `static inline'
    improving compatibility with newer dialects of C.
    

    Release tarballs may be downloaded from ftp://ftp.gnu.org/gnu/mig/, http://ftp.gnu.org/gnu/mig/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/mig.git. SHA1 checksums:

    a9a4b5666834afe8fb861453c5b3ef324201f1d3  mig-1.6.tar.bz2
    93562c45bbda40ad31f74f6f2fd0c064ef8f0ec5  mig-1.6.tar.bz2.sig
    6e937a35229da02e9e739d75a03020e24a1b5297  mig-1.6.tar.gz
    fc25bb9652406675fed63c4581493a6fc39d9690  mig-1.6.tar.gz.sig
    

    GNU MIG is the GNU distribution of the Mach 3.0 Interface Generator (MIG). This tool translates Remote Procedure Call (RPC) definition files to C code, and is required to compile any packages that are receiving or invoking RPCs, such as GNU Mach, GNU Hurd, and the GNU C Library (glibc) when compiled for the Hurd. More detailed: documentation.

  • glibc-2.19-hurd+libpthread-20151031

    Snapshot tarballs may be downloaded from ftp://alpha.gnu.org/gnu/hurd/, http://alpha.gnu.org/gnu/hurd/, or checked out of Git, http://git.savannah.gnu.org/cgit/hurd/glibc.git and http://git.savannah.gnu.org/cgit/hurd/libpthread.git. SHA1 checksums:

    5b709297f8622444695f13723f77dfc8754b8ed9  glibc-2.19-hurd+libpthread-20151031.tar.bz2
    b970e604368fd80420ef029bb1c86fc2f7b2c382  glibc-2.19-hurd+libpthread-20151031.tar.bz2.sig
    68f02cd3890654588183539428253a12ff98ea0d  glibc-2.19-hurd+libpthread-20151031.tar.gz
    da8b38a9a9914a2dedba82a0cf353a4ce0ea30e7  glibc-2.19-hurd+libpthread-20151031.tar.gz.sig
    

    The GNU C Library (glibc) implements a system's standard library functions (as described by ISO C, and POSIX, for example). An important part of the Hurd actually resides in glibc: here, the system interfaces are implemented on top of the Hurd IPC protocols. This is different to the Linux port, where most simple system interfaces are in fact simply forwarded to/implemented as system calls.

Many thanks to all the people who are helping!

If you want to give the Hurd a try, you may easily do so with Debian GNU/Hurd.

The GNU Hurd system currently runs on 32-bit x86 machines. To compile the Hurd, you need a toolchain configured to target i?86-gnu; you cannot use a toolchain targeting GNU/Linux.

Please read the FAQ. Bug reports should be sent to bug-hurd or filed on http://savannah.gnu.org/bugs/?group=hurd. Requests for assistance should be sent to help-hurd or filed on http://savannah.gnu.org/support/?group=hurd. You can also find us on the Freenode IRC network in the #hurd channel.

Debian GNU/Hurd 2015 released! Details.

It is with huge pleasure that the Debian GNU/Hurd team announces the release of Debian GNU/Hurd 2015.

This is a snapshot of Debian "sid" at the time of the stable Debian "jessie" release (April 2015), so it is mostly based on the same sources. It is not an official Debian release, but it is an official Debian GNU/Hurd port release.

Read the announcement email.


The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). More detailed.

GNU Mach is the microkernel upon which a GNU Hurd system is based. It provides an Inter Process Communication (IPC) mechanism that the Hurd uses to define interfaces for implementing in a distributed multi-server fashion the services a traditional operating system kernel provides. More detailed.

Older news entries can be found in the news archive. For Hurd developers' musings have a look at the shared weblog. The recent changes page lists the latest changes of this website.

Contributing

So, you are interested in contributing to the GNU Hurd project? Welcome! Every single contribution is very much encouraged. Please read our detailed recommendations about how to contribute.

See our source repositories for the source code.

Access to a GNU/Hurd System

We provide accounts on our public Hurd boxen, and there are also QEMU images available.

Getting Help

There are a couple of different FAQ lists. There are a number of IRC channels and several different mailing lists with searchable archives.

Before asking a question on a mailing list or on IRC, first, please try to answer your own question using a search engine and reading the introductory information. If you have done this and you cannot find the answer to your question, feel free to ask on a mailing list or on IRC.

Running the Hurd

The most functional distribution of the Hurd is the one provided by Debian. Find more information about it at the Debian GNU/Hurd website.

Along with it there are various ways to run a GNU/Hurd system. Three of them are

And these web pages are a living proof of the usability of the Hurd, as they are rendered on a Debian GNU/Hurd system.

Current Status

The latest releases are GNU Hurd 0.9, GNU Mach 1.8, GNU MIG 1.8, 2016-12-18. The Hurd is developed by a few volunteers in their spare time. The project welcomes any assistance you can provide. Porting and development expertise is still badly needed in many key areas.

Functional systems are installable in a dual-boot configuration. Development systems are currently mostly based on the Debian GNU/Hurd port sponsored by the Debian project.

Community resources for related projects focus around these pages, http://hurd.gnu.org/, the mailing lists and the IRC channels.

If you want to see the current discussions in the Hurd project, please have a look at the bug-hurd mailinglist archives. If you want to have a look at the current coding work, you can just head over to our source repositories.

For more details, please read our writeup on the current state of the GNU Hurd.

Advantages and Challenges

The GNU Hurd operating system design provides advantages, but uncovers new challenges, too.


These pages are powered by ikiwiki.

Further information about this site and how it was created can be found in the colophon.