img
Home Blog Docs
Posts

Announcing Asterinas 0.17.0

Dec . 19 / 2025 | Authors:Hongliang Tian

Dec . 19 / 2025

Announcing Asterinas 0.17.0

By Hongliang Tian

The Asterinas community is happy to announce a new version of Asterinas, 0.17.0!

This release marks a significant milestone in the evolution of Asterinas as we transition from “just a kernel” to a more complete, usable system. The headline of this release is the introduction of Asterinas NixOS, our first distribution that integrates the Asterinas kernel with the NixOS userspace, and enables real applications and services out of the box—including XFCE, Podman, and systemd. To support this growth, we are also strengthening our governance by establishing the formal RFC (Request for Comments) process, ensuring that major architectural decisions—starting with Asterinas NixOS itself—are designed transparently and collaboratively.

On the architecture front, RISC-V support has improved dramatically, with support for SMP (Symmetric Multiprocessing), FPU (Floating-Point Unit), VirtIO, and the SiFive HiFive Unleashed QEMU machine type. The kernel has also expanded with a new input subsystem (supporting keyboards and mice) and initial support for namespaces and cgroups. For filesystem developers, the big news is the addition of an FS event notification mechanism (inotify), a new ioctl infrastructure, and a new filesystem type, ConfigFS. Finally, we are introducing sctrace—a dedicated tool for tracing and debugging syscall compatibility—now published on crates.io.

We’d also like to extend a huge congratulations to members of the Asterinas community whose outstanding research papers about Asterinas were recently recognized by prestigious academic conferences:

  • “CortenMM: Efficient Memory Management with Strong Correctness Guarantees” received the Best Paper Award at SOSP’25.
  • “RusyFuzz: Unhandled Exception Guided Fuzzing for Rust OS Kernel” was accepted by ICSE’26.
  • “MlsDisk: Trusted Block Storage for TEEs Based on Layered Secure Logging” was accepted by FAST’26.

Asterinas NixOS

We have made the following key changes to Asterinas NixOS:

  • Add NixOS as a distribution for Asterinas
  • Add the XFCE Nix module
  • Add the Podman Nix module
  • Enable systemd
  • Add Asterinas NixOS ISO installer
  • Add Cachix as a source for pre-built binaries
  • Add GitHub workflows to publish ISO images

Asterinas Kernel

We have made the following key changes to the Asterinas kernel:

  • CPU architectures:
    • x86
      • Add TSM-based attestation support for TDX via ConfigFS
    • RISC-V
      • Implement arch-aware vDSO
      • Add VirtIO support for RISC-V platforms
  • Memory management
    • Support sealing memfd files
    • Support executing memfd files and then open("/proc/self/exe")
  • Process management
    • Support CLONE_PARENT flag
    • Support execve in multithreaded process
    • Support PR_SET/GET_SECUREBITS
    • Fix some kill-related behavior
  • IPC
    • Add rt_sigtimedwait syscall
    • Enqueue ignored signals if the signals are blocked
    • Refactor NamedPipe to correct its opening and blocking behaviors
    • Support reopening anonymous pipes from /proc
    • Fix or clarify some futexes bugs
  • File systems
    • VFS
      • Add inotify-related syscalls
      • Add new ioctl infrastructure
      • Add chmod and mkmod macros
      • Add syncfs syscall
      • Add fchmodat2 syscall
      • Support mount bind with a file
      • Support MS_REMOUNT flag
      • Ensure that every FileLike is associated with a dyn Inode
    • Devtmpfs
      • Add /dev/full device
      • Support registering char devices
      • Support registering block device (and their partitions)
    • Procfs
      • Add /proc/cmdline, /proc/stat, /proc/uptime, /proc/version, /proc/[pid]/environ, /proc/[pid]/oom_score_adj, /proc/[pid]/cmdline, /proc/[pid]/mem, /proc/[pid]/mountinfo, /proc/[pid]/fdinfo, and /proc/[pid]/maps
      • Support the sleeping and stopping states in /proc/[pid]/stat
      • Introduce VmPrinter and refactor procfs with VmPrinter
      • Fix a lot of bugs in procfs
    • Ext2
      • Support Ext2 handling of FIFO and devices
      • Fix Ext2 directory entry iteration
      • Fix the behavior of syncing BlockGroup metadata in Ext2
      • Fix some bugs in Ext2 superblock
    • Configfs
      • Add basic configfs implementation
  • Sockets and networking
    • Support UNIX datagram sockets
    • Add sendmmsg syscall
    • Add sethostname and setdomainname syscalls
    • Support SO_BROADCAST and IP_RECVERR
  • Namespace and cgroups
    • Add the namespace framework (along with unshare and setns syscalls)
    • Add the mount namespace
    • Support /proc/[pid]/uid_map and /proc/[pid]/gid_map
    • Implement controller framework for cgroup subsystem
    • Enable process management for cgroups
  • Devices
    • Input devices
      • Add the input subsystem
      • Map the I/O memory to the userspace
      • Add the input devices /dev/input/eventX
      • Add the framebuffer device /dev/fb0
      • Add i8042 mouse
      • Make i8042 initialization stable on real hardware
    • TTY and PTY
      • Add KDSETMODE/KDSKBMODE ioctls
      • Fix PTY closing behavior
      • Make PTY master reads block if no PTY slave is open
      • Make the semantics of TTY-related devices correct
      • Support PTY packet mode
  • System management
    • Add reboot syscall
    • Make reboot -f work on real hardware
    • Support RUSAGE_CHILDREN for getrusage
  • Misc
    • Upgrade to Rust 2024 edition and the 20251208 nightly toolchain
    • Introduce the ASCII art of Asterinas logo in gradient colors
    • Add stage support for init_component macro
    • Add a new tool called Syscall Compatibility Tracer (sctrace)

