备注
AI Translation Notice
This document was automatically translated by Qwen/Qwen3-8B
model, for reference only.
Source document: community/ChangeLog/V0.1.x/V0.1.8.md
Translation time: 2025-05-19 01:43:47
Translation model:
Qwen/Qwen3-8B
Please report issues via Community Channel
V0.1.8
Contributors
The DragonOS V0.1.8 version was contributed by the following developers:
Long Jin longjin@DragonOS.org
Hou Jiaying houjiaying@DragonOS.org
Wu Yujian wuyujian@DragonOS.org
Huang Ting huangting@DragonOS.org
Kong Weichao kongweichao@DragonOS.org
Cai Jiaxin caijiaxin@DragonOS.org
Chi Kejin chikejhian@DragonOS.org
zhaoyao73 dragonlinux@gmail.com
Zhou Hanjie zhouhanjie@DragonOS.org
Sakura Momoka 89176634+TihayaKousaka@users.noreply.github.com
Tptogiar 2528891112@qq.com
Sponsors
Thank you to the following contributors for their support. We will continue to work hard!
Wan Xiaolan
David Wen
Ye Jinyi
Lin
Albert
slientbard
Wu
Anonymous enthusiastic person
Update Content - Kernel
New Features
refactor: Refactor system call module (#_translated_label__267_en)
feature: Add AlignBox and int_like macros (#_translated_label__272_en)
refactor: Rewrite new IPI function & kick_cpu function (#_translated_label__274_en)
feature: Implement gettimeofday() system call and clocksource+timekeeping sub-module (#_translated_label__278_en)
refactor: Reconstruct PCI device interrupts and remove USB-related code (#_translated_label__285_en)
feature: Register serial device, create character device framework (#_translated_label__290_en)
refactor: New memory management module (#_translated_label__303_en)
feature: New binary loader, elf parser (#_translated_label__303_en)
feature: Add ListenTable to detect port occupation (#_translated_label__291_en)
feature: Replace local_irq_save with IrqFlagsGuard implementation (#_translated_label__317_en)
feature: Implement system call Fstat (#_translated_label__295_en)
feature: Implement kernel notifier chain (#_translated_label__316_en)
feature: Add fcntl system call (#_translated_label__323_en)
feature: Add support for per CPU variables (#_translated_label__327_en)
feature: Spinlock guard adds leak, spinlock adds force unlock function (#_translated_label__329_en)
Bug Fixes
bugfix: Fix the issue of not being able to read stdin normally (#_translated_label__264_en)
bugfix: Fix the memory overflow problem when the buffer address passed to the AHCI driver is a user buffer (temporarily solved by allocating a kernel buffer) (#_translated_label__265_en)
bugfix: Solve the bug caused by the improper assembly of local_irq_save and local_irq_restore functions affecting stack behavior (#_translated_label__303_en)
bugfix: Solve the error of local_irq_save not disabling interrupts (#_translated_label__303_en)
bugfix: Solve the error in arch_try_cmpxchg for pointer handling (#_translated_label__307_en)
bugfix: Fix the exception error in wait4 (#_translated_label__312_en)
bugfix: Fix the issue of null device and zero device not being able to open and not behaving as expected (#_translated_label__314_en)
bugfix: Fix the bug in FAT file system not correctly extending file size (#_translated_label__323_en)
bugfix: Fix the use after free issue caused by not using ManuallyDrop in some places of rwlock (#_translated_label__329_en)
Update Content - User Environment
New Features
feature: Add new HTTP server (#_translated_label__265_en)
Bug Fixes
bugfix: Solve the issue of the init segment linking error caused by crt*.o not being sorted in ascending order during linking (#_translated_label__265_en)
Update Content - Others
bugfix: Fix the toolchain and resolve errors caused by the new Rust compiler (#_translated_label__258_en)
feature: Makefile: Add make help command in the root directory (#_translated_label__271_en)
doc: Update GitHub issue template (#_translated_label__277_en)
bugfix: Fix the issue where the relibc header file could not recognize the dragonos definition (#_translated_label__315_en)
feature: Set the remote for the kernel and relibc to the DragonOS Git mirror site to prevent compilation failure due to domestic network issues (#_translated_label__318_en)
feature: Automatic installation and update of dadk (#_translated_label__319_en)
Update Content - Software Porting
feature: Ported sqlite3 (#_translated_label__323_en)
Source Code and Release Mirror Download
You can obtain the source code through the following methods:
Get via Git
You can visit https://github.com/DragonOS-Community/DragonOS/releases to download the source code of the release version, as well as the compiled and runnable disk image.
We also have a mirror repository on Gitee for download: https://gitee.com/DragonOS/DragonOS
Get via DragonOS Software Mirror Site
To address the slow and unstable access to GitHub in China, and to make it convenient for developers to download the source code of each version of DragonOS, we have specially set up a mirror site. You can access the mirror site through the following address:
You can obtain the source code package and the compiled and runnable disk image of DragonOS through the mirror site.
Domestic mirror acceleration: https://mirrors.ringotek.cn/
Open Source Declaration
备注
To promote the healthy development of the DragonOS project, DragonOS is released under the GPLv2 open source license. Anyone who can obtain the source code of DragonOS and the corresponding software products (including but not limited to binary copies and documentation) will enjoy the rights granted by us through the GPLv2 license, and you must also comply with the obligations stipulated in the license.
This is a very strict license that protects the healthy development of open source software and prevents it from being infringed.
For most people with good intentions, you will not violate our open source license.
We encourage the free dissemination and promotion of DragonOS, but please ensure that all actions do not infringe on the legitimate rights and interests of others and do not violate the GPLv2 license.
Please pay special attention to the fact that violations of the open source license, especially commercial closed-source use and any plagiarism or academic misconduct, will be subject to serious accountability. (This is the easiest scenario to violate our open source license.)
Also, please note that according to the requirements of the GPLv2 license, any software modified or developed based on DragonOS must also be open-sourced under the GPLv2 license and must indicate that it is based on DragonOS. It must also ensure that users of these modified versions can easily obtain the original version of DragonOS.
You must ensure that the developers of DragonOS can obtain the source code of your modified version through the same way from public channels. Otherwise, you will violate the GPLv2 license.
For detailed information about the license, please read the LICENSE file in the root directory of the project. Please note that according to the requirements of the GPLv2 license, only the English original version has legal effect. Any translated version is for reference only.
Usage of Open Source Software
During the development of DragonOS, some open source projects were referenced, or parts of their code were introduced, or they were inspired by them. The following list shows them. We sincerely thank the contributors of these open source projects!
Format:
Linux - https://git.kernel.org/ - GPLv2
skiftOS - https://github.com/skiftOS/skift - MIT
FYSOS - https://github.com/fysnet/FYSOS - FYSOS’ License
LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License
LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license
SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license
MINE - 《A Design and Implementation of a 64-bit Operating System》 by Tian Yu; People’s Posts and Telecommunications Press
chcore - 《Modern Operating Systems: Design and Implementation》 by Chen Haibo, Xia Yubin; Machinery Industry Press
SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT
redox - https://gitlab.redox-os.org/redox-os/redox - MIT
All Commit Records of the Current Version
commit 40176b1c6603d487b7eb66fb81e641f0932ab90a
Author: longjin <longjin@RinGoTek.cn>
Date: Tue Aug 15 15:06:57 2023 +0000
删除无用代码,并把about app的版本号更新为0.1.8
commit 67b481888770c6469f572f244a4f97e42da77d1f
Author: houmkh <1119644616@qq.com>
Date: Mon Aug 14 12:18:46 2023 +0800
移动fstat (#330)
* 移动fstat
commit 90a0a49048fdaf5e31320d0c87f8bed8db1bd882
Author: LoGin <longjin@DragonOS.org>
Date: Mon Aug 14 01:24:49 2023 +0800
修正rwlock有的地方由于未使用ManuallyDrop导致的use after free && spinlock守卫新增leak,spinlock新增force unlock功能.(#329)
1.修正rwlock有的地方由于未使用ManuallyDrop导致的use after free
2. spinlock守卫新增leak,spinlock新增force unlock功能.
commit c3dad0011d331d782670e14723aa48e98fbac787
Author: LoGin <longjin@DragonOS.org>
Date: Sun Aug 13 16:28:24 2023 +0800
添加per cpu变量支持 (#327)
commit 42c97fa7f4fee7eeefeda5d2b7ed14f598a58493
Author: LoGin <longjin@DragonOS.org>
Date: Tue Aug 8 23:45:04 2023 +0800
删除旧的libELF (#324)
commit 6d81180b3b7328466b976b69c5f7782aa66d8a89
Author: LoGin <longjin@DragonOS.org>
Date: Tue Aug 8 23:39:22 2023 +0800
移植sqlite3,并修复一些bug (#323)
* bugfix: 程序加载器映射内存时,计算要映射的大小不正确的问题。
* 修正brk系统调用不符合规范的地方
* bugfix: 修正fat文件系统未能正确的扩展文件大小的bug
* 增加fcntl系统调用
* 移植sqlite3
commit 26887c6334cdca2d13ad71dec27fb69faa0a57be
Author: LoGin <longjin@DragonOS.org>
Date: Mon Aug 7 01:38:52 2023 +0800
bugfix: 解决取消低地址映射时,错误的把重映射的物理页释放,从而导致的use after free问题。 (#321)
commit 729a96ef47f473d535d8317a2ace5ba141fd282a
Author: Xshine <gshine@m.scnu.edu.cn>
Date: Sun Aug 6 12:53:47 2023 +0800
实现内核通知链 notifier chain (#316)
* 实现通知链块结构
* 实现通知链的基本功能
* 实现 atomic notifier chain
* 实现 blocking notifier chain
* 使用 rust 范式完成功能
* 支持回调次数 nr_to_call
* 移动至 libs 目录
* 完善通知链相关方法
* 修正相关格式
* 文档编写
* 更改文档路径
commit be63f3b2b6b472daa3ee17180aa607409cb9d182
Author: houmkh <1119644616@qq.com>
Date: Sat Aug 5 18:52:46 2023 +0800
实现系统调用Fstat (#295)
* fstat
* 修改syscall.rs中的verify_area
commit 9550910ae1de900e0291a84d268e8873fa142902
Author: Chiichen <39649411+Chiichen@users.noreply.github.com>
Date: Sat Aug 5 18:30:55 2023 +0800
替换 local_irq_save 为 IrqFlagsGuard 实现 (#317)
commit abf3f634bf7e13e829556e962e7c73a85d163335
Author: LoGin <longjin@DragonOS.org>
Date: Sat Aug 5 15:30:06 2023 +0800
自动安装、更新dadk (#319)
* auto install/auto update dadk
commit d6fd9c1e8025dd679339f9156477cb7d26d3db0d
Author: LoGin <longjin@DragonOS.org>
Date: Sat Aug 5 15:04:08 2023 +0800
设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318)
commit 1a62e7767c1215f9668915b42de770e7993711bf
Author: LoGin <longjin@DragonOS.org>
Date: Wed Aug 2 18:11:05 2023 +0800
解决relibc的头文件没能识别__dragonos__定义的问题 (#315)
commit 06500303303ec14711b4f995e2058e12703f0f2c
Author: LoGin <longjin@DragonOS.org>
Date: Wed Aug 2 17:33:16 2023 +0800
修正null设备以及zero设备无法open、行为不符合预期的问题 (#314)
commit 4da3758acf0327d429dfce3d313b50c2e0fc7723
Author: Chiichen <39649411+Chiichen@users.noreply.github.com>
Date: Wed Aug 2 14:29:59 2023 +0800
修复了wait4的异常报错 (#312)
* 修复了wait4的异常报错
commit 821bb9a2dcfd28f9878d53ba722bdf164cf00f69
Author: Xshine <caijiaxin@dragonos.org>
Date: Fri Jul 28 17:51:05 2023 +0800
增加 ListenTable 来检测端口占用 (#291)
* 增加 ListenTable 来检测端口占用
* 使用Arc封装GlobalSocketHandle
* 删除 listen 处的端口检测逻辑,延至实现端口复用时完成
* 设立两张表,分别记录TCP和UDP的端口占用
* 实现 meatadata 相关逻辑
* 实现socket关闭时,端口在表中移除
* 使用端口管理器重构端口记录表
* 修正与RawSocket相关的端口管理逻辑
* 补充测试文件
* 修正 unbind_port 在逻辑错误
* 修正格式问题
---------
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit 7cc4a02c7ff7bafd798b185beb7b0c2986b9f32f
Author: zhaoyao73 <zhaoyao73@users.noreply.github.com>
Date: Fri Jul 28 03:44:45 2023 -0400
fix arch_try_cmpxchg macro declaration (#307)
fix arch_try_cmpxchg in atomic_cmpxchg
Co-authored-by: Yao Zhao <dragonlinux@gmail.com>
commit a30434f5201ca4c60b9515c8c23444fea3b5a8c6
Author: zhaoyao73 <zhaoyao73@users.noreply.github.com>
Date: Tue Jul 25 10:02:42 2023 -0400
fix some script bugs (#304)
add arch linux prerequisited packages
Co-authored-by: Yao Zhao <dragonlinux@gmail.com>
commit 40fe15e0953f989ccfeb74826d61621d43dea6bb
Author: LoGin <longjin@DragonOS.org>
Date: Sat Jul 22 16:27:02 2023 +0800
新的内存管理模块 (#303)
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。
  内存管理模块主要由以下类型的组件组成:
- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构)
- **用户地址空间管理机制** - 提供对用户地址空间的管理。
- VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作
- 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射
- **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等
- **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。
除上面的新增内容以外,其它的更改内容:
- 新增二进制加载器,以及elf的解析器
- 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。
- 解决local_irq_save未关中断的错误。
- 修复sys_gettimeofday对timezone参数的处理的bug
---------
Co-authored-by: kong <kongweichao@dragonos.org>
commit bb5f098a864cee36b7d2c1ab9c029c0280d94a8a
Author: LoGin <longjin@DragonOS.org>
Date: Sat Jul 22 16:24:55 2023 +0800
Revert "新的内存管理模块 (#301)" (#302)
This reverts commit d8ad0a5e7724469abd5cc3cf271993538878033e.
commit d8ad0a5e7724469abd5cc3cf271993538878033e
Author: LoGin <longjin@DragonOS.org>
Date: Sat Jul 22 16:22:17 2023 +0800
新的内存管理模块 (#301)
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。
  内存管理模块主要由以下类型的组件组成:
- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构)
- **用户地址空间管理机制** - 提供对用户地址空间的管理。
- VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作
- 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射
- **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等
- **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。
除上面的新增内容以外,其它的更改内容:
- 新增二进制加载器,以及elf的解析器
- 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。
- 解决local_irq_save未关中断的错误。
- 修复sys_gettimeofday对timezone参数的处理的bug
commit 0663027b111ffb6ff93becd60ffef1e2b8fbd4c6
Author: TingHuang <92705854+TingSHub@users.noreply.github.com>
Date: Wed Jul 12 12:49:45 2023 +0800
注册串口设备,创建字符设备框架(#290)
* 按照rust规范修改两个函数名称
* 修改一些函数句柄以符合rust规范
* 添加字符设备相关
* 添加字符设备相关文件
* 添加字符设备驱动框架代码
* 将串口注册
* 规范代码
commit cc36cf4a186be834e6c2ab857b9b9501ddb8b1eb
Author: YJwu2023 <yujianwu2019@gmail.com>
Date: Sat Jul 8 17:22:42 2023 +0800
PCI设备中断重构,删去USB相关代码 (#285)
* 修复ecam无法获取MCFG table的问题
* 完善pcie
* 完善irq的错误检测机制
commit 2311e2f30048d09250afc3e2e4e7029627996655
Author: 櫻井桃華 <89176634+TihayaKousaka@users.noreply.github.com>
Date: Fri Jul 7 22:50:46 2023 +0800
修改makefile通过编译 (#287)
commit 36fd013004ee0bd5fc7cfb452ba22531a83a859c
Author: houmkh <1119644616@qq.com>
Date: Sat Jun 17 22:48:15 2023 +0800
实现gettimeofday()系统调用和clocksource+timekeeping子模块 (#278)
- 实现gettimeofday()系统调用
- 实现clocksource+timekeeping子模块部分功能
- 实现了timespec转换成日期时间
commit a55ac7b928a6ca08483bbb3355bea55f1446ccab
Author: LoGin <longjin@DragonOS.org>
Date: Tue Jun 6 17:44:54 2023 +0800
Update issue templates (#277)
commit 5f57834372f6cb720ba14103effa4799e195a963
Author: Tptogiar <2528891112@qq.com>
Date: Tue Jun 6 16:41:02 2023 +0800
Makefile: 根目录下添加make help命令 (#271)
* Makefile: 根目录下添加make help命令
* Makefile: 补充根目录Makefile的help命令
commit aa0367d69e15989684109c5b454e85da9ecb1975
Author: LoGin <longjin@DragonOS.org>
Date: Tue May 30 10:21:11 2023 +0800
新的ipi功能&kick_cpu功能的重写 (#274)
commit bb24249faabc5006784aa98ca17b4cbdcb788c65
Author: LoGin <longjin@DragonOS.org>
Date: Sun May 28 23:00:37 2023 +0800
添加AlignBox和int_like宏 (#272)
commit ab5c8ca46db8e7d4793a9791292122b0b9684274
Author: login <longjin@DragonOS.org>
Date: Wed May 24 17:05:33 2023 +0800
重构系统调用模块 (#267)
* 完成系统调用模块重构
* 更新github workflow
commit 660a04cef803fd73e9b294b30a96421b021a4b9b
Author: login <longjin@DragonOS.org>
Date: Sat May 13 21:17:12 2023 +0800
新增http server (#265)
* 1.修复了当传入ahci驱动的缓冲区地址为用户缓冲区时,产生的内存越界问题.(采用分配内核缓冲区的方式临时解决)
2.新增http server
* 把libssl-dev添加到bootstrap.sh
* http_server增加对父级相对路径的安全检查,防止访问系统内的其他文件
* 检查空指针情况
* 解决由于链接时,crt*.o未按照升序排列导致init段链接错误的问题
commit 49249f4ec94fad7baf923aed68d9a7b2da3de3d4
Author: Bullet <93781792+GP-Bullet@users.noreply.github.com>
Date: Sat May 13 09:55:24 2023 +0800
把调度器实例的裸指针改为Option (#262)
commit bfafc102798ab1968ccf6b04315d8d3359a70ca8
Author: login <longjin@DragonOS.org>
Date: Thu May 11 17:41:42 2023 +0800
修复读取stdin时,无法正常读取的问题。 (#264)
commit 7285c927d95bb4b5c692c51a8f86c47009d07667
Author: login <longjin@DragonOS.org>
Date: Thu May 11 16:17:58 2023 +0800
添加dadk支持 (#263)
* 引入dadk,使用dadk0.1.1来编译test-relibc程序
* 由于gitee仓库体积限制导致无法继续使用gitee上的rust索引,因此更换为清华源
* github workflow的环境中,安装dadk
* Auto configure dragonos rust toolchain
commit b11bb1b25676f528ec1b0e1da0af82b4652f70c4
Author: login <longjin@DragonOS.org>
Date: Sun May 7 22:20:33 2023 +0800
固定编译工具链、修复由于新版rust编译器问题导致的报错。 (#258)
* 固定编译工具链、修复由于新版rust编译器问题导致的报错。
* 完善github workflow环境配置