Rayy Lee

awk 'BEGIN{O="o"~"o";o="O"=="O";O+=+o;o_+=o""o;for(;++_o!=o_-O;)O_=O_"%c";printf(O_,o_*(o_-o)+O+O,o_*(o_-O)-O,o_*o_,o_*o_,o_*(o_-o)-O,o_*(o_-O)+O,o_*(o_-O)+O,o_-o)}'

导航

Asterinas 0.18.0 发布:迈向安全容器(Kata)与机密容器(CoCo)

星绽(Asterinas)社区高兴地宣布,全新版本 0.18.0 正式发布!

image.png

本次发布最大的看点,是星绽已经可以作为基于虚拟机的 Kata Containers 与 Confidential Containers 的客户机 OS ,为这一安全攸关场景提供一个比 Linux 更加安全可靠的内核选项。为此, 0.18.0 新版一口气交付了许多重要特性:命名空间(新增 IPC 与 cgroup 命名空间,并在 /proc/[pid]/ns 下提供 nsfs)、cgroups(PID 子控制器与部分 CPU 子控制器)、用于与宿主机共享文件系统的 virtio-fs、为系统引入硬件熵源的 virtio-rng/dev/hwrng),以及一套完全重写的 vsock,用于打通宿主机与客户机之间的通信。

用户态调试也在这一版本中正式登场。我们实现了 ptrace 系统调用,并配齐了它的核心操作—— PTRACE_SETOPTIONSPTRACE_SYSCALL 以及 PTRACE_PEEK/POKE。正是这些能力,让 GDBstrace 等广受欢迎的调试工具得以在 Asterinas 上运行,并配套提供了经过验证的使用文档与 CI 持续保障。

本次发布还对存储栈做了一次重大升级:ext2 文件系统被全面重写,块设备层迎来全新的 NVMe 驱动,VFS 则新增了 Dentry 重校验(revalidate)机制,并对页缓存(page cache)进行了重构。几项工作叠加,换来的是一个更可靠、也更有能力的存储栈。

最后,Asterinas NixOS 对真实世界软件的覆盖面大幅扩张——已验证可用的热门软件包超过 100 款,其中不乏 CodexQEMUFirefox 这样的重量级选手。为了让这份不断增长的"软件清单"持续可用,我们还集成了一系列新的测试套件,包括 kselftestxfstests,以及 GoPythonJDK 各自的标准单元测试套件。

以上是本次发布的几条主线。下面,我们按模块梳理这一版本的主要变更,方便希望深入了解的读者按图索骥。

Asterinas NixOS

  • 为 Asterinas NixOS 测试套件搭建框架
  • 补充更多已验证应用的文档
  • 为热门应用添加测试
  • 在 Asterinas NixOS 上运行 Go 标准库测试
  • 在 Asterinas NixOS 上运行 JDK 测试
  • 在 Asterinas NixOS 上运行 Python 回归测试
  • 为虚拟化应用添加 QEMU 测试
  • 支持 ARCH_GET_GS/ARCH_SET_GS 以运行 Firefox

 

Asterinas 内核

进程管理:

  • 重构 PidFile 并新增 pidfd_getfd 系统调用、新增 pidfd_send_signal 系统调用,以及让 PidFile 语义对齐 POSIX
  • 修复加载损坏 ELF 文件时的错误行为

Ptrace:

  • 新增 ptrace 系统调用
  • 支持基于 ptrace 的调试
  • 新增 PTRACE_SETOPTIONSPTRACE_SYSCALLPTRACE_PEEK/POKE_TEXT/DATA
  • 为 GDB 与 strace 提供(内核侧)补丁、经验证的使用文档与 CI
  • 支持通过 /proc/[pid]/mem 强制写入
  • 新增 Yama ptrace 作用域

信号与 IPC:

  • 修正 sigsuspend 并修复其他多项信号行为
  • 修复 System V 信号量中的大量 bug

内存管理:

  • 尊重 mmap 的地址提示(address hint)
  • 修复多个 MM 系统调用中错误的返回码及其他问题行为

文件系统:

  • VFS
    • 新增伪 Path
    • 引入 Dentry 重校验机制
    • 重构页缓存实现,并修复一处会将未初始化内存泄露到用户态的页缓存 bug
    • 实现 pivot_root 系统调用
    • open/openat 实现 O_TMPFILE 支持
    • 重构 Metadata 的字段并修正伪文件系统的设备 ID
  • virtio-fs
    • 在 Asterinas 中支持 virtio-fs
  • Ext2
    • 重写 ext2 文件系统
  • Procfs
    • 新增 /proc/mounts/proc/[pid]/auxv/proc/[tid]/proc/[pid]/maps 的更多条目 以及 mountstats

