|
| 1 | +# V.3.0 |
| 2 | + |
| 3 | +> 发布日期: 2025-11-20 |
| 4 | +
|
| 5 | +## 核心亮点 |
| 6 | + |
| 7 | +### Linux 兼容性突破 |
| 8 | +- **已通过 275 个 Linux 兼容性测试用例**,可在 [ci-dashboard.dragonos.org](https://ci-dashboard.dragonos.org) 持续跟踪测试结果 |
| 9 | +- 引入 gVisor Linux 系统调用自动化测试套件,每次提交/合并都能实时追踪内核行为与 Linux 的兼容性 |
| 10 | +- 通过多项 gVisor 系统调用测试,内核行为与 Linux 更接近 |
| 11 | + |
| 12 | +### 容器原生能力显著增强 |
| 13 | +- **命名空间支持**:UTS、IPC、mnt 命名空间完善,支持 `unshare` 操作,容器隔离边界与权限模型向 Linux 主线看齐 |
| 14 | +- **权限与能力**:`capset/capget` 系统调用、`sethostname/domainname` 修复,完善容器身份管理 |
| 15 | +- **文件系统增强**:xattr 六个系统调用、`SYS_PWRITEV`、`truncate`、路径遍历/目录切换权限检查,保障容器镜像构建和文件挂载的可控性 |
| 16 | +- **网络子系统重构**:全新的网络子系统实现,提供更好的 Linux 兼容性和可扩展性;桥接网络支持,应对多租户与边缘节点场景 |
| 17 | +- **运维工具**:Dropbear SSH 服务器支持,使轻量云原生场景可以即装即用 |
| 18 | + |
| 19 | +### 多线程稳定性提升 |
| 20 | +- 线程组退出机制、PI futex、`prctl(PR_SET_PDEATHSIG/PR_SET_NAME)` 等一系列改动,让复杂进程的生命周期控制更接近 Linux 主线 |
| 21 | +- Go 语言示例程序展示 DragonOS 在多线程场景下的最佳实践 |
| 22 | +- vfork、CLONE_PARENT_SETTID、signal frame、FP 状态等历史遗留问题彻底修复 |
| 23 | + |
| 24 | +### 系统调用全面扩容 |
| 25 | +新增 10+ 个系统调用接口支持,包括: |
| 26 | +- `waitid`、`rt_sigtimedwait`、`setitimer/getitimer`、`clock_nanosleep`、`tgkill/tkill` |
| 27 | +- `SYS_GETCPU`、`SYS_PWRITEV`、`truncate` |
| 28 | +- xattr 相关六个系统调用、`capset/capget` |
| 29 | +- `clone3`、`get_mempolicy`、`mincore` |
| 30 | + |
| 31 | +## 版本概览 |
| 32 | +- **内核特性**:线程组退出、PI futex、PR_SET_PDEATHSIG/PR_SET_NAME、SYS_GETCPU、waitid、rt_sigtimedwait、setitimer/getitimer、clock_nanosleep 等调度/信号链路全面增强 |
| 33 | +- **内存与同步**:VM_DONTCOPY、mincore、RLIMIT_FSIZE、资源限制框架、异常表用户态访问保护,futex 子系统修复/重构 10+ 项 |
| 34 | +- **文件系统与命名空间**:引入 `pwritev`、`truncate`、xattr 六个系统调用、路径权限检查、UTS/mnt/IPC namespace、capset/capget、/proc 改进 |
| 35 | +- **平台与网络**:x86 kexec+initram、VF2 RISC-V 适配、桥接网络、大规模网络栈重构、Dropbear SSH 服务器、Go 用户态演示与工具链完善 |
| 36 | +- **工程效率**:CI 容器升级、测试上传与监控、gVisor/FreeBSD bootstrap 支持、Nix-shell 工具链版本锁定 |
| 37 | + |
| 38 | +## 详细变更 |
| 39 | + |
| 40 | +### 1. 线程与信号:向 Linux 行为对齐 |
| 41 | +- PRCTL 新选项、备用信号栈拷贝、克隆/等待语义补完,`waitid`/job control、资源限制(rlimit)框架与 RLIMIT_FSIZE 检查 (#1386, #1363, #1362, #1333, #1300, #1312)。 |
| 42 | +- `setitimer/getitimer`、`clock_nanosleep`、`tgkill/tkill` 等定时器/信号路由补齐;fs/gs 用户空间验证、`clone3` + `/proc/cpuinfo`、`PR_SET_PDEATHSIG` 支持,提升 ABI 兼容性 (#1377, #1307, #1336, #1299). |
| 43 | +- 大量信号/线程相关修复:vfork、CLONE_PARENT_SETTID、signal frame、FP 状态、sys_sigaction/sigprocmask、/proc/self/exe 链接等,解决兼容性和稳定性问题 (#1358, #1342, #1357, #1356, #1347, #1359)。 |
| 44 | + |
| 45 | +### 2. Futex & 内存:同步栈焕然一新 |
| 46 | +- PI futex、共享键生成重构、robust futex 竞态修复、wake op 兼容性、参数校验、futex test 启用,形成更完整的 futex 行为矩阵 (#1373, #1376, #1374, #1372, #1371, #1326, #1321, #1320, #1311, #1276, #d5158a0, #e85d1cd). |
| 47 | + |
| 48 | +- **内存管理改进**:VM_DONTCOPY 标志、异常表驱动的安全用户态访问、mincore、madvise/msync 边界修复、匿名共享页同步、伙伴分配器死锁 & 边界检查等内核内存改进 (#1383, #1349, #1334, #1301, #1258, #1345, #1334, #1361, #1280) |
| 49 | +- **资源限制**:Rlimit 框架与 RLIMIT_FSIZE、`get_mempolicy`、`clone3` 集成的 `/proc/cpuinfo`,增强资源观测与限制能力 (#1300, #1312, #1299) |
| 50 | + |
| 51 | +### 3. 容器与命名空间:为云原生而生 |
| 52 | +- **网络子系统重构**:实现了全新的网络子系统,提供了更好的 Linux 兼容性,以及更好的可扩展性 (#977) |
| 53 | +- **文件系统增强**:`SYS_PWRITEV`、`truncate`、路径遍历/目录切换权限检查、`mknodat`/fatfs 死锁修复、`syncfs`/`openat`/`unlinkat`/`lseek` 行为校正,保障文件系统语义一致性 (#1322, #1308, #1348, #1346, #1369, #1355, #1344) |
| 54 | +- **命名空间支持**:扩展属性 xattr 六大系统调用、`capset/capget`、UTS namespace、`setdomainname/sethostname` 修复、IPC namespace 首版、mntns `unshare`,完善命名空间与安全隔离 (#1248, #1293, #1268, #1298, #1288, #1262) |
| 55 | +- **容器网络与运维**:桥接网络、网络栈重构、Dropbear SSH 服务器支持,使得 DragonOS 离真正运行容器更近一步 (#1287, #1295, #1304) |
| 56 | + |
| 57 | +### 4. 平台与设备:可部署性跃迁 |
| 58 | +- x86 `kexec` + initram 完成闭环,配合 reboot syscall 完善,为快速切换和自举铺平道路 (#1303, #1157) |
| 59 | +- VF2 RISC-V 平台适配,DragonOS 成为国产 RISC-V 场景的可选方案 (#1285) |
| 60 | +- SYS_GETCPU 与 SMP syscall table 对齐,让多核调度与性能分析更精准 (#1368, #1367) |
| 61 | +- Go 语言示例程序,展示多线程场景下的最佳实践 (#1387) |
| 62 | + |
| 63 | +### 5. 工程效率与社区:省时、省心、可复用 |
| 64 | +- **CI 与测试**:CI 容器升级至 v1.16,加入测试结果上传、syscall 测试监控、实时 stdout 输出,问题定位速度倍增 (#1380, #1364, #1341, #15964250) |
| 65 | +- **自动化测试**:引入 gVisor Linux 系统调用自动化测试套件,每次提交/合并,都能实时追踪内核行为与 Linux 的兼容性 (#1306, #1271, #1371, #1296) |
| 66 | +- **开发工具链**:Nix-shell Rust 固定版本、FreeBSD bootstrap 支持,让外部贡献者也能快速复现同一环境 (#40603716, #093388bd) |
| 67 | +- **社区与文档**:多轮文档翻译更新、EdgeOne CDN 赞助商信息、README/支持者列表刷新 (#1385, #1317, #1315, #1294, #1292, #1290, #1289, #1281) |
| 68 | + |
| 69 | +## 已知关注点 |
| 70 | +- futex 子系统近期大量变更,建议重点执行多线程压力与robust list 回归测试。 |
| 71 | +- 新增 kexec/initram & 网络重构涉及启动链路,若自定义硬件需重新验证启动脚本。 |
| 72 | +- Namespace/rlimit 相关 syscalls 需更新用户态工具链与测试以覆盖更多边界。 |
| 73 | + |
| 74 | +## 贡献者鸣谢 |
| 75 | +LoGin、kaleidoscope416、linfeng、Shenjie Yang、JingXuan_Wei、aLinChe、黄铭涛、Bruce.carrot93、Samuel Dai、Vitus、Yuming Jiang、火花等 15 位伙伴共同完成了 0.3.0。 |
| 76 | + |
| 77 | +## 参考资料 |
| 78 | +- **Linux 兼容性测试看板**:[ci-dashboard.dragonos.org](https://ci-dashboard.dragonos.org) |
| 79 | +- **社区仓库**:[github.com/DragonOS-Community/DragonOS](https://github.com/DragonOS-Community/DragonOS) |
| 80 | + |
0 commit comments