V.3.0

发布日期: 2025-11-20

核心亮点

Linux 兼容性突破

  • 已通过 275 个 Linux 兼容性测试用例,可在 ci-dashboard.dragonos.org 持续跟踪测试结果

  • 引入 gVisor Linux 系统调用自动化测试套件,每次提交/合并都能实时追踪内核行为与 Linux 的兼容性

  • 通过多项 gVisor 系统调用测试,内核行为与 Linux 更接近

容器原生能力显著增强

  • 命名空间支持:UTS、IPC、mnt 命名空间完善,支持 unshare 操作,容器隔离边界与权限模型向 Linux 主线看齐

  • 权限与能力capset/capget 系统调用、sethostname/domainname 修复,完善容器身份管理

  • 文件系统增强:xattr 六个系统调用、SYS_PWRITEVtruncate、路径遍历/目录切换权限检查,保障容器镜像构建和文件挂载的可控性

  • 网络子系统重构:全新的网络子系统实现,提供更好的 Linux 兼容性和可扩展性;桥接网络支持,应对多租户与边缘节点场景

  • 运维工具:Dropbear SSH 服务器支持,使轻量云原生场景可以即装即用

多线程稳定性提升

  • 线程组退出机制、PI futex、prctl(PR_SET_PDEATHSIG/PR_SET_NAME) 等一系列改动,让复杂进程的生命周期控制更接近 Linux 主线

  • Go 语言示例程序展示 DragonOS 在多线程场景下的最佳实践

  • vfork、CLONE_PARENT_SETTID、signal frame、FP 状态等历史遗留问题彻底修复

系统调用全面扩容

新增 10+ 个系统调用接口支持,包括:

  • waitidrt_sigtimedwaitsetitimer/getitimerclock_nanosleeptgkill/tkill

  • SYS_GETCPUSYS_PWRITEVtruncate

  • xattr 相关六个系统调用、capset/capget

  • clone3get_mempolicymincore

版本概览

  • 内核特性:线程组退出、PI futex、PR_SET_PDEATHSIG/PR_SET_NAME、SYS_GETCPU、waitid、rt_sigtimedwait、setitimer/getitimer、clock_nanosleep 等调度/信号链路全面增强

  • 内存与同步:VM_DONTCOPY、mincore、RLIMIT_FSIZE、资源限制框架、异常表用户态访问保护,futex 子系统修复/重构 10+ 项

  • 文件系统与命名空间:引入 pwritevtruncate、xattr 六个系统调用、路径权限检查、UTS/mnt/IPC namespace、capset/capget、/proc 改进

  • 平台与网络:x86 kexec+initram、VF2 RISC-V 适配、桥接网络、大规模网络栈重构、Dropbear SSH 服务器、Go 用户态演示与工具链完善

  • 工程效率:CI 容器升级、测试上传与监控、gVisor/FreeBSD bootstrap 支持、Nix-shell 工具链版本锁定

详细变更

1. 线程与信号:向 Linux 行为对齐

  • PRCTL 新选项、备用信号栈拷贝、克隆/等待语义补完,waitid/job control、资源限制(rlimit)框架与 RLIMIT_FSIZE 检查 (#1386, #1363, #1362, #1333, #1300, #1312)。

  • setitimer/getitimerclock_nanosleeptgkill/tkill 等定时器/信号路由补齐;fs/gs 用户空间验证、clone3 + /proc/cpuinfoPR_SET_PDEATHSIG 支持,提升 ABI 兼容性 (#1377, #1307, #1336, #1299).

  • 大量信号/线程相关修复:vfork、CLONE_PARENT_SETTID、signal frame、FP 状态、sys_sigaction/sigprocmask、/proc/self/exe 链接等,解决兼容性和稳定性问题 (#1358, #1342, #1357, #1356, #1347, #1359)。

2. Futex & 内存:同步栈焕然一新

  • PI futex、共享键生成重构、robust futex 竞态修复、wake op 兼容性、参数校验、futex test 启用,形成更完整的 futex 行为矩阵 (#1373, #1376, #1374, #1372, #1371, #1326, #1321, #1320, #1311, #1276, #d5158a0, #e85d1cd).

  • 内存管理改进:VM_DONTCOPY 标志、异常表驱动的安全用户态访问、mincore、madvise/msync 边界修复、匿名共享页同步、伙伴分配器死锁 & 边界检查等内核内存改进 (#1383, #1349, #1334, #1301, #1258, #1345, #1334, #1361, #1280)

  • 资源限制:Rlimit 框架与 RLIMIT_FSIZE、get_mempolicyclone3 集成的 /proc/cpuinfo,增强资源观测与限制能力 (#1300, #1312, #1299)

3. 容器与命名空间:为云原生而生

  • 网络子系统重构:实现了全新的网络子系统,提供了更好的 Linux 兼容性,以及更好的可扩展性 (#977)

  • 文件系统增强SYS_PWRITEVtruncate、路径遍历/目录切换权限检查、mknodat/fatfs 死锁修复、syncfs/openat/unlinkat/lseek 行为校正,保障文件系统语义一致性 (#1322, #1308, #1348, #1346, #1369, #1355, #1344)

  • 命名空间支持:扩展属性 xattr 六大系统调用、capset/capget、UTS namespace、setdomainname/sethostname 修复、IPC namespace 首版、mntns unshare,完善命名空间与安全隔离 (#1248, #1293, #1268, #1298, #1288, #1262)

  • 容器网络与运维:桥接网络、网络栈重构、Dropbear SSH 服务器支持,使得 DragonOS 离真正运行容器更近一步 (#1287, #1295, #1304)

4. 平台与设备:可部署性跃迁

  • x86 kexec + initram 完成闭环,配合 reboot syscall 完善,为快速切换和自举铺平道路 (#1303, #1157)

  • VF2 RISC-V 平台适配,DragonOS 成为国产 RISC-V 场景的可选方案 (#1285)

  • SYS_GETCPU 与 SMP syscall table 对齐,让多核调度与性能分析更精准 (#1368, #1367)

  • Go 语言示例程序,展示多线程场景下的最佳实践 (#1387)

5. 工程效率与社区:省时、省心、可复用

  • CI 与测试:CI 容器升级至 v1.16,加入测试结果上传、syscall 测试监控、实时 stdout 输出,问题定位速度倍增 (#1380, #1364, #1341, #15964250)

  • 自动化测试:引入 gVisor Linux 系统调用自动化测试套件,每次提交/合并,都能实时追踪内核行为与 Linux 的兼容性 (#1306, #1271, #1371, #1296)

  • 开发工具链:Nix-shell Rust 固定版本、FreeBSD bootstrap 支持,让外部贡献者也能快速复现同一环境 (#40603716, #093388bd)

  • 社区与文档:多轮文档翻译更新、EdgeOne CDN 赞助商信息、README/支持者列表刷新 (#1385, #1317, #1315, #1294, #1292, #1290, #1289, #1281)

已知关注点

  • futex 子系统近期大量变更,建议重点执行多线程压力与robust list 回归测试。

  • 新增 kexec/initram & 网络重构涉及启动链路,若自定义硬件需重新验证启动脚本。

  • Namespace/rlimit 相关 syscalls 需更新用户态工具链与测试以覆盖更多边界。

贡献者鸣谢

LoGin、kaleidoscope416、linfeng、Shenjie Yang、JingXuan_Wei、aLinChe、黄铭涛、Bruce.carrot93、Samuel Dai、Vitus、Yuming Jiang、火花等 15 位伙伴共同完成了 0.3.0。

参考资料