1*d85ebf1fSlogin# V0.1.1 2*d85ebf1fSlogin 3*d85ebf1fSlogin:::{note} 4*d85ebf1fSlogin本文作者:龙进 <longjin@RinGoTek.cn> 5*d85ebf1fSlogin 6*d85ebf1fSlogin2022年11月27日 7*d85ebf1fSlogin::: 8*d85ebf1fSlogin 9*d85ebf1fSlogin## 贡献者名单 10*d85ebf1fSlogin 11*d85ebf1fSloginDragonOS V0.1.1版本由以下小伙伴贡献代码: 12*d85ebf1fSlogin 13*d85ebf1fSlogin- 龙进 <longjin@RinGoTek.cn> 14*d85ebf1fSlogin- 周于喆 <zhouyuzhe@DragonOS.org> 15*d85ebf1fSlogin 16*d85ebf1fSlogin## 赞助者名单 17*d85ebf1fSlogin 18*d85ebf1fSlogin感谢以下同学的赞赏,我们将不断努力! 19*d85ebf1fSlogin 20*d85ebf1fSlogin- David Wen 21*d85ebf1fSlogin- TerryLeeSCUT 22*d85ebf1fSlogin- 悟 23*d85ebf1fSlogin- slientbard 24*d85ebf1fSlogin 25*d85ebf1fSlogin其中,非常感谢**David Wen**给予DragonOS项目人民币1000元的赞助与支持!我们对于每一笔赞助款项,将仔细登记,并确保其能被妥善的使用。 26*d85ebf1fSlogin 27*d85ebf1fSlogin## 更新内容-内核 28*d85ebf1fSlogin 29*d85ebf1fSlogin- 新增rust ffi (#77) 30*d85ebf1fSlogin- port kmalloc and printk to rust 31*d85ebf1fSlogin- rust下的kdebug kinfo kwarn kBUG kerror宏 32*d85ebf1fSlogin- bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题 33*d85ebf1fSlogin- 目录结构优化:移动asm.h和cmpxchg.h 34*d85ebf1fSlogin- signal的发送 35*d85ebf1fSlogin- procfs:查看进程的status 36*d85ebf1fSlogin- 解决第一次编译时磁盘镜像权限错误的问题 37*d85ebf1fSlogin- 将fork相关代码移动到fork.c 38*d85ebf1fSlogin 39*d85ebf1fSlogin## 更新内容-用户环境 40*d85ebf1fSlogin 41*d85ebf1fSlogin- shell:增加kill命令,可向目标进程发送信号。但由于仍未完善signal机制,因此目标进程暂时不能响应这个信号。 42*d85ebf1fSlogin 43*d85ebf1fSlogin 44*d85ebf1fSlogin## 源码、发布版镜像下载 45*d85ebf1fSlogin 46*d85ebf1fSlogin  您可以通过以下方式获得源代码: 47*d85ebf1fSlogin 48*d85ebf1fSlogin### 通过Git获取 49*d85ebf1fSlogin 50*d85ebf1fSlogin- 您可以访问[https://github.com/fslongjin/DragonOS/releases](https://github.com/fslongjin/DragonOS/releases)下载发布版的代码,以及编译好的,可运行的磁盘镜像。 51*d85ebf1fSlogin- 我们在gitee上也有镜像仓库可供下载:[https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS) 52*d85ebf1fSlogin 53*d85ebf1fSlogin### 通过DragonOS软件镜像站获取 54*d85ebf1fSlogin 55*d85ebf1fSlogin  为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站: 56*d85ebf1fSlogin 57*d85ebf1fSlogin  您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。 58*d85ebf1fSlogin 59*d85ebf1fSlogin- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org) 60*d85ebf1fSlogin- [https://mirrors.DragonOS.org.cn](https://mirrors.DragonOS.org.cn) 61*d85ebf1fSlogin 62*d85ebf1fSlogin 63*d85ebf1fSlogin## 开放源代码声明 64*d85ebf1fSlogin 65*d85ebf1fSlogin 66*d85ebf1fSlogin:::{note} 67*d85ebf1fSlogin为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。 68*d85ebf1fSlogin 69*d85ebf1fSlogin这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。 70*d85ebf1fSlogin 71*d85ebf1fSlogin对于大部分的善意的人们而言,您不会违反我们的开源协议。 72*d85ebf1fSlogin 73*d85ebf1fSlogin我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。 74*d85ebf1fSlogin 75*d85ebf1fSlogin请特别注意,对于违反开源协议的,尤其是**商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责**。(这是最容易违反我们的开源协议的场景)。 76*d85ebf1fSlogin 77*d85ebf1fSlogin并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。 78*d85ebf1fSlogin 79*d85ebf1fSlogin您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。 80*d85ebf1fSlogin 81*d85ebf1fSlogin关于协议详细内容,还敬请您请阅读项目根目录下的**LICENSE**文件。请注意,按照GPLv2协议的要求,**只有英文原版才具有法律效力**。任何翻译版本都仅供参考。 82*d85ebf1fSlogin::: 83*d85ebf1fSlogin 84*d85ebf1fSlogin### 开源软件使用情况 85*d85ebf1fSlogin 86*d85ebf1fSlogin  DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢! 87*d85ebf1fSlogin 88*d85ebf1fSlogin格式:<项目名> - <链接> - <开源协议> 89*d85ebf1fSlogin 90*d85ebf1fSlogin- Linux - https://git.kernel.org/ - GPLv2 91*d85ebf1fSlogin- skiftOS - https://github.com/skiftOS/skift - MIT 92*d85ebf1fSlogin- FYSOS - https://github.com/fysnet/FYSOS - [FYSOS' License](https://github.com/fysnet/FYSOS/blob/9a8968e3d6600de34539c028c843f4c06d134039/license.txt) 93*d85ebf1fSlogin- LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License 94*d85ebf1fSlogin- LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license 95*d85ebf1fSlogin- SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license 96*d85ebf1fSlogin- MINE - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社 97*d85ebf1fSlogin- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社 98*d85ebf1fSlogin- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT 99*d85ebf1fSlogin 100*d85ebf1fSlogin## 当前版本的所有提交记录 101*d85ebf1fSlogin 102*d85ebf1fSlogin```text 103*d85ebf1fSlogincommit d65ade9c5909076747bd00966a398fe27fbd290d 104*d85ebf1fSloginAuthor: DaJiYuQia <88259094+DaJiYuQia@users.noreply.github.com> 105*d85ebf1fSloginDate: Sun Nov 27 14:21:31 2022 +0800 106*d85ebf1fSlogin 107*d85ebf1fSlogin Patch procf (#95) 108*d85ebf1fSlogin 109*d85ebf1fSlogin * debug color problem 110*d85ebf1fSlogin 111*d85ebf1fSlogin Co-authored-by: longjin <longjin@RinGoTek.cn> 112*d85ebf1fSlogin 113*d85ebf1fSlogincommit 6cb769c423b09e88fea1763210200a716477be0a 114*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 115*d85ebf1fSloginDate: Sun Nov 27 14:17:36 2022 +0800 116*d85ebf1fSlogin 117*d85ebf1fSlogin 将include目录下的rust代码转移到他们应当属于的模块中 (#96) 118*d85ebf1fSlogin 119*d85ebf1fSlogin * 将include目录下的rust代码转移到他们应当属于的模块下。 120*d85ebf1fSlogin 121*d85ebf1fSlogincommit 27a97abd2474b03ad09b562e5ed11e1fdae8eb32 122*d85ebf1fSloginAuthor: DaJiYuQia <88259094+DaJiYuQia@users.noreply.github.com> 123*d85ebf1fSloginDate: Sat Nov 26 17:34:00 2022 +0800 124*d85ebf1fSlogin 125*d85ebf1fSlogin Patch procf (#90) 126*d85ebf1fSlogin 127*d85ebf1fSlogin * 1234 128*d85ebf1fSlogin 129*d85ebf1fSlogin * 123 130*d85ebf1fSlogin 131*d85ebf1fSlogin * 合并master 132*d85ebf1fSlogin 133*d85ebf1fSlogin * procfs 134*d85ebf1fSlogin 135*d85ebf1fSlogin * 1 136*d85ebf1fSlogin 137*d85ebf1fSlogin * procfs展示进程基本信息 138*d85ebf1fSlogin 139*d85ebf1fSlogin * modified code 140*d85ebf1fSlogin 141*d85ebf1fSlogin * 恢复权限 142*d85ebf1fSlogin 143*d85ebf1fSlogin * 恢复权限 144*d85ebf1fSlogin 145*d85ebf1fSlogin #恢复权限 146*d85ebf1fSlogin 147*d85ebf1fSlogin * modify permission 148*d85ebf1fSlogin 149*d85ebf1fSlogin * 删除run.sh 150*d85ebf1fSlogin 151*d85ebf1fSlogin * 解决第一次编译时磁盘镜像权限错误的问题 152*d85ebf1fSlogin 153*d85ebf1fSlogin * 恢复.vscode/c_cpp_properties.json 154*d85ebf1fSlogin 155*d85ebf1fSlogin * 删除process.c中错误的do_fork 156*d85ebf1fSlogin 157*d85ebf1fSlogin * remake procfs 158*d85ebf1fSlogin 159*d85ebf1fSlogin * 修改一些变量名 160*d85ebf1fSlogin 161*d85ebf1fSlogin * 修改类型 162*d85ebf1fSlogin 163*d85ebf1fSlogin * modified 164*d85ebf1fSlogin 165*d85ebf1fSlogin * data_puts缓冲区溢出后return 166*d85ebf1fSlogin 167*d85ebf1fSlogin Co-authored-by: longjin <longjin@RinGoTek.cn> 168*d85ebf1fSlogin 169*d85ebf1fSlogincommit ad23fcddf893d7f92d2bf3efdb66e969416d2852 170*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 171*d85ebf1fSloginDate: Wed Nov 23 21:34:35 2022 +0800 172*d85ebf1fSlogin 173*d85ebf1fSlogin bugfix: 修复进程退出时未释放signal和sighand && 增加赞赏者名单:David Wen (#93) 174*d85ebf1fSlogin 175*d85ebf1fSlogin * bugfix: 修复进程退出时未释放signal和sighand的bug 176*d85ebf1fSlogin 177*d85ebf1fSlogin * 增加赞赏者名单:David Wen 178*d85ebf1fSlogin 179*d85ebf1fSlogincommit 0274cd6eeec01885232e7418a501857cb76da69e 180*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 181*d85ebf1fSloginDate: Wed Nov 23 20:43:18 2022 +0800 182*d85ebf1fSlogin 183*d85ebf1fSlogin 修正drop signal结构体的box对象的的问题 (#92) 184*d85ebf1fSlogin 185*d85ebf1fSlogin * fix: exit signal and exit sighand 186*d85ebf1fSlogin 187*d85ebf1fSlogincommit c8025a88798dc57ecc5d7f20ad69de695445638f 188*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 189*d85ebf1fSloginDate: Wed Nov 23 20:18:22 2022 +0800 190*d85ebf1fSlogin 191*d85ebf1fSlogin new:在fork时拷贝signal和sighand (#91) 192*d85ebf1fSlogin 193*d85ebf1fSlogin * refcount初始化 194*d85ebf1fSlogin 195*d85ebf1fSlogin * new: 实现copy_sighand 196*d85ebf1fSlogin del: 删除sighand_struct的wqh, 待将来有需要时,替换成rust版本的 197*d85ebf1fSlogin 198*d85ebf1fSlogin * new: 拷贝signal 199*d85ebf1fSlogin bugfix: 解决拷贝sighand时的uaf问题 200*d85ebf1fSlogin 201*d85ebf1fSlogincommit 66f67c6a95b8aad85cfd2146a86e5e3e6a3568e7 202*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 203*d85ebf1fSloginDate: Wed Nov 23 11:38:20 2022 +0800 204*d85ebf1fSlogin 205*d85ebf1fSlogin signal的发送(暂时父子进程之间共享信号及相应的结构体) (#89) 206*d85ebf1fSlogin 207*d85ebf1fSlogin * 解决由于spinlock.h中包含preempt_enable()带来的循环include问题 208*d85ebf1fSlogin 209*d85ebf1fSlogin * new: 初步实现signal的数据结构 210*d85ebf1fSlogin 211*d85ebf1fSlogin * new:signal相关数据结构 212*d85ebf1fSlogin 213*d85ebf1fSlogin * fix: 解决bindings.rs报一堆警告的问题 214*d85ebf1fSlogin 215*d85ebf1fSlogin * new: rust下的kdebug kinfo kwarn kBUG kerror宏 216*d85ebf1fSlogin 217*d85ebf1fSlogin * 移动asm.h和cmpxchg.h 218*d85ebf1fSlogin 219*d85ebf1fSlogin * new: signal的发送(暂时只支持父子进程共享信号及处理函数) 220*d85ebf1fSlogin 221*d85ebf1fSlogincommit 3d729e2069e01ee07525ff83167566dac5322a40 222*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 223*d85ebf1fSloginDate: Fri Nov 18 17:59:33 2022 +0800 224*d85ebf1fSlogin 225*d85ebf1fSlogin bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题 (#87) 226*d85ebf1fSlogin 227*d85ebf1fSlogin * bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题 228*d85ebf1fSlogin new: pcb相关api文档 229*d85ebf1fSlogin 230*d85ebf1fSlogin * 将文档加入目录 231*d85ebf1fSlogin 232*d85ebf1fSlogincommit 0bfe94f46be9bdde1ade81a20e803aa2aafd2964 233*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 234*d85ebf1fSloginDate: Fri Nov 18 16:32:15 2022 +0800 235*d85ebf1fSlogin 236*d85ebf1fSlogin new: rust下的kdebug kinfo kwarn kBUG kerror宏 (#86) 237*d85ebf1fSlogin 238*d85ebf1fSlogin * new: rust下的kdebug kinfo kwarn kBUG kerror宏 239*d85ebf1fSlogin 240*d85ebf1fSlogincommit c6174797dcf3427f38bfa0f4bd3e039c319f7c5b 241*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 242*d85ebf1fSloginDate: Thu Nov 17 20:29:29 2022 +0800 243*d85ebf1fSlogin 244*d85ebf1fSlogin fix: 解决bindings.rs报了很多警告的问题 (#85) 245*d85ebf1fSlogin 246*d85ebf1fSlogin * fix: 解决bindings.rs报一堆警告的问题 247*d85ebf1fSlogin 248*d85ebf1fSlogincommit cffd7144fbed84f9775e89d7b99602c6ccc5a510 249*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 250*d85ebf1fSloginDate: Wed Nov 16 15:18:03 2022 +0800 251*d85ebf1fSlogin 252*d85ebf1fSlogin signal相关数据结构&代码结构优化 (#84) 253*d85ebf1fSlogin 254*d85ebf1fSlogin * 解决由于spinlock.h中包含preempt_enable()带来的循环include问题 255*d85ebf1fSlogin 256*d85ebf1fSlogin * new: 初步实现signal的数据结构 257*d85ebf1fSlogin 258*d85ebf1fSlogincommit fb6c29d01d4cf92368efec08c01e419c2a941f7d 259*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 260*d85ebf1fSloginDate: Sun Nov 13 16:43:58 2022 +0800 261*d85ebf1fSlogin 262*d85ebf1fSlogin port kmalloc and printk to rust (#83) 263*d85ebf1fSlogin 264*d85ebf1fSlogin * 暂时移除cbindgen 265*d85ebf1fSlogin 266*d85ebf1fSlogin * 将lib文件夹更名为libs文件夹(解决rust的冲突) 267*d85ebf1fSlogin 268*d85ebf1fSlogin * 实现了全局的allocator 269*d85ebf1fSlogin 270*d85ebf1fSlogin * 实现了printk宏 271*d85ebf1fSlogin 272*d85ebf1fSlogin * new: 完善了printk的颜色 273*d85ebf1fSlogin 274*d85ebf1fSlogincommit 82d2e446a401e7eee57a847f48a6d162931170c3 275*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 276*d85ebf1fSloginDate: Sat Nov 12 15:25:54 2022 +0800 277*d85ebf1fSlogin 278*d85ebf1fSlogin new: 暂时移除cbindgen (#82) 279*d85ebf1fSlogin 280*d85ebf1fSlogincommit 2aaf7808efe44ecfaadd51ae4f8892e667108578 281*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 282*d85ebf1fSloginDate: Fri Nov 11 22:21:44 2022 +0800 283*d85ebf1fSlogin 284*d85ebf1fSlogin 在内核中引入cbindgen,生成rust-C的FFI (#81) 285*d85ebf1fSlogin 286*d85ebf1fSlogin 287*d85ebf1fSlogin * 解决codeql失败问题 288*d85ebf1fSlogin 289*d85ebf1fSlogin * new: 为内核引入cbindgen 290*d85ebf1fSlogin 291*d85ebf1fSlogincommit 2813126e3190c9b3c1a836a647b259a7adbe0cf3 292*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 293*d85ebf1fSloginDate: Fri Nov 11 15:35:37 2022 +0800 294*d85ebf1fSlogin 295*d85ebf1fSlogin 新增rust ffi (#77) 296*d85ebf1fSlogin 297*d85ebf1fSlogin * 引入cargo 298*d85ebf1fSlogin 299*d85ebf1fSlogin * 取消对Cargo.lock的跟踪 300*d85ebf1fSlogin 301*d85ebf1fSlogin * 解决vscode报错问题 302*d85ebf1fSlogin 303*d85ebf1fSlogin * new: rust的代码能够调用c语言的printk_color 304*d85ebf1fSlogin 305*d85ebf1fSlogin * 1、将原本run.sh的工作拆解,变为几个不同的make命令 306*d85ebf1fSlogin 2、在docker镜像中编译rust 307*d85ebf1fSlogin 308*d85ebf1fSlogin * 更改workflow 309*d85ebf1fSlogin 310*d85ebf1fSlogin * update workflow 311*d85ebf1fSlogin 312*d85ebf1fSlogin * new: 解决workflow无法通过编译的问题 313*d85ebf1fSlogin 314*d85ebf1fSlogincommit 5e023cf7911333eb05bfe65704dce4b01fa4d0a7 315*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 316*d85ebf1fSloginDate: Fri Nov 11 15:21:45 2022 +0800 317*d85ebf1fSlogin 318*d85ebf1fSlogin Update makefile.yml 319*d85ebf1fSlogin 320*d85ebf1fSlogincommit e44795008f7e34d2068cf28dcedbcb91f5ccd66b 321*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 322*d85ebf1fSloginDate: Fri Nov 11 15:18:13 2022 +0800 323*d85ebf1fSlogin 324*d85ebf1fSlogin Update makefile.yml (#80) 325*d85ebf1fSlogin 326*d85ebf1fSlogincommit ec5fb84b61c313824cc2199ab64e3af4b7e5f895 327*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 328*d85ebf1fSloginDate: Fri Nov 11 15:08:09 2022 +0800 329*d85ebf1fSlogin 330*d85ebf1fSlogin Update makefile.yml 331*d85ebf1fSlogin 332*d85ebf1fSlogincommit 6d9dff5f1ff347ea780a0249e54eef356cdcaaea 333*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 334*d85ebf1fSloginDate: Fri Nov 11 15:07:48 2022 +0800 335*d85ebf1fSlogin 336*d85ebf1fSlogin Revert "Update makefile.yml (#78)" (#79) 337*d85ebf1fSlogin 338*d85ebf1fSlogin This reverts commit badc7d238f2341e844a90be3e357e5dd77a447fc. 339*d85ebf1fSlogin 340*d85ebf1fSlogincommit badc7d238f2341e844a90be3e357e5dd77a447fc 341*d85ebf1fSloginAuthor: login <longjin@ringotek.cn> 342*d85ebf1fSloginDate: Fri Nov 11 15:05:52 2022 +0800 343*d85ebf1fSlogin 344*d85ebf1fSlogin Update makefile.yml (#78) 345*d85ebf1fSlogin 346*d85ebf1fSlogin```