2026-q2
GNU Hurd/
news/
2026-q2
Recent Changes
Preferences
Edit
History
Source
?Discussion
Welcome to... ... the GNU Hurd!
Home
Community
Contact Us
Donate
Contributing
Source Code
Public Hurd Boxen
QEMU Images
Getting Help
Project Ideas
Open Issues
Documentation
FAQ
Hurd
Documentation
Building
Running
Mach
Documentation
GNU Mach
Building GNU Mach
MIG
Documentation
GNU MIG
Building GNU MIG
Debian GNU/Hurd
Guix GNU/Hurd
Arch GNU/Hurd
Gentoo GNU/Hurd
GNU System
Hurd NG
Hello and welcome to another Qoth! Here's what's been happening in Q2<br>of 2026!
Joshua Branson added a pretty cool svg logo for our ethernet<br>multiplexor. He built that image<br>with Inkscape whilst using a Hurd laptop (Thinkpad 420) running on<br>real iron! The Hurd wiki could certainly use more artwork. Perhaps<br>you have a favorite Hurd translator that you believes needs some<br>artwork!
Sergey Bugaev announced his WIP<br>9pfs<br>(source code),<br>and it has a wiki page! He writes:
Some years ago, I experimented with implementing a 9P translator for<br>the Hurd. Hopefully there is no need to tell this list what 9P is :)
Besides just browsing files on the few existing servers out there, a<br>potential use case is virtio-9p, to enable shared directory trees<br>between VMs and the host. But that would need someone to implement<br>virtio support in the Hurd.
I wanted to complete 9pfs before publishing, but that ultimately<br>didn't happen, so now it's time to turn it over to the community. I<br>now went and made the repository public on GitHub:<br>https://github.com/bugaevc/9pfs
What's implemented is basic browsing (readdir, stat), path resolution<br>(dir_lookup), and reading files (io_read). And below that, the whole<br>tracking for nodes, peropens, protids, fids, tags, and 9p RPCs.
Improvements are welcome, send patches to this list with [PATCH 9pfs]<br>in the subject. A good starting point would be to continue porting<br>things that I had implemented in the old netfs-based version (see<br>netfs.c) but didn't yet port to the new one.
He then got a little more motivated, and he added some write support!
Etienne Brateau added<br>validation<br>to msync, so<br>that the Hurd better follows POSIX.
Diego Nieto Cid worked on allowing privileged users to set their task<br>priority (nice value). His patches landed in<br>glibc<br>and GNU<br>Mach.<br>He also fixed a tiny<br>bug<br>in our test suite. He fixed an adjtime bug, which is helpful to the<br>OpenNTPD<br>port,<br>and he fixed<br>two more<br>bugs.
Paulo Duarte sent a RFC patch series trying to commit Sergey’s<br>previous AArch64 work. He writes:
This series adds the gnumach kernel-side implementation for the<br>aarch64 ABI Sergey landed in April 2024, plus the test-suite arms.<br>Patch 01 brings in the aarch64-only sources from bugaevc/wip-aarch64<br>verbatim, with Sergey as Author; the rest is mine.
The meaningful divergence from wip-aarch64 is what I left out:<br>roughly 150 files of cross-arch refactoring across kern/, ipc/, vm/,<br>device/intr.{c,h}, and the i386 tree. Each got replaced with a<br>smaller per-arch shim under aarch64/ so kern/bootstrap.c,<br>device/intr.{c,h}, kern/lock.h, and the i386 trees all stay<br>bit-identical to current master. The shared-file footprint outside<br>aarch64/ is four files: a new ELF constant, two missing decls plus<br>their include, and a linker-symbol filter extension...
Tested: 12/12 pass on x86_64, i686, and aarch64 under qemu. No<br>bare-metal validation yet. I plan to build bootable images and boot<br>the kernel on Apple M1 / Raspberry Pi (aarch64) and an x86_64 box<br>(x86_64 + i686). Help on any of these welcome.
He also fixed a tiny cross compilation issue.
gfleury fixed some tmpfs<br>typos.<br>He also fixed a kernel crash on a null pointer<br>deference.
Almudena Garcia is developing a WIP trivfs implementation in<br>rust. The work is<br>not complete yet, but it is possible to write Hurd translators in Rust!
Mikhail Karpov added some checks for mmap in several places.<br>He also worked on adding storeio to the bootstrap<br>chain.<br>This is actually quite interesting. Currently the Hurd sets device<br>entries in /dev/ statically. For example, I am writing this qoth on<br>a Hurd machine that is using two /dev/ entries for my filesystem:<br>/dev/wd0s1 for swap and /dev/wd0s5 for my root filesystem.<br>However, /dev/wd0s1 through /dev/wd0s16 exist on my computer!<br>Once Mikhail's project is done, then the Hurd will dynamically<br>populate SATA devices at boot time! No more need for static<br>translators! He<br>writes:
I've expanded the functionality of the partfs translator to work<br>with multiple disks and their partitions. Thus, by running the<br>command:<br>settrans -c partfs /hurd/partfs /root/disk1.img /root/disk2.img /root/disk3.img
The translator directory will have the following directory tree:<br>partfs<br>├── 0<br>│ ├── 1<br>│ ├── 2<br>│ └── ...<br>├── 1<br>│ ├── 1<br>│ ├── 2<br>│ └── ...<br>├── 2<br>│ ├── 1<br>│ ├── 2<br>│ └── ...<br>Since the disks are directories, the cd and ls commands work in the translator node.
I also tested mounting, reading, and writing using the commands:<br>`settrans -c ext01 /hurd/ext2fs -w...