xref: /DragonOS/docs/community/ChangeLog/V0.1.x/V0.1.2.md (revision 42ec8d160e8e80cbf44244bc66e0f76630b5cb87)
1*42ec8d16Slogin# V0.1.2
2*42ec8d16Slogin
3*42ec8d16Slogin:::{note}
4*42ec8d16Slogin本文作者:龙进 <longjin@RinGoTek.cn>
5*42ec8d16Slogin
6*42ec8d16Slogin2022年12月17日
7*42ec8d16Slogin:::
8*42ec8d16Slogin
9*42ec8d16Slogin## 贡献者名单
10*42ec8d16Slogin
11*42ec8d16SloginDragonOS V0.1.2版本由以下小伙伴贡献代码:
12*42ec8d16Slogin
13*42ec8d16Slogin- 龙进 <longjin@ringotek.cn>
14*42ec8d16Slogin- 吴宇健 <wuyujian@DragonOS.org>
15*42ec8d16Slogin- Gou Ngai <sujintao@DragonOS.org>
16*42ec8d16Slogin- 黄厅 <huangting@DragonOS.org>
17*42ec8d16Slogin- 王文聪 <1297389017@qq.com>
18*42ec8d16Slogin
19*42ec8d16Slogin## 赞助者名单
20*42ec8d16Slogin
21*42ec8d16Slogin感谢以下同学的赞赏,我们将不断努力!
22*42ec8d16Slogin
23*42ec8d16Slogin- David Wen
24*42ec8d16Slogin- [Seele.Clover](https://github.com/seeleclover)
25*42ec8d16Slogin- TerryLeeSCUT
26*42ec8d16Slogin- 悟
27*42ec8d16Slogin- slientbard
28*42ec8d16Slogin
29*42ec8d16Slogin其中,非常感谢**Seele.Clover**给予DragonOS项目人民币500元的赞助与支持!我们对于每一笔赞助款项,将仔细登记,并确保其能被妥善的使用。
30*42ec8d16Slogin
31*42ec8d16Slogin## 更新内容-内核
32*42ec8d16Slogin
33*42ec8d16Slogin- 删除rust_helloworld文件 (#113)
34*42ec8d16Slogin- Signal: 允许用户注册信号处理函数,能够进入自定义的handler。(#112)
35*42ec8d16Slogin    - 支持kill命令
36*42ec8d16Slogin    - 允许用户自定义信号处理函数
37*42ec8d16Slogin    - 新增2个系统调用:`SYS_SIGACTION` , `SYS_RT_SIGRETURN`
38*42ec8d16Slogin    - libc增加`signal()`,`sigaction()`函数。
39*42ec8d16Slogin    - 暂时只支持旧版的sighandler,即:只有1个参数的`void handler(int signum)`类型的信号处理函数。对于另一种信号处理函数`void handler(int signum, siginfo_t *info, void* data)`,尚不支持传递第三个参数。
40*42ec8d16Slogin- 在内核代码中加入自定义的stdint.h文件 (#109)
41*42ec8d16Slogin- 调整编译grub的脚本的部分 (#108)
42*42ec8d16Slogin- 新增32、64位uefi启动 (#105)(#101)
43*42ec8d16Slogin- 使用编译安装的grub-2.06,解决客户机上grub版本不对导致的编译无法运行的问题。
44*42ec8d16Slogin- 增加了timekeeping模块 (#106)
45*42ec8d16Slogin- bugfix: 修复rtc时钟对BCD码进行转换的时候,忘了处理day字段的问题 (#104)
46*42ec8d16Slogin- new: 开发过程文档(完成了一半)
47*42ec8d16Slogin- bootstrap.sh解决下载rust慢的问题
48*42ec8d16Slogin- 更新“构建系统”文档
49*42ec8d16Slogin- procfs->status增加显示preempt和虚拟运行时间 (#100)
50*42ec8d16Slogin- ffz函数:获取u64中的第一个值为0的bit (#100)
51*42ec8d16Slogin- 解决由于编译器优化导致local_irq_restore无法获取到正确的rflags的值的问题
52*42ec8d16Slogin- 使用Rust重构串口驱动 (#99)
53*42ec8d16Slogin
54*42ec8d16Slogin## 更新内容-用户环境
55*42ec8d16Slogin
56*42ec8d16Slogin- about app: 显示当前构建的git commit sha1以及构建时间(#114)
57*42ec8d16Slogin- shell: 修复shell的exec命令对绝对路径的拼接错误问题(#114)
58*42ec8d16Slogin- shell: exec命令增加"&"后台运行选项 (#100)
59*42ec8d16Slogin- new: 测试signal用的app
60*42ec8d16Slogin- 将libc目录进行调整,加入cargo作为rust的包管理器
61*42ec8d16Slogin
62*42ec8d16Slogin
63*42ec8d16Slogin## 源码、发布版镜像下载
64*42ec8d16Slogin
65*42ec8d16Slogin&emsp;&emsp;您可以通过以下方式获得源代码:
66*42ec8d16Slogin
67*42ec8d16Slogin### 通过Git获取
68*42ec8d16Slogin
69*42ec8d16Slogin- 您可以访问[https://github.com/fslongjin/DragonOS/releases](https://github.com/fslongjin/DragonOS/releases)下载发布版的代码,以及编译好的,可运行的磁盘镜像。
70*42ec8d16Slogin- 我们在gitee上也有镜像仓库可供下载:[https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS)
71*42ec8d16Slogin
72*42ec8d16Slogin### 通过DragonOS软件镜像站获取
73*42ec8d16Slogin
74*42ec8d16Slogin&emsp;&emsp;为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
75*42ec8d16Slogin
76*42ec8d16Slogin&emsp;&emsp;您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
77*42ec8d16Slogin
78*42ec8d16Slogin- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org)
79*42ec8d16Slogin- [https://mirrors.DragonOS.org.cn](https://mirrors.DragonOS.org.cn)
80*42ec8d16Slogin
81*42ec8d16Slogin
82*42ec8d16Slogin## 开放源代码声明
83*42ec8d16Slogin
84*42ec8d16Slogin
85*42ec8d16Slogin:::{note}
86*42ec8d16Slogin为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
87*42ec8d16Slogin
88*42ec8d16Slogin这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
89*42ec8d16Slogin
90*42ec8d16Slogin对于大部分的善意的人们而言,您不会违反我们的开源协议。
91*42ec8d16Slogin
92*42ec8d16Slogin我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
93*42ec8d16Slogin
94*42ec8d16Slogin请特别注意,对于违反开源协议的,尤其是**商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责**。(这是最容易违反我们的开源协议的场景)。
95*42ec8d16Slogin
96*42ec8d16Slogin并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
97*42ec8d16Slogin
98*42ec8d16Slogin您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
99*42ec8d16Slogin
100*42ec8d16Slogin关于协议详细内容,还敬请您请阅读项目根目录下的**LICENSE**文件。请注意,按照GPLv2协议的要求,**只有英文原版才具有法律效力**。任何翻译版本都仅供参考。
101*42ec8d16Slogin:::
102*42ec8d16Slogin
103*42ec8d16Slogin### 开源软件使用情况
104*42ec8d16Slogin
105*42ec8d16Slogin&emsp;&emsp;DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
106*42ec8d16Slogin
107*42ec8d16Slogin格式:<项目名> - <链接> - <开源协议>
108*42ec8d16Slogin
109*42ec8d16Slogin- Linux - 	https://git.kernel.org/ - GPLv2
110*42ec8d16Slogin- skiftOS - https://github.com/skiftOS/skift - MIT
111*42ec8d16Slogin- FYSOS - https://github.com/fysnet/FYSOS - [FYSOS' License](https://github.com/fysnet/FYSOS/blob/9a8968e3d6600de34539c028c843f4c06d134039/license.txt)
112*42ec8d16Slogin- LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License
113*42ec8d16Slogin- LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license
114*42ec8d16Slogin- SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license
115*42ec8d16Slogin- MINE - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
116*42ec8d16Slogin- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
117*42ec8d16Slogin- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
118*42ec8d16Slogin
119*42ec8d16Slogin## 当前版本的所有提交记录
120*42ec8d16Slogin
121*42ec8d16Slogin```text
122*42ec8d16Slogincommit 7a818da88a1c7a1760de7671141b0ce1ca4e3dde
123*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
124*42ec8d16SloginDate:   Sat Dec 17 17:49:12 2022 +0800
125*42ec8d16Slogin
126*42ec8d16Slogin    Patch about auto gen version string (#114)
127*42ec8d16Slogin
128*42ec8d16Slogin    * new: about app中,显示当前构建的git commit sha1以及构建时间
129*42ec8d16Slogin
130*42ec8d16Slogin    * bugfix: 修复shell的exec命令对绝对路径的拼接错误问题
131*42ec8d16Slogin
132*42ec8d16Slogincommit 83a7aaa46bbc411c43d4fc099c6c8884efbe4771
133*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
134*42ec8d16SloginDate:   Sat Dec 17 16:31:50 2022 +0800
135*42ec8d16Slogin
136*42ec8d16Slogin    删除rust_helloworld文件 (#113)
137*42ec8d16Slogin
138*42ec8d16Slogincommit 6efd4740336205c9bfdd8b164e667cee2f38781e
139*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
140*42ec8d16SloginDate:   Sat Dec 17 16:27:50 2022 +0800
141*42ec8d16Slogin
142*42ec8d16Slogin    允许用户自定义信号处理函数 (#112)
143*42ec8d16Slogin
144*42ec8d16Slogin    * new: 用户注册信号处理函数,能够进入自定义的handler
145*42ec8d16Slogin
146*42ec8d16Slogin    * 修复忘了传信号的数字给用户的处理函数的bug
147*42ec8d16Slogin
148*42ec8d16Slogin    * new:sigreturn
149*42ec8d16Slogin
150*42ec8d16Slogin    * 删除注释
151*42ec8d16Slogin
152*42ec8d16Slogincommit 0e0c187484281768391e131495f0655e40d70cf7
153*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
154*42ec8d16SloginDate:   Fri Dec 16 16:20:09 2022 +0800
155*42ec8d16Slogin
156*42ec8d16Slogin    在内核代码中加入自定义的stdint.h文件 (#109)
157*42ec8d16Slogin
158*42ec8d16Slogincommit d02e6ea4112ad520aa4090ff73cdf592e14c0a82
159*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
160*42ec8d16SloginDate:   Wed Dec 14 20:01:55 2022 +0800
161*42ec8d16Slogin
162*42ec8d16Slogin    调整编译grub的脚本的部分 (#108)
163*42ec8d16Slogin
164*42ec8d16Slogin    1、bugfix: 修复编译grub的脚本的部分错误
165*42ec8d16Slogin    2、将grub下载源替换为tuna
166*42ec8d16Slogin    3、优化写入磁盘镜像的脚本
167*42ec8d16Slogin    4、将bios文件夹改名为legacy
168*42ec8d16Slogin
169*42ec8d16Slogincommit 38b341b8aa671f75ac26d05059aa2e9a09e653b7
170*42ec8d16SloginAuthor: YJwu2023 <119829947+YJwu2023@users.noreply.github.com>
171*42ec8d16SloginDate:   Wed Dec 14 16:58:49 2022 +0800
172*42ec8d16Slogin
173*42ec8d16Slogin    新增32位uefi启动 (#105)
174*42ec8d16Slogin
175*42ec8d16Slogin    * 新增32位uefi启动
176*42ec8d16Slogin
177*42ec8d16Slogin    * 修复小bug
178*42ec8d16Slogin
179*42ec8d16Slogin    * 增加grub本地编译安装
180*42ec8d16Slogin
181*42ec8d16Slogin    * 增加本地grub编译安装脚本
182*42ec8d16Slogin
183*42ec8d16Slogin    * 修正小错误
184*42ec8d16Slogin
185*42ec8d16Slogin    * 修复空文件夹不上传的bug
186*42ec8d16Slogin
187*42ec8d16Slogincommit 01876902fbf6ed43992cc7d153bd8c505cb5224b
188*42ec8d16SloginAuthor: Gou Ngai <94795048+AlbertSanoe@users.noreply.github.com>
189*42ec8d16SloginDate:   Wed Dec 14 15:13:54 2022 +0800
190*42ec8d16Slogin
191*42ec8d16Slogin    增加了timekeeping模块 (#106)
192*42ec8d16Slogin
193*42ec8d16Slogin    * 增加了timekeeping模块
194*42ec8d16Slogin
195*42ec8d16Slogin    * 格式化文档和细节更改
196*42ec8d16Slogin
197*42ec8d16Slogin    Co-authored-by: longjin <longjin@RinGoTek.cn>
198*42ec8d16Slogin
199*42ec8d16Slogincommit 728aca308917a7d4d0ba10fe8174e9408d77a9a6
200*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
201*42ec8d16SloginDate:   Sun Dec 11 22:59:47 2022 +0800
202*42ec8d16Slogin
203*42ec8d16Slogin    bugfix: 修复rtc时钟对BCD码进行转换的时候,忘了处理day字段的问题 (#104)
204*42ec8d16Slogin
205*42ec8d16Slogincommit 237e95c6ddce72d72ae7fedfeca412fab82b3622
206*42ec8d16SloginAuthor: wwc-15172310230 <78997674+wwc-15172310230@users.noreply.github.com>
207*42ec8d16SloginDate:   Sun Dec 11 22:22:10 2022 +0800
208*42ec8d16Slogin
209*42ec8d16Slogin    调整user下libs的libc目录结构 (#103)
210*42ec8d16Slogin
211*42ec8d16Slogin    * 调整user下libs的libc目录结构
212*42ec8d16Slogin
213*42ec8d16Slogin    * 修正.gitignore文件的问题
214*42ec8d16Slogin
215*42ec8d16Slogin    * 修复无法编译的问题
216*42ec8d16Slogin
217*42ec8d16Slogin    Co-authored-by: longjin <longjin@RinGoTek.cn>
218*42ec8d16Slogin
219*42ec8d16Slogincommit 2291ffdece1dc5a703602f79f74df8a4854d215b
220*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
221*42ec8d16SloginDate:   Sun Dec 11 20:09:58 2022 +0800
222*42ec8d16Slogin
223*42ec8d16Slogin    文档更新 (#102)
224*42ec8d16Slogin
225*42ec8d16Slogin    * new: 开发过程文档(完成了一半)
226*42ec8d16Slogin
227*42ec8d16Slogin    * bootstrap.sh解决下载rust慢的问题
228*42ec8d16Slogin
229*42ec8d16Slogin    * 更新“构建系统”文档
230*42ec8d16Slogin
231*42ec8d16Slogincommit 7f439c5ddbd2ecffc112149d16983975f523052c
232*42ec8d16SloginAuthor: YJwu2023 <119829947+YJwu2023@users.noreply.github.com>
233*42ec8d16SloginDate:   Fri Dec 9 16:08:54 2022 +0800
234*42ec8d16Slogin
235*42ec8d16Slogin    增加uefi启动 (#101)
236*42ec8d16Slogin
237*42ec8d16Slogin    * 增加uefi启动
238*42ec8d16Slogin
239*42ec8d16Slogin    * 修改脚本
240*42ec8d16Slogin
241*42ec8d16Slogin    * uefi修改
242*42ec8d16Slogin
243*42ec8d16Slogin    * 删除错误的注释
244*42ec8d16Slogin
245*42ec8d16Slogin    * 修正写入磁盘镜像的脚本
246*42ec8d16Slogin
247*42ec8d16Slogin    * 修改X86_64为x86_64
248*42ec8d16Slogin
249*42ec8d16Slogin    Co-authored-by: longjin <longjin@RinGoTek.cn>
250*42ec8d16Slogin
251*42ec8d16Slogincommit 1a2eaa402f05f82aaeebe1e03824534a0a425d4d
252*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
253*42ec8d16SloginDate:   Thu Dec 8 22:59:51 2022 +0800
254*42ec8d16Slogin
255*42ec8d16Slogin    signal的处理(kill命令)以及一些其他的改进 (#100)
256*42ec8d16Slogin
257*42ec8d16Slogin    * 将entry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all
258*42ec8d16Slogin
259*42ec8d16Slogin    * new: 增加判断pt_regs是否来自用户态的函数
260*42ec8d16Slogin
261*42ec8d16Slogin    * new: rust的cli和sti封装
262*42ec8d16Slogin
263*42ec8d16Slogin    * 将原有的判断pt_regs是否来自用户态的代码,统一改为调用user_mode函数
264*42ec8d16Slogin
265*42ec8d16Slogin    * ffz函数:获取u64中的第一个值为0的bit
266*42ec8d16Slogin
267*42ec8d16Slogin    * spinlock增加 spinlock irq spin_unlock_irq
268*42ec8d16Slogin
269*42ec8d16Slogin    * 临时解决显示刷新线程迟迟不运行的问题
270*42ec8d16Slogin
271*42ec8d16Slogin    * 更改ffi_convert的生命周期标签
272*42ec8d16Slogin
273*42ec8d16Slogin    * new: 测试signal用的app
274*42ec8d16Slogin
275*42ec8d16Slogin    * 解决由于编译器优化导致local_irq_restore无法获取到正确的rflags的值的问题
276*42ec8d16Slogin
277*42ec8d16Slogin    * new: exec命令增加"&"后台运行选项
278*42ec8d16Slogin
279*42ec8d16Slogin    * procfs->status增加显示preempt和虚拟运行时间
280*42ec8d16Slogin
281*42ec8d16Slogin    * 更改引用计数的FFIBind2Rust trait中的生命周期标签
282*42ec8d16Slogin
283*42ec8d16Slogin    * new: signal处理(kill)
284*42ec8d16Slogin
285*42ec8d16Slogin    * 更正在review中发现的一些细节问题
286*42ec8d16Slogin
287*42ec8d16Slogincommit f8b55f6d3fcbf152a1cb6d6fc722bf1607418b28
288*42ec8d16SloginAuthor: TingHuang <92705854+TingSHub@users.noreply.github.com>
289*42ec8d16SloginDate:   Tue Dec 6 22:15:03 2022 +0800
290*42ec8d16Slogin
291*42ec8d16Slogin    Patch uart (#99)
292*42ec8d16Slogin
293*42ec8d16Slogin    * 添加UART驱动相关文件
294*42ec8d16Slogin
295*42ec8d16Slogin    * 添加驱动核心文件,将rust编写的驱动代码加入Package中
296*42ec8d16Slogin
297*42ec8d16Slogin    * 添加glib.h文件生成rust代码,添加uart驱动代码
298*42ec8d16Slogin
299*42ec8d16Slogin    * 添加串口发送及接收相关代码
300*42ec8d16Slogin
301*42ec8d16Slogin    * 添加字符串发送函数,未实现具体功能
302*42ec8d16Slogin
303*42ec8d16Slogin    * 为调用uart驱动的代码添加rust接口
304*42ec8d16Slogin
305*42ec8d16Slogin    * 添加字符串发送函数,修改C语言调用接口
306*42ec8d16Slogin
307*42ec8d16Slogin    * 添加rust串口驱动
308*42ec8d16Slogin
309*42ec8d16Slogin    * 添加uart.h头文件,将串口端口类型改为enum
310*42ec8d16Slogin
311*42ec8d16Slogin    * 添加注释,规范代码
312*42ec8d16Slogin
313*42ec8d16Slogincommit 036acc52ce9d0fb9e7d92768ff74939a29c07f32
314*42ec8d16SloginAuthor: login <longjin@ringotek.cn>
315*42ec8d16SloginDate:   Tue Nov 29 21:46:13 2022 +0800
316*42ec8d16Slogin
317*42ec8d16Sloginentry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all (#98)
318*42ec8d16Slogin
319*42ec8d16Slogin    * 将entry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all
320*42ec8d16Slogin
321*42ec8d16Slogin```