In addition to many other interesting events, this year's FOSDEM featured a GNU Hurd mini-symposium. On Saturday afternoon, a series of talks (most notably by Neal Walfield [interview] (audio) and Marcus Brinkmann (audio)) were delivered in the Hurd developers' room. During the weekend, more than a dozen Hurd hackers met to discuss further development, work on specific issues, and just have a good time together. OGG/Vorbis audio recordings are available for 5 of the 7 talks, along with their corresponding slides. In his summary, Neal writes: "the weekend was filled with rich exchange which I think has helped bring the community closer together and foster new ideas".
People attending included Marcus Brinkmann, Neal Walfield, Marco Gerards, Ognyan Kulev, Peter De Schrijver, Jeroen Dekkers, Bas Wijnen, Guillem Jover, Michael Banck, Barry deFreese, Robert Millan, Sören Schulze, Olaf Buddenhagen, Gaël Le Mignot, Manuel Menal, Marc Dequenes and Arnaud Fontaine. Most of the people stayed at a big appartment organized (as was the whole event) by Neal and Barry near the university where FOSDEM takes place. Most arrived Thursday or Friday for the pre-conference hacking party lasting from Thursday afternoon until 7am Saturday morning. Although a few people had already met each other in real life, this was probably the biggest gathering of Hurd hackers since Libre Software Meeting 2002.
Richard Stallman founded the GNU Project in 1984, and the Free Software Foundation in 1985. He also originally authored a number of well known and highly used development tools, including the GNU Compiler Collection (GCC), the GNU symbolic debugger (GDB) and GNU Emacs.
To better understand Richard Stallman and the GNU project, I recommend you begin by reviewing their philosophy page. On it you will find a wealth of information.
We began this interview via email, but later had to finish by telephone after Richard Stallman fell and broke his arm. He was kind enough to speak with me at length, discussing his first contact with computers, his time in the AI lab, the current state of the GNU Hurd, his current role in the Free Software Foundation, the problems with non-free software, and much more. The following words offer much insight into how we got here, and what challenges we still face.
Users and developers of the Hurd are in for a Christmas treat. The Hurd can now read JFS partitions. The current support is still limited, though. It has problems with permissions, special files; and the implementation is still sloppy, according to the information in the project's homepage.
Moritz Schulte announced that he has stopped working on the ShadowFS file system for the GNU/Hurd. Instead, he has begun working on a new, better designed filesystem under the name UnionFS, a name change suggested by Richard Stallman. Moritz says, "Compared with my former implementation, this one uses a completely new design approach."
One major improvement UnionFS offers over his previous ShadowFS implementation is the addition of caching. A second improvment is that you can now add and remove directory trees from/to the united tree during runtime with the fsysopts program, even the tree that underlies the node where UnionFS itself sits. The current code is still very much under development and certainly has its bugs and limitations, but seems to work well enough at least for some purposes when used in read-only mode.
The GNU/Hurd J2 images have been built and are availible online at...
Marcus Brinkmann announced to the bug-hurd mailing list, "The new Hurd console is now part of the source and of the latest Debian package. This is the time to let as many people as possible test it to get feedback and bug reports, before the development is continued."
The new Hurd console provides a number of new features, including: a console server providing any number of virtual consoles, accessed via console clients (multiple clients can attach to the same virtual console); a library to simplify console client creation, utilizing shared memory, broadcasts and a notification scheme intent on saving cpu power; and a default console client supporting dynamically loaded "drivers". Included drivers for the default client include: 'ncursew driver', supporting remote unicode-capable console connections; 'VGA driver', supporting multiple BDF fonts, dynamic glyph allocation and dynamic color allocation, all without requiring a graphical framebuffer; 'pc_kbd driver', a temporary replacement for xkb adding a US keymap; 'generic_speaker driver', adding simple built-in speaker support to the console. Read on for the full details, complete with installation instructions.
The Hurd interfaces have recently gone through an incompatible change to prepare support for long files. The consequence is a chicken and egg problem for upgrading to GNU/Hurd's libc 0.3. Marcus Brinkmann just posted an instruction summary on how to upgrade your existing Debian GNU/Hurd system, solving the cyclic dependency issue.
The GNU/Hurd J1 images have been built and are available online at ftp://ftp.gnu.org/iso/hurd-J1.
The full announcement follows.
The Hurd currently runs only on the Mach microkernel, but there is work to port it to the newer L4 microkernel. This article has the details about the current status of the Hurd/L4 port. It is primarily written for people familiar with Hurd/Mach, but who do not know L4.
Because of design differences between L4 and Mach (as is to be expected from 2 different kernels), a lot of infrastructural work still needs to be done; including a Virtual Memory Manager (VMM), getting glibc ported, and writing device drivers.
Every now and again, the subject of Netcraft's OS detection system (part of their uptime graphing service) is raised on a Hurd mailing list. A recent thread discussed Netcraft's inability to detect the Hurd as a webhost, instead reporting it as Linux. Oystein Viggen explained:
"Unfortunately, the similarity between the Linux TCP stack and ours (which is also basically the Linux TCP stack) was so big that their TCP fingerprinting was not able to discern between the two. Obviously, they preferred to continue recognizing Linux with the small penalty that the Hurd is falsly seen as Linux to having both be "unknown OS"."
The full discussion follows.
Roland McGrath recently announced version 1.3 of the GNU Mach kernel, offering several bug fixes. He also noted, "We are no longer actively developing version 1.x of GNU Mach. We plan to make only necessary bug fixes or trivial enhancements in the 1.x line, and make further 1.x releases only as necessary for those purposes." A new 2.x version of GNU Mach is under development, utilizing the University of Utah's OSKit.
One notable change in 1.3 is the support of large disks (>= 10GB). Additionally, 1.3 provides direct kernel support for "boot scripts". Roland's full email follows with further details.
Robert Millan recently made available an image [link temporarily removed] allowing a person to run the GNU/Hurd under the Bochs x86 emulator [earlier story about Bochs]. With very minimal effort, I launched the GNU/Hurd image with Bochs v0.4 and was then able to use the Hurd from within my Linux server. [screenshot]
As Bochs compiles on many platforms, this even allows non-x86 users to run the Hurd. Of course, the emulation is slow...
Update: (5/13/2) The link to the Hurd image for Bochs has been removed at this time. This was done at Robert's request, as the images are a work in progress, and not yet fully stable. Once ready, the image should be found here.
The GNU/Hurd home page says, "The Hurd 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)". Over time, however, this may change.
In a recent thread, Farid Hajji offered an update no the Hurd/L4 port. The goal here is to replace the aging Mach microkernel with the newer L4 microkernel. The effort is still in the early stages, Farid describing it so far as a "skeleton project". Current efforts use the Hazelnut implementation (v2), though the plan is to use Pistachio (v4) when it's ready, adding 64bit support.
More details can be found in Farid's email. Read on...
Guy Bormann posted a question to the help-hurd mailing list after bowsing Wolfgang Jahrling's Hurd Hacking Guide. The guide looks to be quite useful, saying about itself:
"This document is an introduction to GNU Hurd and Mach programming. The purpose of this guide is to help interested people start hacking the Hurd or extending it (by writing translators). It gives lots of references to the Hurd- or GNU Mach source files. It is recommended that you read through some of these sources. Indeed the Hurd sources are very well written and commented and you can learn a lot by reading them."
Guy's question relates to how various Mach libraries allocate memory, and when it's the progammer's responsibility to free such allocated memory. Marcus Brinkmann offers a detailed reply.