Hurd, the kernel that is supposed to form the basis of the GNU operating system, is perpetually a research project that doesn’t get anywhere close to being a replacement for Linux, but that doesn’t mean the project doesn’t make progress and has a place in the world of operating systems. Their most recent major improvement has been porting GNU Hurd to AArch64, spearheaded by Hurd developer Sergey Bugaev.
Since then, however, I have been (some may say, relentlessly) working on filling in the missing piece, namely porting GNU Mach (with important help & contributions by Luca D.). I am happy to report that we now have an experimental port of GNU Mach that builds and works on AArch64! While that may sound impressive, note that various things about it are in an extremely basic, proof-of-concept state rather than being seriously production-ready; and also that Mach is a small kernel (indeed, a microkernel), and it was designed from the start (back in the 80s) to be portable, so most of the “buisness logic” functionality (virtual memory, IPC, tasks/threads/scheduler) is explicitly arch-independent.
Despite the scary “WIP proof-of-concept” status, there is enough functionality in Mach to run userland code, handle exceptions and syscalls, interact with the MMU to implement all the expected virtual memory semantics, schedule/switch tasks and threads, and so on. Moreover, all of GNU Mach’s userspace self-tests pass!
↫ Sergey Bugaev
On top of all this, glibc works on the AArch64 port, and several important Hurd servers work as well, namely ext2fs, exec, startup, auth, and proc, as a do a number of basic UNIX programs. This is an exceptional effort, and highlights that while people tend to make fun of Hurd, it’s got some real talent working on it that bring the platform forward. While we may not see any widely usable release any time soon, every bit of progress helps and is welcome.
Speaking of progress, the progress report for GNU Hurd covering the first quarter of 2024 has also been published, and it lists a number of other improvements and fixes made aside from the AArch64 port. For instance, the console will now use xkbcommon instead of X11 for handling keyboard layouts, which reduced code complexity a lot and improved keyboard layout coverage, to boot. The port of GDB to the 64 bit version of Hurd is also progressing, and SMP has seen a ton of fixes too.
Another awesome bit of news comes from, once again, Sergey Bugaev, as he announced a new Hurd distribution based on Alpine Linux. Work on this project has only recently begun, but he’s already had some success and about 299 Alpine packages are available. His reasons for starting this new project is that while Debian GNU/Hurd is a great base to work from for Hurd users and developers, Debian is also a bit strict and arcane in its packaging requirements, which might make sense for Debian GNU/Linux, but is annoying to work with when you’re trying to get a lot of low-level work done. For now, there’s no name yet, and he’s asking for help from the Hurd community for name ideas, hosting, and so on.
That’s a lot of GNU Hurd progress this quarter, and that’s good news.
This is awesome news, it always amazes me how versatile Alpine is. It’s high on my list of “important to me” distros as it ticks a lot of my boxes: Small, independent, musl libc based, easy to configure, a sane and tiny init, and good for a wide range of uses from containers all the way up to desktops and bare metal servers.
These must be fun projects to work on which is enough justification for them of course. So do not take me too seriously.
That said, these projects are a bit confusing from an end-user stand-point.
GNU HURD on Alpine is hilarious. The most defining feature of Alpine Linux is that it does not use the GNU C Library and, as far as I can tell, the GNU C Library is the number one justification for labeling Linux distros as GNU / Linux. Should this distro be classified as a MUSL / HURD?
Perhaps the number one driver of the popularity of Alpine is its use in OCI containers. HURD does not support OCI containers of course. If you ran this distro in a container, you would eliminate the kernel ( eliminating HURD ).
Porting HURD to ARM is just funny because it does not even really run on x86-64 yet. That said, when RMS started GNU, the original target was probably the Motorola 68000. I love that ReactOS and SerenityOS are being ported to ARM. So, why not HURD too? Let’s get the RISC-V port going!
https://xkcd.com/1508/
I read my comment and I am afraid it came across wrong. It cannot be edited.
To be clear, the HURD distro they basing off Alpine will use glibc, not MUSL. So, my joke was somewhat offside anyway.
Their reasons for choosing Alpine as a base all make perfect sense, especially for an immature system like HURD.