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

2011-q3

A quarter of the Hurd: Arch Hurd with DDE, Debian boxes, GHM talk and GSoC: Java. Details.

In the third quarter of 2011, the Arch Hurd hackers packaged DDE (Device Driver Environment), so a subset of the Linux 2.6 device drivers can now easily be run as user-space processes on Arch Hurd, replacing GNU Mach's in-kernel device drivers. (This has been possible before, too, but involved several manual steps.) At the time of writing, our DDE port supports several network cards, while for other driver types we will need to add further generic infrastructure. Also, Arch Hurd had a booth at FrOSCon and released a new Arch Hurd LiveCD, so new users can easily test the current state of the Arch flavor of the Hurd.

Richard Braun contributed additional GNU Hurd instances: a Debian buildd, a Debian porterbox, and a public Hurd box. Especially the last one is important for you: after requesting an account, you can use it to test the Hurd without any own setup.

Samuel Thibault sent a new Bits from the Debian GNU/Hurd porters to keep the Debian folks up to date with our progres. And it is quite good: thanks to the relentless work of our porters, you can now use 70 % of all Debian packages with the Hurd, so we're getting closer to the goal of finishing a Release Canditate in time for Debian Wheezy. If you can, for example, port Debian packages and want to help the Hurd, this is the perfect time to get in contact and port your favorite missing package to the Hurd.

A different kind of status update was delivered by Samuel Thibault on the GNU Hacker Meeting (GHM) in Paris. We hope you enjoy watching the video of the presentation by Samuel Thibault: GNU/Hurd, aka. Extensibility from the Ground (slides, video). He nicely explains how the simple yet powerful concept of a translator gives power to a system's less-priviledged users (that is, without root access), without any security implications, and how subhurds and neighborhurds compare to Linux containers. It's all about freedom 0.

On the technical side, Thomas Schwinge improved the technical documentation of the I/O path when translators are involved, to make it easier for new developers to understand how all the different system components interact. Amongst others, Guillem Jover, Fridolín Pokorný and Jonathan Neuschäfer sent many patches for GNU Mach, improving stability, fixing memory leaks and generally cleaning up the code.

Maksym Planeta finished a project he has been doing as a university task: replace GNU Mach's old zone memory allocator with a new slab allocator written by Richard Braun, who also mentored Maksym during the project. This allocator, apart from being overally cleaner than the zone allocator, is meant to waste less memory than the zone allocator (less fragmentation and more memory can be reclaimed by the VM system), there are debugging/inspection features, and it's SPM-ready, thus readily usable once we get up-do-date SMP support in GNU Mach. It is now being tested and integrated.

And last but definitely not least, Jérémie Koenig finished his Google Summer of Code project to improve Java support on GNU Hurd. All in all, he also improved the Hurd signalling code, ported OpenJDK and began designing and creating a library for Java bindings for Mach and Hurd which already allows writing a Hello World translator in Java. It is still pretty low-level, but it paves the way for extending the core of the Hurd with Java, which is one of the benefits of the Hurd's distributed multi-server architecture: different components of the operating system can be written in different programming languages; not just C, but also C++, Common Lisp, and now Java -- and more to come.

So if you want to help getting the Debian GNU/Hurd Release Candidate done, or want to dig deep into DDE to have more device drivers running as user-space processes, please get in contact -- and maybe already grab the source code.


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.

2011-q2-ps

A quarter of the Hurd, Q2 of 2011, PS: GNU Hurd Truths and Myths. Details.

After our last Quarter of the Hurd, Q2 of 2011 has been picked up by a bunch of news sites, blogs, and so on, discussions and speculations have been running all over the net:

