备注
AI Translation Notice
This document was automatically translated by hunyuan-turbos-latest
model, for reference only.
Source document: community/ChangeLog/V0.2.x/V0.2.0.md
Translation time: 2025-08-22 15:19:44
Translation model:
hunyuan-turbos-latest
Please report issues via Community Channel
V0.2.0
Release Date: 2025-08-22
Version Positioning: 0.2.0 is a milestone version of DragonOS in the three dimensions of “usability, observability, and extensibility” — introducing support for ext4, dynamic linking, eBPF, virtualization, namespaces (initial PID/Mount/User), multi-architecture (x86_64 / RISC-V64 / LoongArch64), as well as significant restructuring of the system call subsystem and memory/file cache subsystems, laying the foundation for containerization, networking, and scheduling enhancements in subsequent 0.3.x versions.
📌 Executive Summary
Key Highlights:
File System & Storage: Added ext4; completed mount/umount2; implemented gendisk/partition scanning;
/proc/mounts
; systematic page cache and file mapping; experimental overlayfs support; improved FAT & VFS metadata (statx / newfstatat).Processes & Namespaces: Introduced PID Namespace, Mount Namespace, Namespace Proxy; implemented
unshare()
; improved process group / Session / TTY job control; enhanced/proc
process information.Memory & Virtual Memory: mmap lazy allocation,
msync
, private/shared file mappings; PageCache dirty page synchronization/recycling; multiple stack usage optimizations and stack overflow fixes; improved SLAB and buddy recycling.Observability & Extensibility: Initial eBPF support (rbpf → mainline / kprobe / tracepoint / Aya ecosystem); tracepoint framework; static keys.
Virtualization: Introduced KVM/VMX basic framework and EPT; cleaned up old KVM code; improved boot stability.
Architecture: Added LoongArch64 boot & early exception handling; RISC-V64 improvements; multi-boot protocol abstraction (Multiboot2 / HVM / Serial Console / Framebuffer).
System Calls & Kernel Structure: Unified syscall table; modular migration of numerous subsystems;
ERESTARTSYS
mechanism; added/completed numerous system calls (poll/epoll/select, eventfd, execveat, unshare, msync, etc.).Security & Permissions: Cred framework (UID/GID/FSUID/permission determination);
set*id / setres*
;chown/chmod
migration and fixes.Devices & I/O: virtio console, virtio blk partition recognition, loopback network card, TTY + epoll, HVC, PCI configuration space access, network device sysfs registration.
Toolchain & Ecosystem: Dynamic linking (ELF interpreter); Dadk 0.2.0 accelerated builds; unified user-space program builds; experimental integration with Tokio single-threaded runtime; automated documentation translation and versioning.
Stability & Quality: Fixed numerous stack frames/deadlocks/memory overflows/races/signals/wait semantics/PageCache issues; improved backtrace/unwind; unified logging system.
⚠️ Major Changes & Potential Incompatibilities (Breaking / Important Changes)
Dadk upgraded to 0.2.0: Legacy configurations are incompatible; migration required per new documentation.
Syscall structure reorganization: Subsystems migrated to table-driven architecture; custom patches need adaptation.
Default kernel stack size increased from 16K → 32K, with Guard Pages / write protection (x86_64).
PageCache semantics upgraded:
mmap
+ direct reads/writes now requiremsync
; legacy behavior assumptions need adjustment.Namespace architecture initial: Interfaces may change in the future (still experimental).
eBPF interface in early form: Maps / Helpers / type restrictions may change later.
✨ New / Enhanced Features (Features & Enhancements)
1. File Systems & VFS
ext4: Integrated based on another_ext4, mountable from block devices.
mount/umount2: Real block device mount chain + partition scanning (MBR); supports MountFlags;
/proc/mounts
.overlayfs (experimental): Multiple read-only layers + top-layer write copy-up + whiteout.
gendisk abstraction; virtio disk as root filesystem; automatic block device registration in devfs.
FAT/vfat:
rename/move
refactored;statx
creation time (btime); file mapping; page cache sync fixes.VFS:
statx/newfstatat
,faccessat2
,linkat/renameat2
,readlinkat
, etc.; split open/close/stat/ioctl; LookUpFlags;/proc
extended (kthread marking / FD occupancy / exe link / run/start times / TTY info).
2. Processes / Namespaces / Sessions
PID Namespace: ID mapping and isolation; nsproxy unified mounting.
Mount Namespace: Isolated root mount tree.
unshare()
: New namespace creation (currently covers PID/Mount basics).Session / Process Group: Complete job control; TTY foreground process group signals (SIGINT, etc.);
wait4
fixes.Reboot process enhanced (magic verification / multiple cmd reservations).
3. Memory Management (MM)
mmap
lazy allocation /msync
/mprotect
fixes /madvise
/msync
table integration.PageCache: ID management, page writeback, dirty page cleaning, recycling thread, multi-mapping consistency fixes.
SLAB → buddy release path completion; stack overflow detection (clippy); large function splitting to reduce stack usage.
mincore()
placeholder returnsENOSYS
;truncate_inode_pages
framework.
4. Observability & eBPF
bpf()
: Initial Maps / kprobe / statistical examples; rbpf upgraded → mainline; Aya-compatible templates.Tracepoint framework; static key support for hotspot condition enabling.
5. Virtualization & Platform
Initial KVM/VMX + EPT; old KVM code cleaned up.
HVM / Multiboot2 / boot command line parsing (Arg/KV/EarlyKV).
LoongArch64: Boot into
kernel_main
+ exception handling; RISC-V64 runs Rust HelloWorld; multi-platform serial/console abstraction; Serial Console + nographic.
6. Devices & I/O
virtio console (HVC); virtio blk/net/console interrupt naming improvements; PCI configuration space access (portio).
Loopback network card; network device sysfs nodes and attributes; DHCP stability.
eventfd
/epoll
/poll
/ppoll
/select
/pselect6
: Consistent wait/timeout/signal handling.TTY: Adapted to epoll; control character parsing; baud rate/termios; tab/erase fixes; SIGINT broadcasting.
7. Security & Accounts
Cred framework: UID/EUID/FSUID/GID/group lists;
seteuid/setegid/setres*
;chown/chmod/fchownat/lchown
.get/setgroups
;umask
type transformation;/proc
status name refinement.
8. System Call Subsystem
Unified syscall table;
ERESTARTSYS
; batch migration (process/mm/vfs/ipc).Added/completed:
mount
,umount2
,eventfd
,poll/ppoll/select/pselect6
,epoll
refactored,fchdir
,mkdirat/mkdirat2
,utimensat/utimes
,newfstatat/statx
,execveat
,unshare
,set|getgroups
,msync
,madvise
,mremap
,mprotect
,brk/sbrk
,reboot
enhanced,rt_sigpending
,mincore(ENOSYS)
, etc.
9. Toolchain / Build / Documentation
Dadk 0.2.0: Image lifecycle management / build acceleration / profiling.
Unified user program builds: Rust + C; example Rust applications.
Dynamic linking ELF interpreter; busybox boot mode & NovaShell/DragonReach evolution.
Automated documentation translation, multilingual, multi-version Sphinx; footer shows commit; README / Q&A / namespace docs updated.
CI: Docker build caching, branch-triggered, auto image pushing, MinIO/S3 distribution, loongarch64 QEMU builds, toolchain nightly locking, backtrace/unwind upgrades, stack overflow tests.
🚀 Performance & Resource Usage (Performance & Footprint)
Reduced multiple large stack frames: IRQ initialization split, ACPI table reading macro-ized, process create/memory pool structures rewritten (Vec replacing large arrays).
PageCache secondary mapping write panic fixes → improved mmap IO coherence; reduced copies.
SLAB free page recycling → buddy, reducing resident memory.
Early detection of illegal writes via write protection + Guard Pages.
🛠 Stability & Critical Fixes (Stability & Fixes)
Representative fixes:
Wait/process:
wait/wait4
semantics,do_wait
lock release, blocked child process handling.I/O Multiplexing: epoll inode reference release, epoll timeout/wake broadcast, poll boundary/RestartBlock.
Pipes/Signals: pipe/FIFO non-blocking + signal/kill semantics; blocked pipes can be killed; named pipes POSIX behavior.
PageCache: mmap multi-instance consistency; panic on writeback of dropped address space;
unlink
post dirty page handling.Futex: User-space address safety
safe_read/safe_write
; robust list.Signals: Default handler restoration; SIGINT distribution; KILL pid=1 feedback; pending not masked checks;
execve
error propagation.TTY: Foreground process group null error; init early character input crash; tab expansion out-of-bounds.
Timers: Insertion boundaries;
sleep
interrupted by signalsERESTARTSYS
.Races/Memory: slab UAF/overflows; nttyData stack overflow; buddy construction large stack frames; incorrect kernel address RIP output.
File Systems:
getcwd
semantics;read O_PATH
validation;unlink
post dirty cleanup; remount errors;mprotect vm_flags
.ELF: Interpreter path read bounds;
execve
failure error codes.Multiplexing:
select/pselect6
early compilation issues.virtio/PCI: Multi-device interrupt conflicts; PCI initialization order; virtio net interrupt handling.
Networking: DHCP NIC order; loopback / poll listen states.
🧾 New System Call List (Partial)
mount
, umount2
, fchdir
, mkdirat/mkdirat2
, linkat/renameat/renameat2
, newfstatat
, statx
, readlinkat
, faccessat/faccessat2
, eventfd
, poll
, ppoll
, select
, pselect6
, epoll
(refactored), utimensat
, utimes
, msync
, madvise
, mremap
, mprotect
, brk/sbrk
(tabled), execveat
, unshare
, setgroups/getgroups
, rt_sigpending
, reboot
(enhanced), mincore(ENOSYS)
…
🧪 Development & Build Experience (Dev Experience)
Dadk 0.2.0: Unified image creation / mounting / unmounting; build acceleration; profiling.
User Programs: Unified Rust + C build pipelines; Rust examples.
Toolchain: Fixed nightly versions & upgrade scripts; multi-architecture cross-toolchain scripts.
Documentation: Automated translation & stale content cleanup; bilingual (EN/zh); FAQ / build issue guidance.
🙌 Contributors (Partial, by Commit Activity / Alphabetical)
Thanks to all contributors for their ongoing efforts in kernel subsystems, file systems, virtualization, documentation, and toolchains.
Special thanks to the following core contributors:
longjin - Project lead, numerous core feature implementations and restructurings
chenlinfeng (Godones) - eBPF, networking, file systems, etc.
sparkzky - TTY, process management, system call restructurings
MemoryShore - File systems, memory management, VFS
Samuel Dai - KVM, networking, drivers
黄铭涛 - PCI, drivers, kernel optimizations
And all other contributors!
Contributors for This Release
LoGin longjin@DragonOS.org, jinlong@tencent.com
linfeng: chenlinfeng25@outlook.com, 1925466036@qq.com
火花 sparkhhhhhhhhhh@outlook.com, 146502758+sparkzky@users.noreply.github.com
MemoryShore: 1353318529@qq.com, 105195940+MemoryShore@users.noreply.github.com
黄铭涛: 1037827920@qq.com, 114841534+1037827920@users.noreply.github.com
Jomo xuzihao@dragonos.org
Samuel Dai: samuka007@dragonos.org, dailvchen@dragonos.org
曾俊 110876916+ZZJJWarth@users.noreply.github.com
kaleidoscope416 2448956191@qq.com
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
DoL 1240800466@qq.com
donjuanplatinum 113148619+donjuanplatinum@users.noreply.github.com
chiichen chiichen@qq.com
BrahmaMantra 140599389+BrahmaMantra@users.noreply.github.com
Vitus: zhzvitus@gmail.com, 144411726+Vitus213@users.noreply.github.com
YJwu2023 yujianwu2019@gmail.com
GnoCiYeH heyicong@dragonos.org
LIU Yuwei 22045841+Marsman1996@users.noreply.github.com
yuyi2439 68320855+yuyi2439@users.noreply.github.com
codeironman 1553389239@qq.com
EMasi 1176949486@qq.com
SMALLC 121806694+smallcjy@users.noreply.github.com
laokengwt 143977175+laokengwt@users.noreply.github.com
Godones chenlinfeng25@outlook.com
oeasy1412 oeasy1412@gmail.com
dragonosbot bot@dragonos.org
xiaolin2004 1553367438@qq.com, 109840258+xiaolin2004@users.noreply.github.com
✅ Smoke Test Checklist
Basic Boot: x86_64 / riscv64 / loongarch64 (serial/graphical); check
/proc/mounts
/proc/*/status
.Dynamic Linking: Run dynamically linked busybox / Rust programs.
File Systems: Mount ext4 & vfat; create/delete/rename;
mmap
+ direct writes +msync
.Process Control: Multiple shells / Ctrl+C / foreground/background switching.
Networking: loopback ping / DHCP initialization logs.
eBPF: Load example kprobe statistics program; read
trace_pipe
.poll/epoll: Run
test_poll
/test_epoll
.Reboot: Execute reboot syscall (simulated).
Namespaces: Test
unshare
(mount isolation / PID observation).
🙏 Acknowledgements
Thanks to all developers, testers, documentation contributors, and community users for their feedback. DragonOS 0.2.0 builds upon prior versions’ experiments and accumulations, also laying structural foundations for future containerization, resource isolation, and performance optimizations. Welcome to continue participating via Issues / PRs / Discussions.
🔎 Appendix: Keyword Index (for Easy Lookup)
ext4
overlayfs
PageCache
mmap
PID namespace
mount namespace
unshare
syscall table
eBPF
kprobe
tracepoint
Aya
KVM
VMX
EPT
LoongArch64
RISC-V
virtio console
loopback
eventfd
poll
epoll
select
pselect6
ppoll
statx
newfstatat
execveat
dynamic linking
Dadk 0.2.0
Cred
chown
msync
mprotect
utimensat
reboot
slab
buddy
Guard Page
WP
Tokio
groupprocess/session
– END OF DragonOS 0.2.0 Release Notes –