GNU/Hurd


Recommended Posts

http://portal.wikinerds.org/gnu-hurd-l4-first-program

This screenshot shows Banner, the first software application that has been successfully executed on the Hurd/L4! (The screenshot was found at marcus-brinkmann.org - click on the image to see the full-size version. The window is the QEMU)

After hard development work and numerous code contributions, Marcus Brinkmann implemented process initialisation, the important internal functionality in the Hurd/L4 project that allows programs to be invoked through the activation of a process and the subsequent execution of software code by the computer. This means that the Hurd/L4 developers are now free to focus on implementing further features that will be directly visible to the end user, like executing more complex applications.

HURD/L4 is an ambitious project to port the already-functioning Hurd-Mach to the L4 microkernel.

The Hurd is a collection of servers running on top of the GNU Mach microkernel, implementing various services that operating systems usually offer, like file system access and networking. It is GNU's replacement for the Unix kernel, and currently it can support a graphics environment, is usable by experienced end users and is used by the Debian GNU/Hurd distribution. However, the implementation is still not appropriate for production environments or home end users.

GNU is a project started in 1985 by Richard M. Stallman for the creation of a Free operating system resembling Unix. Together with the Linux kernel (created by Linus Torvalds) it forms the core system of the numerous GNU/Linux distributions that are available today, like RedHat, SuSE, Mandrake, Debian, Gentoo, Slackware and many others.

GNU Mach and Hurd were in development from 1990, long before the GNU developers heard about Linux, but they decided to continue working on it because of its superior architecture. According to Richard Stallman's "Hurd and Linux" message: "Given the years of work we had already put into the Hurd, we decided to finish it rather than throw them away ... We hope its superior architecture will make free operating systems more powerful". HURD running on top of the GNU Mach microkernel first booted in 1994 and became GNU's official kernel, according to the Hurd history page.

Hurd Logo

However the developers later decided to port Hurd to the advanced L4 microkernel, which although very powerful and fast, the extra development needed for the transition slowed HURD development by years, but it never halted. The Hurd/L4 development is very active, as evidenced by the CVS commits mailing list and the CVS repository.

L4 is a second-generation microkernel originally developed by Dr. Jochen Liedtke who, while in Germany, had developed the previous L3 microkernel/OS and its predecessor, EUMEL. He unveiled the 12-Kbyte fast L4 microkernel after 1996 while working for IBM in New York City. Prof. Jochen Liedtke died unexpectedly on 10 June 2001, at the age of 48.

A microkernel is a minimalistic kernel which provides only the basic functionality needed to run special modules on top of it which provide the usual services of an operating system. The disadvantage of microkernels is that they generally run slower than monolithic kernels, although this didn't discourage Andrew Tanenbaum to debate with Linus Torvalds about a microkernel approach to Linux. L4 achieved an impressive breakthrough in microkernel performance by being highly customised for specific hardware architectures (and even for specific CPUs).

The development of the GNU/Hurd has important emotional and practical value to GNU fans because in 1990s GNU had not completed any kernel and used the Linux kernel out of necessity. Thus, a number of GNU fans feel that they will have "pure GNU" only with the Hurd kernel. The practical value of the GNU/Hurd is that it is built over a fast powerful microkernel, benefiting from the many advantages of that approach.

However, Hurd/L4 is not be the only software running on top of the powerful L4 microkernel: A version of the Linux kernel running on L4 already exists, and it is named L4Linux. The L4 developer community is very active and a modern implementation of L4 in C++ is the L4Ka::Pistachio microkernel developed by the System Architecture Group at the University of Karlsruhe (Germany) in collaboration with the DiSy group at the University of New South Wales, Australia.

In his recent message titled "TLS/TSD support and startup/initialization working" on the L4-HURD mailing list, Marcus Brinkmann says that important functions like malloc() now work. The invocation of programs is fully supported up to the main() function, and in his own words "TLS/TSD seems to work without any problems - important things like the default locale are set up correctly, and thus strerror() works. __thread variables are supported, glibc uses them itself".

Marcus Brinkmann happily emhasises that "we can now easily explore and develop the system in any way we want. - The dinner is prepared! :)".

The execution of the first user program on Hurd/L4 is a very important historic first step towards the completion of the ambitious project that strives to provide a fast L4-based microkernel for the GNU operating system.

The text of this article is © Copyright 2005 by Nikolaos S. Karastathis. The entire text is dual-licensed under the CC-By-SA2 (Creative Commons Attribution-ShareAlike 2.0 Licence) and the GFDL1.2 (GNU Free Documentation Licence 1.2 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts). You can republish the entire text as long as this copyright notice and the link to its original location remain intact.

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.