We are happy to see that there is considerable interest in the Hurd; but we also saw some misunderstandings, false rumors, and outdated information floating around. Thus we will try to clarify the situation regarding some of the more common misunderstandings.

  • Debian GNU/Hurd strives to become an official Debian port: The Debian GNU/Hurd team is working hard to prepare a technology preview/release candidate for the next Debian release (Wheezy), to eventually become an official port alongside GNU/Linux and GNU/kFreeBSD -- but we don't know yet whether we will make it. This is also the understanding of (for example) Debian's spokesperson Alexander "Tolimar" Reichle-Schmehl: About Debian, The Hurd and Linux or in short: Yes, we will still have a Linux kernel. There is still substantial work necessary to indeed become a release candidate. If you want to help, please see our contributing page and the to do list maintained on http://wiki.debian.org/Debian_GNU/Hurd. We'd be happy to have you on board!

  • Java support for GNU Hurd is nearby: Jérémie Koenig is working on making a versatile Java programming environment available on GNU/Hurd as part of his Google Summer of Code project, focusing on OpenJDK 7. Experimental packages are already available. Also, Java support in GCC (via GCJ/ECJ) has been available before, which Jérémie also improved.

  • GNU Hurd supports X.Org, though a bit unstable: X support has been present for ages (anyone remember 1998's XFree86?), and X.Org also has been supported for a long time (for example, GNU Hurd support is explicitly mentioned in the X.Org 7.2 release announcement). It is true though that many modern graphic card drivers don't work anymore, as they require DRM (Direct Rendering Manager) support, so often only VESA is available. Also, X on the Hurd is somewhat unstable.

  • GNU Hurd has weaker device driver support than the Linux kernel: Most of the drivers we use today were imported from Linux 2.0 series. For network cards, Linux 2.6.29 drivers are available through DDE -- however, this is not fully integrated yet, so using these drivers needs manual setup for now (guide). Support for other driver types is also possible with DDE in principle, but it requires some not-trivial work for each additional class of drivers, so this can take some time to become available. (An additional benefit provided by DDE is that the device drivers run as regular user-space processes -- unlike the old drivers we were using so far, which are part of the underlying GNU Mach microkernel.)

  • The Hurd has SMP, but needs support for new chipsets: Both GNU Mach (the microkernel used by the Hurd), and the Hurd servers themselves come with SMP support. However, GNU Mach misses drivers for modern SMP chipsets, and there are also some SMP-related bugs in the implementation, so further work is needed for the Hurd to take advantage of multicore processors.

  • Installation can still be challenging: Please take notice of the README file -- just like with any software in development, there are some known pitfalls to avoid. (Or better yet, help to fix.) :-) Alternatively, you can simply use the the preinstalled image in QEMU/KVM/VirtualBox/...

  • GNU Hurd is not the same as GNU/Hurd: The GNU project set out in 1983 to create a complete free operating system. When a distribution such as Debian combines their GNU-based userland with the GNU kernel (named GNU Hurd), the result is more or less a full GNU system. However, such third-party distributions are distinct from what an official complete GNU system release would be; and thus we often call them GNU/Hurd for clarity, similar to GNU/Linux or GNU/kFreeBSD.

  • Performance: The benchmarks conducted by Phoronix (as reported by Michael Larabel (Phoronix): Test Driving GNU Hurd, With Benchmarks Against Linux) (Phoronix/Michael: thanks for doing these!) attest very good performance to the Hurd. Keep in mind though that these benchmarks were almost completely CPU-bound, so they essentially just confirm that we don't do anything stupid regarding CPU initialization (cache setup, etc.). The results would be different for benchmarks that actually exercise the operating system functionality more. The fact that the tests were performed in a virtualized environment, might also have helped the results, for example by mitigating the effects of our unoptimized I/O paths -- which are currently the major bottleneck in most situations. Nevertheless, these results are a hint that the extra IPC required in microkernel systems doesn't necessarily hamper performance quite as much as often believed. We are glad to see such solid benchmarks help dispel some of the myths around the Hurd and other microkernel-based systems.

  • Given the available manpower, the progress is very good: Over the past decade, there were seldom more than half a dozen developers at any given time hacking on the Hurd, in their spare time -- not hundreds of paid developers like Linux has nowadays. Considering this, the progress made is quite encouraging with the system being pretty usable for many day-to-day tasks now. It is generally understood that the ambitious architecture of the Hurd requires a lot of effort to get it working at all, but the recent progress shows that once the foundations are in place, the Hurd design indeed allows the developers to be very productive. To see the progress over the last few years, you can have a look at our news archive. If you're interested, you can find various ways of contributing. We'd be happy to see you join in, because for the Hurd, every single helping hand makes a big difference!

2011-q2

A quarter of the Hurd, Q2 of 2011: Graphical Installer, GSoC, and Debian. Details.

Update:

A quarter of the Hurd, Q2 of 2011, PS has been published.

Jérémie Koenig started working on his Google Summer of Code project: bringing not only Java to the Hurd, but also fixing or adding missing parts in the Hurd's components along the way. For example, he already contributed a set of signal handling improvements.

Samuel Thibault created the first Debian GNU/Hurd CD set with a graphical installer. You can dowload it at the usual place for Debian CD images.

Amongst others, Samuel also tracked down and fixed a port leak in file_reparent. This one got visible on the Debian package builder machine.

On the organizational side, there is now a real plan to release a Hurd variant of Debian with their next major release, Wheezy. Expected towards the end of 2012 or beginning of 2013, the Hurd-specific bits of that release effort's process are being tracked on http://wiki.debian.org/Debian_GNU/Hurd. There is still a lot of work left to be done, but -- as everyone knows -- a real goal as well as a bit of pressure might help to actually get it done. If you want to lend a helping hand in order to make this happen, porting packages is a great way to get started and do something useful at the same time.

