1*083e8917Slogin# V0.1.6 252ab5d90Slogin 352ab5d90Slogin:::{note} 4*083e8917Slogin本文作者:龙进 <longjin@DragonOS.org> 5*083e8917Slogin 652ab5d90Slogin 752ab5d90Slogin2023年4月2日 852ab5d90Slogin::: 952ab5d90Slogin 1052ab5d90Slogin## 贡献者名单 1152ab5d90Slogin 1252ab5d90SloginDragonOS V0.1.6版本由以下小伙伴贡献代码: 1352ab5d90Slogin 1452ab5d90Slogin- 龙进 <longjin@DragonOS.org> 1552ab5d90Slogin- 关锦权 <guanjinquan@DragonOS.org> 1652ab5d90Slogin- 苏琎韬 <sujintao@DragonOS.org> 1752ab5d90Slogin- 侯嘉滢 <houjiaying@DragonOS.org> 1852ab5d90Slogin- 吴宇健 <wuyujian@DragonOS.org> 1952ab5d90Slogin- Mork <91721145+MorkCarpenter@users.noreply.github.com> 2052ab5d90Slogin- WaferJay <17383312+WaferJay@users.noreply.github.com> 2152ab5d90Slogin- HoshuChiu <129569557+HoshuChiu@users.noreply.github.com> 2252ab5d90Slogin 2352ab5d90Slogin## 赞助者名单 2452ab5d90Slogin 2552ab5d90Slogin感谢以下同学的赞赏,我们将不断努力! 2652ab5d90Slogin 2752ab5d90Slogin- 万晓兰 2852ab5d90Slogin- David Wen 2952ab5d90Slogin- [Seele.Clover](https://github.com/seeleclover) 3052ab5d90Slogin- [FindWangHao](https://github.com/FindWangHao) 3152ab5d90Slogin- 叶锦毅 3252ab5d90Slogin- 林 3352ab5d90Slogin- Albert 3452ab5d90Slogin- [TerryLeeSCUT · GitHub](https://github.com/TerryLeeSCUT) 3552ab5d90Slogin- slientbard 3652ab5d90Slogin- 悟 3752ab5d90Slogin- 匿名热心人士 3852ab5d90Slogin 3952ab5d90Slogin## 更新内容-内核 4052ab5d90Slogin 4152ab5d90Slogin- softirq: 重构了软中断 (#223) 4252ab5d90Slogin- timer: 重构了系统定时器 (#223) 4352ab5d90Slogin- stdio: 新增tty设备,用于标准输入输出 (#202) (#217) 4452ab5d90Slogin- lib: 第一套键盘扫描码的状态机 (#216) (#219) 4552ab5d90Slogin- syscall: 新增dup,dup2系统调用 (#224) 4652ab5d90Slogin- syscall: 新增SystemError枚举类型,使得错误处理更清晰 (#205) 4752ab5d90Slogin- driver: 新增x87浮点处理器支持 (#212) 4852ab5d90Slogin- driver: VirtIO网卡能够正常发送、接收数据 (#204) 4952ab5d90Slogin- filesystem: 修正了FAT32判断逻辑,解决了文件系统为FAT12/16时系统无法正常启动的问题。 (#211) 5052ab5d90Slogin- filesystem: 新增VFS文档,以及修改文档配置 (#209) 5152ab5d90Slogin- textui: 修复由于textui加锁,更改了preempt_count导致“进程长时间连续输出字符”的情况下,进程调度器不运行的问题。 (#203) 5252ab5d90Slogin- scheduler: 解决由于在中断上下文以外,sched_enqueue时,未关中断导致cpu_queue双重加锁的问题 (#201) 5352ab5d90Slogin 5452ab5d90Slogin 5552ab5d90Slogin## 更新内容-用户环境 5652ab5d90Slogin 5752ab5d90Slogin### 新增仓库 5852ab5d90Slogin 5952ab5d90Slogin- 新增子项目:[dsc](https://github.com/DragonOS-Community/dsc.git) 6052ab5d90Slogin- 移植relibc: [DragonOS-relibc](https://github.com/DragonOS-Community/relibc.git) 6152ab5d90Slogin 6252ab5d90Slogin## 更新内容-其他 6352ab5d90Slogin 6452ab5d90Slogin- build: 添加了qemu使用VNC作为图像输出的选项 (#222) 6552ab5d90Slogin 6652ab5d90Slogin## 更新内容-软件移植 6752ab5d90Slogin 6852ab5d90Slogin无 6952ab5d90Slogin 7052ab5d90Slogin## 源码、发布版镜像下载 7152ab5d90Slogin 7252ab5d90Slogin  您可以通过以下方式获得源代码: 7352ab5d90Slogin 7452ab5d90Slogin### 通过Git获取 7552ab5d90Slogin 7652ab5d90Slogin- 您可以访问[https://github.com/DragonOS-Community/DragonOS/releases](https://github.com/DragonOS-Community/DragonOS/releases)下载发布版的代码,以及编译好的,可运行的磁盘镜像。 7752ab5d90Slogin- 我们在gitee上也有镜像仓库可供下载:[https://gitee.com/DragonOS/DragonOS](https://gitee.com/DragonOS/DragonOS) 7852ab5d90Slogin 7952ab5d90Slogin### 通过DragonOS软件镜像站获取 8052ab5d90Slogin 8152ab5d90Slogin  为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站: 8252ab5d90Slogin 8352ab5d90Slogin  您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。 8452ab5d90Slogin 8552ab5d90Slogin- [https://mirrors.DragonOS.org](https://mirrors.DragonOS.org) 8652ab5d90Slogin- [https://mirrors.DragonOS.org.cn](https://mirrors.DragonOS.org.cn) 8752ab5d90Slogin- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/) 8852ab5d90Slogin 8952ab5d90Slogin## 开放源代码声明 9052ab5d90Slogin 9152ab5d90Slogin 9252ab5d90Slogin:::{note} 9352ab5d90Slogin为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。 9452ab5d90Slogin 9552ab5d90Slogin这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。 9652ab5d90Slogin 9752ab5d90Slogin对于大部分的善意的人们而言,您不会违反我们的开源协议。 9852ab5d90Slogin 9952ab5d90Slogin我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。 10052ab5d90Slogin 10152ab5d90Slogin请特别注意,对于违反开源协议的,尤其是**商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责**。(这是最容易违反我们的开源协议的场景)。 10252ab5d90Slogin 10352ab5d90Slogin并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。 10452ab5d90Slogin 10552ab5d90Slogin您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。 10652ab5d90Slogin 10752ab5d90Slogin关于协议详细内容,还敬请您请阅读项目根目录下的**LICENSE**文件。请注意,按照GPLv2协议的要求,**只有英文原版才具有法律效力**。任何翻译版本都仅供参考。 10852ab5d90Slogin::: 10952ab5d90Slogin 11052ab5d90Slogin### 开源软件使用情况 11152ab5d90Slogin 11252ab5d90Slogin  DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢! 11352ab5d90Slogin 11452ab5d90Slogin格式:<项目名> - <链接> - <开源协议> 11552ab5d90Slogin 11652ab5d90Slogin- Linux - https://git.kernel.org/ - GPLv2 11752ab5d90Slogin- skiftOS - https://github.com/skiftOS/skift - MIT 11852ab5d90Slogin- FYSOS - https://github.com/fysnet/FYSOS - [FYSOS' License](https://github.com/fysnet/FYSOS/blob/9a8968e3d6600de34539c028c843f4c06d134039/license.txt) 11952ab5d90Slogin- LemonOS - https://github.com/LemonOSProject/LemonOS.git - BSD 2-Clause License 12052ab5d90Slogin- LZ4 - https://github.com/lz4/lz4 - BSD 2-Clause license 12152ab5d90Slogin- SerenityOS - https://github.com/SerenityOS/serenity.git - BSD 2-Clause license 12252ab5d90Slogin- MINE - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社 12352ab5d90Slogin- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社 12452ab5d90Slogin- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT 12552ab5d90Slogin- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT 12652ab5d90Slogin- redox - https://gitlab.redox-os.org/redox-os/redox - MIT 12752ab5d90Slogin 12852ab5d90Slogin## 当前版本的所有提交记录 12952ab5d90Slogin 13052ab5d90Slogin```text 13152ab5d90Slogincommit bacd691c9ef0502b5cc618aad50517f9e59df5e0 13252ab5d90SloginAuthor: login <longjin@DragonOS.org> 13352ab5d90SloginDate: Sun Apr 2 17:09:33 2023 +0800 13452ab5d90Slogin 13552ab5d90Slogin 软中断&定时器重构 (#223) 13652ab5d90Slogin 13752ab5d90Slogin * 软中断&定时器重构 13852ab5d90Slogin 13952ab5d90Slogin Co-authored-by: houmkh<houjiaying@DragonOS.org> 14052ab5d90Slogin 14152ab5d90Slogin * 修改timer的clock() 14252ab5d90Slogin 14352ab5d90Slogin * 删除debug信息 14452ab5d90Slogin 14552ab5d90Slogin --------- 14652ab5d90Slogin 14752ab5d90Slogin Co-authored-by: houmkh <1119644616@qq.com> 14852ab5d90Slogin 14952ab5d90Slogincommit 6d345b774223b0daaf0ee629c7fb595a1912a9e2 15052ab5d90SloginAuthor: HoshuChiu <129569557+HoshuChiu@users.noreply.github.com> 15152ab5d90SloginDate: Sun Apr 2 15:55:24 2023 +0800 15252ab5d90Slogin 15352ab5d90Slogin 添加了qemu使用VNC作为图像输出的选项 (#222) 15452ab5d90Slogin 15552ab5d90Slogin * 添加了qemu使用VNC作为图像输出的选项 15652ab5d90Slogin 15752ab5d90Slogin * 设置vnc端口为5900 15852ab5d90Slogin 15952ab5d90Slogin --------- 16052ab5d90Slogin 16152ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 16252ab5d90Slogin 16352ab5d90Slogincommit 2b771e32f5795e0fdda458e3bb2651ef6b9673ac 16452ab5d90SloginAuthor: Gou Ngai <sujintao@dragonos.org> 16552ab5d90SloginDate: Sun Apr 2 15:43:53 2023 +0800 16652ab5d90Slogin 16752ab5d90Slogin Add dup,dup2 (#224) 16852ab5d90Slogin 16952ab5d90Slogin * dup,dup2 17052ab5d90Slogin 17152ab5d90Slogin * fix: sys_dup2语义与posix不一致的问题 17252ab5d90Slogin 17352ab5d90Slogin --------- 17452ab5d90Slogin 17552ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 17652ab5d90Slogin 17752ab5d90Slogincommit d7b31a969ff091224a4929496f0278d024f78c77 17852ab5d90SloginAuthor: Gou Ngai <sujintao@dragonos.org> 17952ab5d90SloginDate: Fri Mar 31 18:23:58 2023 +0800 18052ab5d90Slogin 18152ab5d90Slogin Patch keyboard capslock alt (#219) 18252ab5d90Slogin 18352ab5d90Slogin * keyboard-alt-capslock 18452ab5d90Slogin 18552ab5d90Slogin * 解决键盘输入'%'字符的时候无法回显的bug 18652ab5d90Slogin 18752ab5d90Slogin --------- 18852ab5d90Slogin 18952ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 19052ab5d90Slogin 19152ab5d90Slogincommit 20e3152e1eea97f87d644c3023391e172bc83c93 19252ab5d90SloginAuthor: login <longjin@DragonOS.org> 19352ab5d90SloginDate: Fri Mar 31 12:54:37 2023 +0800 19452ab5d90Slogin 19552ab5d90Slogin 将TTY与stdio进行连接,实现基本的stdio功能 (#217) 19652ab5d90Slogin 19752ab5d90Slogin * 将stdio与tty接上 19852ab5d90Slogin 19952ab5d90Slogincommit 5fb12ce447710edf8566f250655a06cb27519fca 20052ab5d90SloginAuthor: Gou Ngai <sujintao@dragonos.org> 20152ab5d90SloginDate: Thu Mar 30 18:19:02 2023 +0800 20252ab5d90Slogin 20352ab5d90Slogin 第一套键盘扫描码的状态机 (#216) 20452ab5d90Slogin 20552ab5d90Slogin 第一套键盘扫描码的状态机 20652ab5d90Slogin --------- 20752ab5d90Slogin 20852ab5d90Slogin Co-authored-by: guanjinquan <1666320330@qq.com> 20952ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 21052ab5d90Slogin 21152ab5d90Slogincommit 676b8ef62e1a0a1e52d65b40c53c1636a2954040 21252ab5d90SloginAuthor: Mork <91721145+MorkCarpenter@users.noreply.github.com> 21352ab5d90SloginDate: Wed Mar 29 21:24:11 2023 +0800 21452ab5d90Slogin 21552ab5d90Slogin 部分函数从返回值为Result<<>,i32>修改为Result<<>,SystemError> (#210) 21652ab5d90Slogin 21752ab5d90Slogin * 将Result<<>,i32>替换为Result<<>,SystemError> 21852ab5d90Slogin * bugfix: 显示双缓冲区初始化的时候,连续注册了两次Video Softirq的问题。 21952ab5d90Slogin 22052ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 22152ab5d90Slogin 22252ab5d90Slogincommit 64aea4b3494bee7375e1c1ee5739c9fab0db0cb7 22352ab5d90SloginAuthor: Gou Ngai <sujintao@dragonos.org> 22452ab5d90SloginDate: Tue Mar 28 20:44:26 2023 +0800 22552ab5d90Slogin 22652ab5d90Slogin 增加x87FPU支持 (#212) 22752ab5d90Slogin 22852ab5d90Slogin * remove `ret_from_syscall` 22952ab5d90Slogin *修复ps2键盘驱动程序inode在进程fork的时候导致死锁的问题. 23052ab5d90Slogin *更新: VFS每次拷贝文件描述符的时候,都会去调用inode的open函数 23152ab5d90Slogin 23252ab5d90Slogin --------- 23352ab5d90Slogin 23452ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 23552ab5d90Slogin 23652ab5d90Slogincommit 2286eda6526ed1b46afd79b47dc701034b9e903d 23752ab5d90SloginAuthor: WaferJay <17383312+WaferJay@users.noreply.github.com> 23852ab5d90SloginDate: Mon Mar 27 09:32:43 2023 +0800 23952ab5d90Slogin 24052ab5d90Slogin 修正了FAT32判断逻辑,解决了文件系统为FAT12/16时系统无法正常启动的问题。 (#211) 24152ab5d90Slogin 24252ab5d90Slogin * fix(fat): fix determination of fat type casue crash if fs is fat12/16 24352ab5d90Slogin 24452ab5d90Slogin * refactor(fat): split BiosParameterBlock.validate() into BiosParameterBlockFAT32.validate() and BiosParameterBlockLegacy.validate() 24552ab5d90Slogin 24652ab5d90Slogin * 调整“最大允许的簇号”的常量放置的位置。 24752ab5d90Slogin 24852ab5d90Slogin --------- 24952ab5d90Slogin 25052ab5d90Slogin Co-authored-by: longjin <longjin@RinGoTek.cn> 25152ab5d90Slogin 25252ab5d90Slogincommit 45b8371173b070028457f7ee64be33f68b4f9ada 25352ab5d90SloginAuthor: login <longjin@DragonOS.org> 25452ab5d90SloginDate: Sat Mar 25 14:51:16 2023 +0800 25552ab5d90Slogin 25652ab5d90Slogin 新增VFS文档,以及修改文档配置 (#209) 25752ab5d90Slogin 25852ab5d90Slogin * 1.新增vfs设计文档 25952ab5d90Slogin 2.修改文档版权标志为"2022-2023, DragonOS Community" 26052ab5d90Slogin 3.修改电脑版文档页面的宽度为90% 26152ab5d90Slogin 26252ab5d90Slogin * layout.html末尾加空行 26352ab5d90Slogin 26452ab5d90Slogincommit 73c607aaddf6e4634cad179a81d3f1bc589f7220 26552ab5d90SloginAuthor: YJwu2023 <119829947+YJwu2023@users.noreply.github.com> 26652ab5d90SloginDate: Sat Mar 18 20:43:37 2023 +0800 26752ab5d90Slogin 26852ab5d90Slogin VirtIO网卡能够正常发送、接收数据 (#204) 26952ab5d90Slogin 27052ab5d90Slogin * virtio-net小修改 27152ab5d90Slogin 27252ab5d90Slogin * 移动volatile.rs到libs文件夹 27352ab5d90Slogin 27452ab5d90Slogin * 使用virtio-drivers 0.3.0 27552ab5d90Slogin 27652ab5d90Slogin * bugfix: 初始化BAR之后,未正确设置command register的问题 27752ab5d90Slogin 27852ab5d90Slogin 27952ab5d90Slogin --------- 28052ab5d90Slogin 28152ab5d90Slogin Co-authored-by: longjin <longjin@dragonos.org> 28252ab5d90Slogin 28352ab5d90Slogincommit 4454d1a2dd1f1078750151c028a794cfd9a04a1b 28452ab5d90SloginAuthor: login <longjin@DragonOS.org> 28552ab5d90SloginDate: Sat Mar 18 20:26:05 2023 +0800 28652ab5d90Slogin 28752ab5d90Slogin 新增SystemError枚举类型,使得错误处理更清晰 (#205) 28852ab5d90Slogin 28952ab5d90Slogincommit 0d48c3c9c21a2dd470d0e1e58b507db60e0887bb 29052ab5d90SloginAuthor: login <longjin@DragonOS.org> 29152ab5d90SloginDate: Thu Mar 16 19:48:59 2023 +0800 29252ab5d90Slogin 29352ab5d90Slogin new: tty设备(尚未与stdio接上) (#202) 29452ab5d90Slogin 29552ab5d90Slogincommit 790d45764090bce3bbfb96b42b2818100a8cef9a 29652ab5d90SloginAuthor: login <longjin@DragonOS.org> 29752ab5d90SloginDate: Wed Mar 15 11:42:41 2023 +0800 29852ab5d90Slogin 29952ab5d90Slogin 修复由于textui加锁,更改了preempt_count导致“进程长时间连续输出字符”的情况下,进程调度器不运行的问题。 (#203) 30052ab5d90Slogin 30152ab5d90Slogincommit c2e757d8cbeed01b16f48bea48ed8447685e6f1a 30252ab5d90SloginAuthor: login <longjin@DragonOS.org> 30352ab5d90SloginDate: Mon Mar 13 22:22:23 2023 +0800 30452ab5d90Slogin 30552ab5d90Slogin 解决由于在中断上下文以外,sched_enqueue时,未关中断导致cpu_queue双重加锁的问题 (#201) 30652ab5d90Slogin 30752ab5d90Slogin```