Redox 本月动态 - 2026 年 8 月
Redox OS 的八月更新。ARM64 多核支持落地,用户态环形缓冲区通信让 NVMe 等 I/O 性能提升 14 到 15 倍。
中文
复制

作者:Ribbon 和 Ron Williams
发布于 2026 年 8 月 31 日,星期一
Redox OS 是一个用 Rust 编写的、完整的类 Unix 通用微内核操作系统。对 Redox 来说,八月非常热闹!以下是全部最新动态。抱歉报告来迟了——开发繁忙、休假、参加会议、其他工作,再加上各种杂七杂八的事情,凑到了一起。
为 Redox 捐款
如果你想支持 Redox,不妨考虑捐款或购买一些周边!
- 捐款
- Patreon
- 周边已从 Teespring 迁至 Amaze Commerce:https://app.amazecommerce.com/shop/redox-os
更多启动修复
Wildan Mubarok 改进了 UEFI 兼容性,MSI Modern 14 C7M 笔记本因此可以启动了!
ARM64 多核支持
lbecher 为 AArch64/ARM64 实现了多核支持,并做了一些修复。性能提升的幅度还需要更多测试才能确定。
环形缓冲区通信带来更高并行度
经过数月的工作,Ibuki Omatsu 和 Anhad Singh 实现了一套基于用户态的环形缓冲区通信 API(Redox Rings),相当于 Linux 的 io_uring 系统调用 API,用于在受支持的驱动上提升性能;4lDO2 提供了指导,Wildan Mubarok 帮忙修复了 bug。这比几年前那次基于内核的环形缓冲区通信 API 尝试要好。这项工作让 NVMe 驱动、RedoxFS 和 RAMFS 的 I/O 性能有了大幅提升。在下面的基准测试中(绕过 RedoxFS 文件系统),测得的 I/O 性能提升达 14-15 倍!!
-
redox_syscall(使用同步系统调用测量 NVMe 读写性能)与redox_ring(使用环形缓冲区测量 NVMe 读写性能)的基准测试对比 -
使用环形缓冲区的内存文件系统(ramfs)基准测试

原生编译性能大幅提升,OOM 问题修复
Wildan Mubarok 花了几个月调查 GCC 编译性能逐渐下降的问题,最终找到并修复了一处内核内存泄漏。这个泄漏让 GCC 中 os-test 测试套件的编译时间(在 QEMU 上)从 2 小时一路涨到 10 小时,还导致内存不足(OOM)错误。修复之后,编译时间从 10 小时缩短到约 30 分钟。
NUMA 支持
Aadarsh(又名 EuclidDivisionLemma)实现了对基于 NUMA 的内存管理的初步支持。由于我们目前使用 QEMU 测试 NUMA 行为,非常欢迎大家在任何真实硬件上进行测试。
他还默认实现了本地节点分配(数据局部性),以及一个用于修改 NUMA 分配策略的 libredox API。
进程优先级支持与调度器改进——RSoC 项目总结
Akshit Gaur 实现了对进程优先级的支持,并进行了系统优先级调优,从而提升了整体性能。 他还撰写了最后一篇 EEVDF 文章,在优化之后给出了完整的解释。非常感谢 Akshit 的出色工作!
QEMU 运行在 Redox 上!
Ribbon 和 Wildan Mubarok 确认/测试了 QEMU 可以在 Redox 上运行。Ribbon 在 QEMU 终端模式下测试了 Redox 的服务器变体,Wildan 测试了桌面变体,包括 GTK 前端。 Redox 目前尚不支持类似 KVM 的虚拟机加速,因此性能可能会明显偏慢。
- QEMU 终端模式下运行 Redox 服务器变体,上方为 Redox 桌面

- 在 QEMU 终端和 GTK GUI 上运行 Redox 服务器变体

- 在 QEMU GTK GUI 上运行 Redox 桌面变体

从 Linux 双启动安装!
Wildan Mubarok 改进了 Redox 安装程序的 Linux 支持,允许双启动安装 Redox,你可以查看这个页面,了解如何使用它以及新的 GUI 安装程序选项。
- 三启动下运行的 Redox