Tanguy le Carrour offered to sponsor some Hurd work, and followed up on his offer by adding to the Hurd bounties that Thomas Schwinge had set up over at on FOSS Factory -- claim them if you can! It's not (not yet?) comparable to a Google Summer of Code student's salary, but a step into the right direction. So, if you have more money than time and want the Hurd to advance, why don't you join Tanguy?

At the end of August, Hurd folks will be meeting at the GNU Hackers Meeting in Paris. Samuel Thibault will be giving a talk (GNU/Hurd, aka. Extensibility from the Ground), and -- amongs others -- Jérémie Koenig will be there too, ready to answer all the questions about his Java/Hurd Google Summer of Code work.

Hey, I have more money than time or programming skills, and I'd like to help GNU Hurd development specifically -- how can we arrange for this, where can I donate money for GNU Hurd development?

If you're dwelling on such thoughts, here is the answer; here you can donate money for GNU Hurd development. Read on.

As its principal idea, FOSS Factory, means to serve as a hub and organizational platform for connecting Free/Open Source Software developers with monetary sponsors. From http://www.fossfactory.org/aboutus.php:

FOSS Factory's mission is to accelerate the advancement of free/open source software by helping people collaborate on the design, funding, and development of innovative software ideas. All software solutions produced using our system are released under free/open source licenses. Our unique model brings the best of innovators from both the entrepreneurial and FOSS worlds together to solve real world problems using the mass resources of the FOSS community.

In very general words, their modus operandi is that the community (including the monetary sponsors) works together with the developers on splitting up tasks into suitable and assessable sub-projects as necessary, and then act as the reviewing instance, deciding on such sub-projects' success (and payment, successively). For more details see their System Overview.

For now, we can assume that the amount of money to be made by working on a GNU Hurd task in this framework is likely to be a symbolic amount only, rather than being representative for the real effort that needs to be invested. Software development is expensive, mostly due to the amount of time that is needed for completing any non-trivial task. Instead, these bounties should be regarded as an attraction/reward, perhaps also simply as a motivation for a developer to focus on one specific problem, and bringing it to completion.

Working on a task and/or suggesting/donating for a new task.

In principle, any Hurd-related development task is applicable (for example, from the GSoC project ideas, or from the open issues list), but it is of course recommendable to match sponsors' ideas with those of the developers and maintainers. For this, if you want to sponsor a project, but don't know which one to choose, or if you want to work on a bounty that is not yet listed on the site, we suggest that you talk to us first, either publically on the bug-hurd mailing list or privately on hurd-maintainers@gnu.org, if you prefer.

Both for supporting (donating) as well as claiming a bounty, you have to register at their site, and proceed from there. Please don't hesitate to ask Thomas Schwinge if you need help.

Continue to explore the list of open bounties.


This new installment is in no way meant to depreciate the developers' current, un-paid, efforts. It is also not meant to replace the volunteer work in the long term. Neither is it meant to trick the general FSF fund raising out of a few dollars. Instead, this is simply an additional means, a place for donators to give money for Hurd-specific tasks.

Everyone of the existing crew is eligible to do coding under this bounty system, but we also hope to attract new developers -- in a sense similar to our many years of participation in the Google Summer of Code.

Participation in/use of FOSS Factory's services has explicitly been set up personally by me, Thomas Schwinge; there is no inherent connection to the GNU Hurd maintainers. This also means that each contribution that comes to life out of FOSS Factory's framework is subject to the same rules/review process as any other contribution has always been.

Unless willing to discuss these publically, any concerns, questions, requests regarding this system can always be addressed directly to me.

2011-q1

A quarter of the Hurd, Q1 of 2011: GSoC, and new faces. Details.

We're again participating in the Google Summer of Code's 2011 edition. If you know someone who knows that her neighbor would be interested in getting mentored (by us) and paid (by Google) for working on a GNU/Hurd task, please hurry up: the student application period will end this Friday, 2011-04-08.

There's further progress to be reported on the package porting front: additionally to the usual suspects, Svante Signell has actively started with contributing by fixing or porting his favorite packages to GNU/Hurd. Welcome, Svante!

Amongst other fixes, Diego Nieto Cid submitted his work for using XKB's keymaps for the Hurd console. Of course, he was not the only one to contribute fixes; there's always our bunch of folks who appear every other month, or week, and send in some contribution. Also, as we ask our GSoC applicants to submit patches in order to substantiate their application, we've seen some additional ones due to that. (And you can, too.)

The Arch Hurd folks published their Year of Arch Hurd report, wrapping up their progress, including GHAMP (GNU/Hurd, Apache, MySQL, and PHP), X.org, and their Arch Hurd LiveCD. We had published our YotH 2010, too.

Finally we got a nice recognition (or did they mean...) by xkcd, How to Write Good Code, subtitled You can either hang out in the Android Loop or the HURD loop. Go figure! ;-)

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

There has not yet been an official 1.0 release. 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.