Asterinas OSTD & OSDK

We have made the following key changes to OSTD and/or OSDK:

  • CPU architectures
    • Common
      • Reorganize ostd::arch::irq
    • x86
      • Better x86 CPU feature detection by rewriting all CPUID-related code
      • Set CR0.WP/NE/MP explicitly to fix AP behavior
      • Extend cache policies for the x86 Architecture
    • RISC-V
      • Add support for RISC-V PLIC
      • Refactor RISC-V trap handling
      • Add RISC-V FPU support
      • Implement fallible memory operations on RISC-V platform
      • Support bootup on SiFive HiFive Unleashed
      • RISC-V SMP boot
      • Full (<=32) RISC-V SMP support
  • CPU
    • Extract CpuId into a dedicated sub-module
  • Memory management
    • Make UniqueFrame::repurpose sound
  • Interrupt handling
    • Refactor OSTD’s irq module for improved clarity
  • Misc
    • Move PCI bus out of OSTD

Asterinas Book

We have made the following key changes to the Book:

  • Add the first RFC: “Establish the RFC process”
  • Add the second RFC: “Asterinas NixOS”
  • Add a new “Limitations on System Calls” section to the book
  • Add the Asterinas NixOS volume

Contributors

This release was made possible by contributions from 27 individuals. Thank you for your amazing work!

  • Ruihan Li (164 commits)
  • Chen Chengjun (90 commits)
  • jiangjianfeng (69 commits)
  • Zejun Zhao (45 commits)
  • Wang Siyuan (45 commits)
  • Tao Su (44 commits)
  • Zhang Junyang (43 commits)
  • Tate, Hongliang Tian (34 commits)
  • Qingsong Chen (21 commits)
  • Yuke Peng (19 commits)
  • Zhe Tang (18 commits)
  • vvsv (16 commits)
  • Hsy-Intel (15 commits)
  • Cautreoxit (13 commits)
  • Yang Zhichao (8 commits)
  • Arthur Paulino (8 commits)
  • wyt8 (5 commits)
  • Zhenchen Wang (5 commits)
  • Wei Zhang (5 commits)
  • zjp (4 commits)
  • Chaoqun Zheng (2 commits)
  • zhuowei shao (1 commit)
  • wheatfox (1 commit)
  • Ruize Tang (1 commit)
  • John Hughes (1 commit)
  • Hang Shu (1 commit)
  • Calvin (1 commit)