ReliefNT 5.1.2¶
更新内容¶
启动、存储与文件系统¶
增加 Legacy BIOS Multiboot2 保护模式入口:检查 CPU 特性,建立页表与栈后进入共享 64 位内核。BIOS/EFI 交接解析检查边界、对齐和溢出,保留 EFI 信息指针完整宽度,失败不发布部分结果。
增加 GPT PARTUUID 根分区选择,在设备发现后解析显式身份;缺失、畸形或重复身份拒绝自动回退到其他磁盘。
修正 Linux
BLKROGETioctl 编码,消除内核私有 timerfd/eventfd 标志与O_SYNC/O_TMPFILE的冲突;同步写入完成实际刷新并传播错误。独占块设备打开正确识别已挂载分区,避免匿名光盘/RAM 挂载误占其他磁盘。块写入按打开时的 DAC、描述符访问模式授权,移除旧桌面角色门槛;
O_PATH不能写入,BLKRRPART重读分区表要求 LinuxCAP_SYS_ADMIN。FAT 目录改为按需有界分配,解除旧每目录 64 项限制;修正未对齐 UTF-16 长文件名读取及目录扩展的尾部标记,保留原有磁盘格式与元数据校验。
Linux 系统调用、调度与性能¶
execve/execveat按 Linux x86_64 的软栈限制计算参数总预算,动态保存参数与环境,检查单串和指针开销。新映像、参数和初始栈准备成功后才提交,失败保留旧进程状态;fork、exec 和退出按实际所有权管理参数副本。初始用户栈按实际布局增长,保留
RLIMIT_STACK、RLIMIT_AS与不可执行页面检查。支持utimensat(fd, NULL, times, 0),文件在改名或 unlink 后仍按描述符引用的 inode 更新,拒绝O_PATH。副核使用 ACPI PM 时钟校准 LAPIC 抢占定时器;各核 busy/idle 与任务 CPU 时间改按统一 USER_HZ 时钟结算,避免统计随副核中断频率变化。校准失败记录原因并保留回退。
在已有执行事务内完成符合条件的 syscall 返回,内部停驻期间保留
pselect临时信号掩码;允许仍被映射或引用的文件页超出空闲缓存预算,同时保持共享映射一致性。readv/writev直接调用共享标量读写后端,避免递归进入大分发栈帧,保留校验、部分结果、偏移和等待重试语义。DRM 资源退休与 exec 维护增加保守的空队列提示,减少无工作时的锁开销。
控制台与诊断¶
在内核只读数据中内置 ReliefOS 启动图标,按发现的逻辑 CPU 数量在 framebuffer 顶部绘制,自动留距、换行或缩放;保留文本行,用户态启动前移除图标并恢复完整控制台。
Kernel panic 改为醒目的文字诊断:在当前文本 VT 输出;GUI 中从左上角绘制,仅文字字符格覆盖黑底,保留其余桌面像素。输出异常、寄存器、CPU/任务、内核版本和构建身份,并保留串口诊断。
紧急输出以有界 NMI 等待停止其他在线 CPU,绕过普通控制台/显卡锁和动态分配;图形区域写满后停止绘制,完整诊断仍写入串口和 VT 历史。
构建与源码组织¶
内核、vDSO、宿主工具与头文件导出改用固定的 Linux 6.12 Kbuild/Kconfig,保留公开产物名称,移除旧构建与配置前端。
将混合职责的大文件拆分到架构、调度、系统调用、内存、块层、文件系统、网络、驱动及声音等目录。各代码目录的 Kbuild 只列本地对象和直接子目录,生产源文件独立编译;这不引入可加载模块。
明确公开 UAPI 与私有头文件边界,增加源码迁移映射、本地 Kbuild/对象覆盖和上游引擎摘要检查;恢复曾被忽略规则排除的页缓存源码,并增加 CI 构建输入审计。
破坏性更新¶
是,涉及纠正后的 ioctl、管理权限与内部构建接口。
BLKROGET从错误的_IOR(0x12, 94, int)改为 Linux 规定的_IO(0x12, 94)。使用旧 ReliefNT 头编译并固化旧请求值的工具需以当前 UAPI 重编译。块设备访问依赖文件权限、有效描述符和相应 Linux capability;依赖已退休桌面角色授权,或在没有
CAP_SYS_ADMIN时重读分区表的程序需调整。内核私有头、旧单文件源码路径、旧配置前端及自研构建规则已迁移或删除。外部源码补丁、白盒测试和内部结构消费者需按新目录调整;私有符号不构成稳定 ABI。
本版不是完整 ABI 认证。既有驱动接口 golden 为 168 字节、实际结构为 296 字节的问题仍保留,没有通过重生成 golden 掩盖差异。
更新与迁移注意事项¶
本次为 源码 Release,不提供预编译内核。使用标签源码、锁定依赖和实际配置重新构建,保持
kernel.sys、调试符号、导出 UAPI 与配套用户态一致。使用新的
O目录和 Kconfig 配置验证迁移,内部路径参照 模块说明。产物仍位于O/generated/system/{kernel.sys,kernel.debug,kerneldebug.sys},父仓通过安装清单消费。BIOS 入口需要支持相应 CPU 特性的机器与正确的 Multiboot2 引导器;本仓不负责生成 ReliefOS ISO 或安装引导器。显式 PARTUUID 必须唯一且对应目标 GPT root,旧内核回滚不能假定支持新菜单。
更新 SDK 和使用块 ioctl 的程序,核对设备 DAC 与 capability 策略。FAT 改动没有改变磁盘格式,仍需在更新或操作分区前备份数据。
已有分项 QEMU 启动、安装配套和系统调用验证不等于本标签的整版迁移认证。VMware 验证未完成,物理硬件未验证;编译压力下桌面交互、长期运行和全部恢复场景仍未完成验收。
保留现有高地址 PCI MMIO 限制:默认 OVMF 的某些 NVMe BAR 超出 direct map 范围时,设备不能初始化。不能把低地址布局中的成功推广到所有硬件拓扑。
驱动 ABI golden、部分旧测试 fixture 及完整自举仍有已知未完成项;未改变 golden 或既有音频策略,不宣称总测试或全部 Linux/POSIX 一致性检查通过。
开发者提示¶
基础版本为
5.1.2,生成的数字字段为5/1/2;EXTRAVERSION与LOCALVERSION继续独立追加,并保留字符和长度校验。使用根 GNU Make 入口、各级 Kbuild 和仓库工具链配置;需 GNU Make 4.3 或更新版本。新增源文件必须登记到所属目录 Kbuild,公开头仍通过
headers_install白名单导出。make test-module-layout检查模块边界、源码覆盖及引擎摘要;启动解析、徽标、panic、vDSO 和头导出各有独立测试。宿主夹具、内核编译与来宾运行须分开报告,配套 ReliefOS 的测试工具不算作本仓源码交付。默认 8 MiB 软栈限制下 exec 参数预算为 2 MiB;总预算最低 128 KiB、最高 6 MiB,单串最多 128 KiB(含 NUL),另计指针等开销。细节见 exec 参数契约。
CPU 时间精度仍为 10 ms,本次校准不代表完整的用户/内核/子进程时间拆分。吞吐和锁开销改进受负载与虚拟机条件影响,没有达到或承诺统一的 5 GB/s 指标。
本说明覆盖内核 5.1.1 版本提交
d561d4c8b296153723677c6b63497eb8867d024d之后至本标签的有效变更,不包含主仓应用、桌面或镜像打包。下一版以本次版本提交为区间起点。