内核二进制大小分析
4lDO2 实现了对内核二进制大小分析的支持,以衡量哪些部分可以缩减,同时也减少了内存使用。
当前使用命名空间和基于能力的安全性的文件访问设计
Ibuki Omatsu 制作了一张图,说明在基于能力的安全模型中,openat 函数如何借助命名空间管理器解析路径。更多细节见这一节。
relibc 贡献理念与目标的改进
4lDO2 记录了 relibc(我们的 POSIX/C 标准库)的安全理念与目标,以降低引入未定义行为和逻辑错误的概率。重点在于把 unsafe 代码限制在 relibc 的“叶子函数”中,便于监督和审查,也减少 unsafe 代码出现在意料之外的地方。此外还包括在内部采用更接近 Rust 的错误处理方式,以提供比 POSIX 错误更丰富的信息(便于排查某些类型的 bug)。
内核改进
- (内核)4lDO2 将 IPC 开销降低了 5%
- (内核)4lDO2 在未触达时移除 DTB 代码,使二进制体积缩小 2.2%(例如 x86-64 镜像)
- (内核)4lDO2 将
redox_syscall库代码合并进kernel仓库,便于修改 - (内核)Akshit Gaur 对 EEVDF 调度器的 work stealing 做了更多改进和修复,Wildan Mubarok 也做了一些修复,性能因此提升
- (内核)Aadarsh(又名 EuclidDivisionLemma)通过减少线程锁提升了内存释放性能
- (内核)Aadarsh(又名 EuclidDivisionLemma)修复了 NUMA 代码中的一处 panic
- (内核)Wildan Mubarok 将所有 scheme 路径处理移到用户空间
- (内核)Wildan Mubarok 修复了一个潜在 bug:杀死进程可能产生僵尸进程
- (内核)Wildan Mubarok 修复了
FUTEX_WAIT64系统调用中的一处 panic
驱动改进
- (驱动)MJ Pooladkhay 实现了 PCI 多向量 MSI-X 支持,这将支持更多驱动性能特性
- (驱动)MJ Pooladkhay 修复了 VirtIO 设备完成事件丢失的问题
- (驱动)Wildan Mubarok 修复了 Clippy 检测到的一处
pcidbug - (驱动)bjorn3 做了一些代码去重和清理
系统改进
- (sys) Ibuki Omatsu 为 scheme 实现了多线程支持
- (sys) Wildan Mubarok 将 rldd 移植为我们的
ldd工具实现 - (sys) Wildan Mubarok 改进了 scheme 路径父级收集的性能
- (sys) Wildan Mubarok 修复了若干文件锁定中的差一错误,对 SQLite 和
libsoup均有帮助 - (sys) Wildan Mubarok 移除了无显示环境下的
inputd非致命 panic - (sys) bjorn3 修复了潜在的
inputd死锁 - (sys) bjorn3 做了一些代码去重
Relibc 改进
- (libc) 4lDO2 将大部分不安全的 socket 与
getaddrinfo函数代码改为叶子函数,通过集中处理大幅提升可读性,从而减少 bug - (libc) 4lDO2 实现了
RELIBC_COMMIT_HASH环境变量,用于显示relibc提交哈希,以完全确认静态对象是否已随本地改动更新或已是最新 - (libc) Ibuki Omatsu 修复了
recvmsg函数上损坏的SCM_RIGHTS,该 bug 在文件描述符分配迁移到用户空间后暴露出来 - (libc) bjorn3 修复了
getsockname和getpeername函数的地址长度计算,从而修复了一些mio库测试 - (libc) Wildan Mubarok 为 Linux 实现了
rlct_clone函数,修复了 Linux ARM64 上的pthread测试 - (libc) Wildan Mubarok 在
setvbuf函数中实现了模式读取(行缓冲除外)与写入(借用除外)的支持和处理 - (libc) Wildan Mubarok 改进了
LD_DEBUG环境变量,用于显示relibc共享对象的内存位置范围,大幅改善动态链接时的崩溃调试 - (libc) Wildan Mubarok 通过直接调用
open函数改进了epoll的性能 - (libc) Wildan Mubarok 在
stdio初始化中使用常量函数,缩短了应用和库的启动时间 - (libc) Wildan Mubarok 减少了
timer_t中的不安全 Rust 代码 - (libc) Wildan Mubarok 增加了更多 Unix socket 测试
- (libc) Wildan Mubarok 修复了 ARM64 上的 TLS 加载偏移,修复了包管理器上
tokio库的 panic - (libc) Wildan Mubarok 修复了 Linux ARM64 上 64KiB 分页的 ELF 加载
- (libc) Wildan Mubarok 修复了
clock_getres函数的行为 - (libc) Wildan Mubarok 修复了
fstatat函数中的重复关闭 bug - (libc) Wildan Mubarok 修复了
ptsname_r中的 NUL 偏移 - (libc) Wildan Mubarok 修复了
pthread_kill-self测试 - (libc) Wildan Mubarok 修复了一个时间/定时器测试
- (libc) auronandace 实现了
tcgetsid函数 - (libc) auronandace 用
SYS_CALL系统调用替换了SYS_DUP_INTO、SYS_READ和SYS_WRITE系统调用,以减少系统调用次数 - (libc) auronandace 进一步减少了
as类型转换的使用,以防代码重构时出问题 - (libc) auronandace 做了一些代码清理
- (libc) auronandace、Wildan Mubarok 和 Ibuki Omatsu 修复并强制推行了许多 Clippy lint,并在 CI 上启用了跟踪
- (libc) Ben McCann 在
tzset中实现了 POSIX base,并在mktime函数中实现了 POSIX 处理 - (libc) Ben McCann 为
tzset函数增加了更多测试 - (libc) Sunam Kang 在
sendto函数中实现了MSG_NOSIGNAL
网络改进
- (net) Wildan Mubarok 改进了 DHCP 缺少 DNS 时的错误提示
RedoxFS 改进
- (rfs) Wildan Mubarok 实现了
O_SYMLINK,允许跨 scheme 遍历符号链接 - (rfs) Wildan Mubarok 改进了分区挂载的错误处理,现在会显示错误码
安全改进
- (safe) bjorn3 在
inputd上实现了无 root 打开显示 - (safe) Ibuki Omatsu 重写了
contain沙箱管理工具,改用新的命名空间管理,现在会为每个进程创建过滤器 scheme,其中持有真正的命名空间文件描述符,通过向程序提供文件描述符过滤器来中介所有openat函数调用(完整的chroot实现仍在进行中) - (safe) Wildan Mubarok 更新了 CA 证书,顺带修复了 GnuTLS
打包改进
- (pkg) Wildan Mubarok 修复了软件包解压进度条重复计数的问题
桌面改进
- (desk) bjorn3 将 Orbital 登录管理器移植到
winit和softbuffer库,以便日后测试 Wayland - (desk) bjorn3 在 Orbital 全屏窗口中禁用了窗口装饰
- (desk) bjorn3 修复了显示器尺寸变化时全屏或最大化 Orbital 窗口的缩放问题
安装器改进
- (install) Wildan Mubarok 修复了新版 GUI 安装器选项的输入数据处理
- (install) Wildan Mubarok 在解压软件包时增加了进度状态
程序
- (app) Wildan Mubarok 将 GNU nano 从 7.2 更新到 9.2
- (app) Aadarsh 修复了 GNU Binutils GDB 变体的编译
- (app) Wildan Mubarok 将 Kibi 从 0.3.2 更新到 0.3.3
- (app) Wildan Mubarok 修复了 WebKit 的 TLS bug
- (app) Wildan Mubarok 修复了 GTK3 移植版的 EGL 支持
- (app) Wildan Mubarok 修复了 Mesa3D 上 EGL 的部分渲染问题
测试改进
- (test) 4lDO2 在
acid测试套件中实现了基准指标,用于检测性能回退 - (test) Wildan Mubarok 开始在 CI 上使用并启用 Clippy
- (test) Wildan Mubarok 将 Redox 镜像的 CI 验证时间从约 25 分钟缩短到约 7 分钟
构建系统改进
- (build) Wildan Mubarok 更新了 Cookbook recipe 目标列表项的组合方式,允许使用
--all-*选项,例如:make r.base,--all-binaries - (build) Wildan Mubarok 实现了
COOKBOOK_TREELESS_CLONE环境变量,可在所有 recipe 中启用无树克隆(treeless clone),大幅节省存储空间并缩短下载时间 - (build) Wildan Mubarok 用 Cookbook 重新实现了大部分脚本逻辑,以降低脚本维护成本,Ribbon 修复了一些回归问题
- (build) Wildan Mubarok 修复了
make rebuild-push命令(校验 recipe 源码或软件包变更、增量重新构建,或下载并推送新变更)不更新文件系统配置 recipe 的问题,现在可以在已有的 Redox 文件系统镜像中正确、快速地更新系统 - (build) Konstantin Shabanov 修复了 Podman 和 Native 构建上的 Nix flake
- (build) Konstantin Shabanov 对代码应用了
cargo fix - (build) Ribbon 在
show-package.sh脚本中用tree替换了ls工具,使其能显示所有 recipe 软件包目录和文件,实用性大大提高
文档改进
- (doc) Wildan Mubarok 更新并改进了 Installing Redox 页面,补充了新的 GUI 安装器选项相关信息
- (doc) Ribbon 在 Developer FAQ 中更详细地记录了为什么我们更倾向于 POSIX/Linux 源码兼容而非二进制兼容
- (doc) Ribbon 记录了一条调试技巧:Linux KVM 使用方式的变化会改变 bug 的表现行为
网站改进
- (web) Wildan Mubarok 添加了 LaTeX 数学公式支持,并改进了网站深色模式,使 LaTeX 公式清晰可见,修复了上一篇 EEVDF 文章中的公式显示问题
如何测试这些变更
要测试本月的变更,请下载每日镜像的 server 或 desktop 变体。
需要图形界面请使用 desktop 变体。如果你更喜欢终端风格的界面,或者 desktop 变体无法使用,请尝试 server 变体。
- 如果要在虚拟机中测试,请使用 “harddrive” 镜像
- 如果要在真实硬件上测试,请使用 “livedisk” 镜像
阅读以下页面,了解如何在虚拟机或真实硬件上使用镜像:
有时每日构建的镜像会过期,需要从源码构建 Redox。 具体操作请参阅构建 Redox页面。
程序
要测试应用程序和库的改动,先看看目标程序是否在以下列表中,然后运行下面的命令安装:sudo pkg install package-name
如果需要详细的软件包信息,还有一个软件包 Web 界面:
加入 Matrix 聊天室
如果你想贡献代码、提供反馈,或者只是想听听大家在聊什么,欢迎加入 Matrix Chat。