ReliefNT 5.1.0¶
- 发布日期:
2026-10-19 11:19:37 UTC
- 发布标签:
v5.1.0- 版本提交:
- 原始说明:
备注
本页归档发布时的完整说明,仅转换文档格式并将旧相对链接固定到对应标签。 文中的路径、功能范围、验证结果与已知限制均指该历史版本,不代表当前版本状态或重新验收。
发布范围¶
前一版本提交:
f8f5a4908807e81cca7ed766fb6c60e7829767dc(将版本设为 5.0.0 的提交)。本次范围为该提交之后、
v5.1.0所指向的本次 5.1.0 版本提交(含)之间的有效内核变更;版本提交的完整 SHA 由发布时的标签确定。本说明仅涵盖 ReliefNT 内核仓自身的内核、UAPI、驱动、构建与开发工具变更,不涵盖 ReliefOS 桌面应用、安装器或镜像集成。
更新内容¶
VT、TTY 与 Linux 接口: 补充标准 VT/键盘控制 ioctl、虚拟终端所有权交接和
termiosOPOST输出后处理;增加/dev/tty0对当前 VT 的解析。fbdev 结构布局与设备信息按 Linux ABI 补齐,包含稳定的显存映射长度、模式设置及图形设备 sysfs 链接;SVGA 帧缓冲 pitch 校验补上溢出保护。evdev、PS/2 与帧缓冲刷新: evdev 使用按打开描述符独立的读取游标;缓冲区溢出时向受影响设备报告
SYN_DROPPED,再以SYN_REPORT结束丢失区间、丢弃可能从半帧开始的旧积压,并从新事件继续,用户态可查询按键/绝对轴状态后重同步。IRQ12 只消费 8042 辅助设备字节,避免 PS/2 鼠标路径取走键盘字节、丢失按键释放。修正 VMware SVGA FIFO/trace 更新,并增加可让出锁的周期性整帧刷新与背压恢复路径。进程、共享内存与文件映射: 实现
PR_SET_PDEATHSIG和PR_GET_PDEATHSIG;补充/proc/sys/kernel/overflowuid与overflowgid,默认读值为 65534。已有memfd_create增加封印读取/添加及对写入、截断和可写映射的封印检查。System Vshmget、shmat、shmdt、shmctl的 syscall 编号在 5.0.0 起点已存在,但当时内核没有对应处理器;本区间新增了内核实现,并补上共享映射在 fork、VMA 拆分和解除映射时的生命周期维护。另修正mprotect、brk与 SHM VMA 扩展/拆分期间的状态处理。音频: 加入 Intel HDA 控制器、编解码器、PCM、ALSA 与 OSS 内核接口,并调整 AC97、ES1371 驱动接入内核音频层;导出对应 Linux 音频 UAPI。
引导、驱动、存储与 PCI:
kernel.sys带 Multiboot2 头并由 GRUB 直接引导;启动期间提前加载 IDT、屏蔽 PIC 并修正中断应答顺序。移除可加载.drv模型,六种驱动内建,并公开驱动类型常量。驱动按输入、网络、声音、TTY、USB、视频及存储职责迁移;存储代码从 bootstrap 汇总构建拆到block/、fs/、drivers/storage/等模块,拆分共享状态和跨模块接口并移除 unity build。PCI 初始化建立设备配置缓存,供后续查询复用,减少重复全总线枚举。调度、系统调用与时间: EEVDF 公平队列加入增强红黑树索引以辅助实体筛选;等待队列锁、单页写权限检查、管道批量复制和系统调用返回路径均有优化,管道容量由 4 KiB 增至 65535 字节。CPU ID 读取优先使用
IA32_TSC_AUX配合RDPID/RDTSCP,早期启动或不支持时回退 APIC 路径,避免支持该特性的 CPU 在系统调用路径上读 LAPIC MMIO。每 CPU 当前任务指针将系统调用帧捕获从任务表扫描改为 O(1),未变化的用户 FS 基址不再重复写 MSR;同一任务续跑且无信号或重调度需求时跳过完整调度轮次,唤醒的任务会在下一用户返回边界触发重调度,并在返回用户态时仅于地址空间或映射变化后重载 CR3。没有待处理信号且无需切换任务时也免去不必要的 FPU 保存/恢复。增加基于 TSC 的 tick 间时间插值、clock_gettime/clock_getresvDSO 快路径,以及身份查询和时间类系统调用的轻量分发,省去这些不访问文件描述符的路径上的标准输入物化与归属扫描;不支持或不可信的时钟路径仍回退系统调用。输入唤醒与内存访问: 修正事件等待、信号与输入设备间的唤醒和竞态处理,避免输入积压/丢失;改进等待队列锁竞争及用户缓冲区单页可写检查路径。
日志与控制台: 统一内核和驱动日志等级及驱动日志回调,默认使用低饱和 ANSI 颜色;启动命令行的
logcolor=0可从第一条内核日志关闭配色。启动日志在boot complete后保留于 tty1,PID 1/OpenRC 输出接续现有文本和光标位置,不清屏;日志纳入 tty1 历史,切换 VT 后仍可恢复。未显式重定向或关闭的标准输入、输出、错误共享同一个读写/dev/console打开描述,打开时绑定当前 VT,提供终端读写、termios、窗口尺寸和 VT ioctl,但不会自动取得控制终端。构建与开发工具: 增加锁定依赖 URL 的
fetch-check探测和 vDSO 测试工具;移除内核源码对宿主 libc 头文件的依赖。
破坏性更新¶
是,以下接口、构建方式和源码路径发生不兼容变化:
可加载驱动:
.drv运行时装载、扫描和卸载机制及对应构建产物、drivers构建目标已移除。mouse、serial、e1000、AC97、ES1371 和 HDA 驱动内建于kernel.sys;驱动管理控制操作返回-EOPNOTSUPP。驱动列表接口仍保留;驱动 kernel API 表另有扩展,不能据此认为其尺寸保持不变,详见下文验证限制。引导链:
loader.elf、boot/loader/、boot handoff 头文件及 loader 专属的完整性检查配置已移除。kernel.sys成为 Multiboot2 目标。旧名兼容头:
include/leonos/、include/uapi/leonos/和kernel/reliefnt/include/ntclks/转发头树已删除;应使用对应的reliefos公共头或reliefnt内核私有头。旧构建兼容输入:
LEONOS_TEST_PYTHON、LEONOS_BUILD_OWNER回退变量及.leonos-out旧输出目录标记不再识别。旧loader构建目标也已取消。退役组件配置: 删除 cmd 的
LEON_COMPONENT_TOOL_CMD_*Kconfig 开关及RELIEFOS_LAYOUT_OPT_CMD布局宏,并删除旧图形 Ping 的LEON_COMPONENT_APP_PING_*开关。外部配置片段和构建脚本应移除这些输入,不再依赖它们选择组件或路径。源码目录: 驱动按职责移入
drivers/input/、drivers/net/、drivers/sound/、drivers/tty/、drivers/usb/、drivers/video/和drivers/storage/;存储实现拆分到block/、fs/、firmware/等目录,原drivers/bootstrap/storage/路径不再适用。
更新与迁移注意事项¶
更新 GRUB 配置及自有引导脚本,改为通过 Multiboot2 直接加载
kernel.sys;不要再依赖loader.elf或旧 boot handoff 数据结构。自定义
.drv驱动需纳入内核源码和链接配置,使用内建驱动描述符注册;调用驱动运行时控制接口的程序应处理-EOPNOTSUPP。将包含路径从已删除的
leonos/ntclks兼容树改为include/reliefos/、include/uapi/reliefos/和kernel/reliefnt/include/reliefnt/下的现行头文件。更新外部构建脚本引用的驱动、存储源码路径及构建目标。若脚本显式传递旧测试解释器或构建所有权变量,应改用
RELIEFOS_TEST_PYTHON、RELIEFOS_BUILD_OWNER;旧输出目录标记无法由当前清理脚本识别,建议为新版构建使用新的O=输出目录。
开发者提示¶
驱动当前静态链接进
kernel.sys,存储代码按独立职责拆分并移除了 unity build;外部构建清单需与新目录和对象边界同步。EEVDF 公平队列使用增强红黑树辅助索引;该实现不意味着队列的所有操作路径都具有相同的渐进复杂度。
vDSO 快路径受支持的时钟类型及 TSC 信任条件限制,其他情况由内核系统调用路径处理。
make fetch-check用于探测依赖锁文件记录的 URL 状态,不替代依赖获取或内容校验。后续版本遵循 仓库长期发布规范:以版本提交确定
(上一版本提交, 本次版本提交]范围,标签必须指向本次版本提交的完整 SHA;只汇总本仓有效变更并提供 compare 链接。两仓说明分别审阅,版本号和纯 merge 不列为更新;源码发布使用标签与 GitHub 自动源码归档,二进制仅在明确选择后从本版重建并附校验和及归属信息。发布说明从正文文件发布并回读核对,VMware 状态在完成前持续标明未完成。
验证与已知限制¶
内核宿主普通、ASan、UBSan 工具测试通过;
test-header-export通过,检查 81 个头文件。make test未通过:test-abi中reliefos_driver_kernel_apigolden 大小为 168,当前 ABI 大小为 296。当前接口增加了 PCI、DMA、IRQ、音频、日志等回调;未修改 ABI golden,也未修改音频 manifest。父仓执行
TMPDIR="$PWD/out/tmp" make O=out/xorg-vmware-debug PROFILE=debug -j4 build-info kernel成功,构建报告的 5.1.0 数字版本宏为5/1/0。未打包镜像、未进行 VM 运行验收;VMware 验证未完成,真实硬件未验证。构建产物不上传;区间内的历史局部验证不代表最终版本的整版验收。
获取与追溯¶
获取
v5.1.0标签对应的 ReliefNT 源码,以及 GitHub 为该标签自动生成的源码归档(Source code ZIP/TAR.GZ)。本次源码发布不上传旧二进制。自动源码归档不展开第三方子模块;完整构建请克隆本标签并执行
git submodule update --init --recursive,再按 README 获取锁定的构建依赖。