套接字与网络:

  • 重写 vsock
  • 新增初步的 IPv6 支持
  • 在缺少 CAP_NET_BIND_SERVICE 时拒绝绑定特权端口
  • 修复若干 UDP 问题

命名空间与 cgroups:

  • 支持 nsfs(/proc/[pid]/ns
  • 支持 IPC 命名空间
  • 支持 cgroup 命名空间
  • 实现 cgroup PID 子控制器
  • 新增部分 cgroup CPU 子控制器,提供 cpu.stat 统计信息 与 占位的 cpu.weight/cpu.max 限制文件
  • 绑定挂载命名空间文件

安全:

  • 实现 capabilities 以及以 root 身份执行程序
  • 实现 capability bounding set 支持
  • 修复凭证相关的系统调用并加以清理
  • 新增初步的 LSM 框架

设备:

  • 块设备与 NVMe
    • 新增 NVMe 驱动
  • PCI
    • 改进 PCI 设备枚举与探测
    • 从 FDT/ACPI 获取 PCI 总线范围,并在 x86 上支持 PCI ECAM
  • TTY 与控制台
    • 支持多 TTY
    • 支持 NS16550A UART 控制台、/dev/ttyS0 以及 console=ttyS0
    • 键盘相关增强
  • VirtIO
    • 支持 virtio-rng 并以 /dev/hwrng 暴露
    • virtqueue 视为不可信,并在 aster-virtio 中使用可失败的内存分配
  • TDX
    • 新增 TSM-MR(测量寄存器)sysfs 支持

测试:

  • 接入 Linux kselftest 测试套件
  • 接入 xfstests 测试套件

其他:

  • 新增通用系统调用表
  • 引入内核参数框架

 

Asterinas OSTD 与 OSDK

OSTD:

  • 用 OSTD 自有的日志 API 替换 log crate
  • 基于 zerocopy 重构 Pod
  • 重构 DMA API
  • 新增用于类型化内存拷贝的 Memcpy/Memset trait 框架

其他:

  • 新增 ARM(aarch64)上的 Docker 开发环境

 

Asterinas Book

  • 新增编码规范
  • 新增 OSTD 的健全性(soundness)分析
  • 新增 Kata Containers 相关文档
  • 新增机密容器(CoCo)相关文档

 

致谢贡献者

本次发布离不开 36 位贡献者的辛勤付出。感谢你们出色的工作!

  • Ruihan Li(191 commits)

  • jiangjianfeng(92 commits)

  • Wang Siyuan(72 commits)

  • Qingsong Chen(64 commits)

  • Chen Chengjun(59 commits)

  • Tate, Hongliang Tian(52 commits)

  • Tao Su(46 commits)

  • Zhang Junyang(36 commits)

  • zjp(26 commits)

  • li041(23 commits)

  • Xinyi Yu(23 commits)

  • Marsman1996(18 commits)

  • wyt8(17 commits)

  • Aaron Chen(9 commits)

  • zzj-5341(9 commits)

  • Chaoqun Zheng(8 commits)

  • Hsy-Intel(7 commits)

  • Cautreoxit(4 commits)

  • Chao Liu(4 commits)

  • Junrui Luo(4 commits)

  • Ray Lee(4 commits)

  • rikosellic(4 commits)

  • TankTechnology(4 commits)

  • Zhenchen Wang(4 commits)

  • Yuke Peng(3 commits)

  • Zhihang Shao(3 commits)

  • yyda(3 commits)

  • Arthur Paulino(1 commit)

  • Jakob Hellermann(1 commit)

  • Linermao(1 commit)

  • lxh(1 commit)

  • Shen Bowen(1 commit)

  • Wei Zhang(1 commit)

  • wrj97(1 commit)

  • YanLien(1 commit)

  • zzjrabbit(1 commit)

Asterinas 是一个用 Rust 编写、兼容 Linux ABI 的框内核(framekernel)操作系统,致力于在保持高性能的同时,提供更强的内存安全与可靠性保障。欢迎访问我们的 GitHub 仓库,给我们点亮一颗 Star,或加入社区一起共建!

图片

项目仓库

Gitub:   github.com/asterinas/asterinas

posted on 2026-06-08 22:27  rayylee  阅读(4)  评论(0)    收藏  举报