GNU Hurd 2026年第二季度新闻
摘要
GNU Hurd的2026年第二季度报告重点介绍了9pfs写入支持、AArch64内核补丁、POSIX msync验证以及各种错误修复的进展。
暂无内容
查看缓存全文
缓存时间: 2026/08/05 19:56
# 2026-q2
Source: https://www.gnu.org/software/hurd/news/2026-q2.html
大家好,欢迎来到新一期 Qoth!以下是 2026 年第二季度发生的种种!
Joshua Branson 为我们的以太网多路复用器(https://www.gnu.org/software/hurd/hurd/translator/eth-multiplexer.html)添加了一个非常酷的 SVG 标志。他是用 Inkscape 在真实硬件上运行 Hurd 笔记本(Thinkpad 420)时制作出这张图片的!Hurd 维基绝对需要更多艺术作品。也许你有一个最喜欢的 Hurd 翻译器,认为它需要一些艺术作品!
Sergey Bugaev 宣布了他的 WIP 9pfs(https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00012.html)(源代码(https://github.com/bugaevc/9pfs)),并且它有一个 wiki 页面(https://www.gnu.org/software/hurd/hurd/translator/9pfs.html)!他写道:
``
几年前,我尝试为 Hurd 实现一个 9P 翻译器。希望无需向这个列表解释 9P 是什么 :)
除了浏览现有少数服务器上的文件之外,一个潜在用例是 virtio-9p,用于在虚拟机与宿主机之间启用共享目录树。但这需要有人为 Hurd 实现 virtio 支持。
我本想在上传前完成 9pfs,但最终没有实现,所以现在是时候把它交给社区了。我现在已将仓库在 GitHub 上公开:https://github.com/bugaevc/9pfs
已实现的内容包括基本浏览(readdir、stat)、路径解析(dir_lookup)和读取文件(io_read)。在这些之下,还有对节点、peropen、protid、fid、标签以及 9p RPC 的完整跟踪。
欢迎改进,请将补丁发送到此列表,并在主题中包含 [PATCH 9pfs]。一个好的起点是继续移植我在旧的基于 netfs 的版本(参见 netfs.c)中已实现但尚未移植到新版本的内容。
``
随后他更有动力了,并添加了一些写入支持!
Etienne Brateau 为 msync(https://man7.org/linux/man-pages/man2/msync.2.html)添加了校验(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00098.html),使 Hurd 更好地遵循 POSIX。
Diego Nieto Cid 致力于允许特权用户设置其任务优先级(nice 值)。他的补丁已进入 glibc(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00100.html)和 GNU Mach(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00099.html)。他还修复了测试套件中的一个小 bug(https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00232.html)。他修复了一个 adjtime bug(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00061.html),这对 OpenNTPD 移植很有帮助,并且他还修复了另外两个 bug(https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00133.html)(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00117.html)。
Paulo Duarte 发送了一个 RFC 补丁系列,试图提交 Sergey 之前的 AArch64 工作。他写道:
``
本系列为 Sergey 于 2024 年 4 月提交的 aarch64 ABI 添加了 gnumach 内核端实现,以及测试套件部分。
补丁 01 从 bugaevc/wip-aarch64 原样引入了仅限 aarch64 的源代码,作者为 Sergey;其余部分是我的工作。
与 wip-aarch64 的主要区别在于我省略的内容:跨 kern/、ipc/、vm/、device/intr.{c,h} 以及 i386 树的约 150 个跨架构重构文件。每个文件都被替换为 aarch64/ 下更小的每架构 shim,因此 kern/bootstrap.c、device/intr.{c,h}、kern/lock.h 和 i386 树均与当前 master 保持逐位一致。aarch64/ 之外的共享文件足迹为四个文件:一个新的 ELF 常量、两个缺失声明及其包含文件,以及一个链接器符号过滤器扩展……
测试情况:在 qemu 下的 x86_64、i686 和 aarch64 上 12/12 全部通过。尚无裸机验证。我计划构建可引导镜像,并在 Apple M1 / Raspberry Pi(aarch64)以及一台 x86_64 机器(x86_64 + i686)上启动内核。欢迎就其中任何一项提供帮助。
``
他还修复了一个微小的交叉编译问题(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00077.html)。
gfleury 修复了一些 tmpfs 拼写错误(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00038.html)。他还修复了一个空指针解引用导致的内核崩溃(https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00101.html)。
Almudena Garcia 正在用 Rust 开发一个 WIP 的 trivfs 实现(https://gitlab.com/AlmuHS/hurd-translator-in-rust)。这项工作尚未完成,但现在已经可以用 Rust 编写 Hurd 翻译器了!
Mikhail Karpov 在多个地方为 mmap 添加了一些检查(https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00165.html)。他还致力于将 storeio 添加到引导链中(https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00221.html)。这其实相当有趣。目前 Hurd 在 `/dev/` 中静态设置设备条目。例如,我正在一台 Hurd 机器上撰写这篇 qoth,该机器使用两个 `/dev/` 条目来支持我的文件系统:`/dev/wd0s1` 用于交换分区,`/dev/wd0s5` 用于根文件系统。然而,我的电脑上存在 `/dev/wd0s1` 到 `/dev/wd0s16`!一旦 Mikhail 的项目完成,Hurd 将在启动时动态填充 SATA 设备!不再需要静态翻译器。他写道:
``
我扩展了 partfs 翻译器的功能,使其支持多个磁盘及其分区。因此,通过运行命令:
settrans -c partfs /hurd/partfs /root/disk1.img /root/disk2.img /root/disk3.img
翻译器目录将具有以下目录树:
partfs
├── 0
│ ├── 1
│ ├── 2
│ └── ...
├── 1
│ ├── 1
│ ├── 2
│ └── ...
├── 2
│ ├── 1
│ ├── 2
│ └── ...
由于磁盘是目录,cd 和 ls 命令可以在翻译器节点中工作。
我还使用以下命令测试了挂载、读取和写入:
`settrans -c ext01 /hurd/ext2fs -w -T typed file:/root/partfs/0/1`
和
`settrans -c ext1_1 /hurd/ext2fs -w -T typed part:1:file:/root/partfs/1`
``
实际上这更酷!Samuel(我们无畏的领导者)正在就如何命名这些较新的 `/dev` 条目征求意见(https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00187.html)。Samuel 写道(https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00187.html):
``
为了提高效率,确实需要实现 netfs_file_get_storage_info,以便 libstore 能够获取底层存储信息,并直接从中获取数据,而不是让 partfs 通过 io_read/write 传递数据。
然后我在想,这将如何融入‘宏伟蓝图’。我们目前的做法是让 /dev/hd0s* 始终存在,这确实不太好,因为它不容易告诉用户哪些分区实际存在。我们过去不得不这样做,因为分区过去由内核处理,而现在我们已经转向 storerio+parted 支持的分区,这带来了更大的灵活性。
也许我们可以使用
settrans -c /dev/hd0s /hurd/partfs /dev/hd0
然后我们会有 /dev/hd0s/1,这与之前几乎一样,但允许条目动态化。实际上,我们甚至可以有某种
settrans -c /dev/hd /hurd/probedisk hd
然后我们会有 /dev/hd/0,并且我们可以让 /dev/hd/0s 成为 partfs,这样我们最终会有
/dev/hd
相似文章
HardenedBSD 2026年八月与九月状态报告
HardenedBSD 提供了2026年八月与九月的状态报告,详细介绍了安全更新、基础设施迁移以及操作系统的未来计划,包括实验性功能。
Redox本月回顾 - 2026年8月
2026年8月,Redox操作系统带来了重大更新,包括ARM64多核支持、用于I/O性能提升14-15倍的环形缓冲区通信、NUMA实现,以及QEMU兼容性改进。
上游 Rust 维护报告
Sovereign Tech Fellow David Kolozsvari 发布了其 2026 年 8 月至 9 月的 Rust 工具链开源维护报告,涵盖目标目录(target directory)体积缩减、编译时间优化、Polonius 加速、并行前端(parallel frontend)以及多项 Rust 基础设施工作。
Linux 7.2 进展 – Asahi Linux
Asahi Linux 发布了 Linux 7.2 的进展报告,详细介绍了针对 Apple Silicon 的电源管理技术进步,包括克服 CPU 核心睡眠状态和 PSCI 实现方面的挑战。
OpenBSD 7.9 发布
OpenBSD 7.9 已发布,包含针对 arm64、amd64、luna88k、riscv64 等架构的平台特定改进,以及各种错误修复和增强的硬件支持。