Releases: DragonOS-Community/DragonOS
V0.1.10
V0.1.10
本文作者:龙进 [email protected]
DragonOS官方论坛:bbs.dragonos.org.cn
2024年5月13日
简介
本次版本更新,引入了42个feature类型的PR,24个bug修复,5个文档更新,以及一些软件移植、ci相关的内容。
当前版本核心看点:
- 对调度子系统进行了重构
- 能在riscv64下运行到hello world应用程序
- 内存管理子系统引入了匿名页反向映射、写时拷贝以及延迟分配的特性
- 文件系统引入了大量的新的系统接口
- 实现了pty,并能运行简单的ssh服务端
赞助商列表
- 中国雅云 雅安大数据产业园为DragonOS提供了云服务器支持。
更新内容-内核
- feat(fs): 实现了sys_rename (#578)
- feat(fs): 实现get_pathname (#615)
- feat(kernel): 实现uname系统调用 (#614)
- feat(fs): 添加mount系统调用 (#561)
- feat(smp): 重写SMP模块 (#633)
- feat(fs): 添加Statx系统调用 (#632)
- feat(riscv64): 添加flush tlb的ipi (#636)
- feat(fs): 实现SYS_LINK和SYS_LINKAT (#611)
- fix(fs): mkdir输出错误信息;
- fix(clippy): 修复内核的clippy检查报错 (#637)
- feat(net): 实现socketpair (#576)
- feat(process/riscv): 进程管理初始化 (#654)
- fix(time): 修复clock_gettime返回类型错误,修复小时间间隔duration返回0问题 (#664)
- fix(driver/base): 把Device trait的set_class改为设置Weak指针,以避免循环引用问题。 (#666)
- feat(textui): 支持绘制24位深和16位深显示缓冲区 (#640)
- fix(driver/tty): 修复tty设备显示在/sys目录下的bug (#668)
- feat(fs): 新加结构体POSIXSTATFS与SuperBlock用于处理statfs系统调用 (#667)
- feat(driver/rtc):实现了rtc的抽象,并且把x86的cmos rtc接入到设备驱动模型 (#674)
- fix(net): 修复udp bind的时候,对port0处理不正确的问题(#676)
- fix(fs/ramfs): 修复了ramfs中move_to未更新parent字段的bug (#673)
- feat(mm): 实现页面反向映射 (#670)
- fix(misc): 修复get_ramdom的长度错误问题() (#677)
- feat(process/riscv): riscv64: switch process (#678)
- fix(misc): 使nproc可以正确获取到cpu核心数 (#689)
- fix(time): 修复jiffy时钟过快问题,启用gettimeofday测试,修改mount测试 (#680)
- feat(driver/pty): 实现pty,附带测试程序 (#685)
- feat(process/riscv): 实现copy-thread (#696)
- feat(sched): 重写调度模块 (#679)
- fix(riscv): 把内核编译target改为riscv64gc & 获取time csr的频率 & 修正浮点保存与恢复的汇编的问题 (#699)
- feat(lock): 实现robust futex (#682)
- feat(fs): BlockCache-read cache支持 (#521)
- feat(mm): 实现SystemV共享内存 (#690)
- chore(tools): add bootstrap support for Centos/RHEL8/fedora (#713)
- feat(driver/pty): 完善pty,目前pty能够支持ssh (#708)
- fix(smp): 修复smp启动的时候,损坏0号核心的idle进程的内核栈的问题 (#711)
- feat(driver/riscv): 初始化riscv-sbi-timer (#716)
- doc: Update DragonOS description and introduction (#717)
- feat(riscv): 让riscv64能正常切换进程,并运行完所有的initcall (#721)
- feat(net): 实现tcp backlog功能 (#714)
- feat(mm): 添加slab内存分配器 (#683)
- feat(fs): 引入Umount系统调用 (#719)
- doc: Update build instructions for riscv64 architecture (#725)
- fix(fs): socket统一改用
GlobalSocketHandle
,并且修复fcntl SETFD的错误 (#730) - feat: alarm系统调用实现 (#710)
- feat(tty): add dummy console (#735)
- fix(driver/pci): pci: 统一使用ecam root (#744)
- feat(driver/pci): pci: 添加pci root manager来管理pci root,并使得riscv能够正常扫描pci设备. (#745)
- build: 将smoltcp升级到0.11.0版本 (#740)
- fix(unified-init): 修复unified-init导致cargo check失败的问题 (#747)
- chore: Update virtio-drivers to commit 61ece509c4 and modify max_queue_size implementation (#748)
- feat(net): 实现raw socket的poll (#739)
- feat(mm): 实现缺页中断处理,支持页面延迟分配和写时拷贝,以及用户栈自动拓展 (#715)
- feat(driver): 把virtio添加到sysfs (#752)
- fix(dog): 添加CC环境变量,解决编译时找不到musl-gcc的问题 (#753)
- doc(community): add description of conventional commit standard (#754)
- feat(driver/virtio): riscv: 添加virtio-blk driver,并在riscv下能够正确挂载FAT32 (#761)
- feat(fs): add sys_dup3 (#755)
- feat(riscv): riscv下能够运行hello world用户程序 (#770)
- feat(sched): add sched_yield (#766)
- refactor(process): 调整arch_switch_to_user函数,把riscv和x86_64的共用逻辑抽取出来。 (#773)
- feat(driver/acpi_pm): Implement ACPI PM Timer (#772)
- chore: 适配dadk 0.1.11 (#777)
- fix(libs/lib_ui): fix the display errors when system initialize (#779)
- fix(riscv/process): 把riscv的调度时钟节拍率与HZ同步,并且修复切换到用户态的时候忘了在内核态关中断的bug (#780)
- fix: (riscv/timer): 修复riscv下没有更新墙上时钟以及没有处理软中断的bug (#783)
- feat(mm): add slab usage calculation (#768)
- feat(bitmap): Add bit and for AllocBitMap (#793)
- fix(mm): 修复vma映射标志错误 (#801)
- feat:(riscv/intr) 实现riscv plic驱动,能处理外部中断 (#799)
- doc(sched):调度子系统文档即cfs文档 (#807)
- fix(net): Fix TCP Unresponsiveness and Inability to Close Connections (#791)
- fix: disable mm debug log to prevent system lockup due to thingbuf issue (#808)
- feat(driver/pci): add pci bus into sysfs (#792)
- doc: Add Gentoo Linux In build_system.md (#810)
更新内容-用户环境
新特性/新应用移植
更新内容-CI
- 引入triagebot对issue和PR进行分类
- 添加clippy检测的自动化工作流 (#649)
- ci: import issue checker (#750)
- ci: update the match regex of issue checker (#784)
- ci: 添加支持gentoo系统的一键安装脚本 (#809)
New Contributors
- @val213 made their first contribution in #652
- @BrahmaMantra made their first contribution in #673
- @Saga1718 made their first contribution in #714
- @SMALLC04 made their first contribution in #710
- @zwb0x00 made their first contribution in #755
- @donjuanplatinum made their first contribution in #809
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问DragonOS的仓库获取源代码:https://github.com/DragonOS-Community/DragonOS
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码。
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
:::{note}
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
:::
开源软件使用情况
DragonOS在开发的过程中,参考了Linux社区的一些设计,或者引入了他们的部分思想,亦或是受到了他们的启发。我们在这里对Linux社区以及Linux社区的贡献者们致以最衷心的感谢!
V0.1.9
V0.1.9
:::{note}
本文作者:何懿聪 [email protected]
DragonOS官方论坛:bbs.dragonos.org.cn
2024年3月13日
:::
贡献者名单
DragonOS V0.1.9版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 何懿聪 [email protected]
- 裕依 [email protected]
- R0ronoa [email protected]
- 池克俭 [email protected]
- 吴宇健 [email protected]
- zhaoyao73 [email protected]
- 胡兆朋 [email protected]
- 周瀚杰 [email protected]
- 栗子 [email protected]
- Xshine [email protected]
- Chenzx [email protected]
- MContour [email protected]
- Donkey Kane [email protected]
- Luo Jia / Zhouqi Jiang [email protected]
- Wu Mianzhi [email protected]
- Xiaoye Zheng [email protected]
- Plucky923 [email protected]
赞助商列表
- 中国雅云 雅安大数据产业园为DragonOS提供了云服务器支持。
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen
- 万晓兰
- 龙进
- 吴宇健
两千元以下:
- Seele.Clover
- FindWangHao
- ferchiel
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
新特性
- refactor: 重构进程管理模块 (#380)
- feature: 完善设备驱动模型 (#401)
- feature: 实现e1000e网卡驱动 (#393)
- feature: DragonOS虚拟化框架(#389)
- feature: 支持syscall快速系统调用指令(#417)
- refactor: 重写apic驱动 (#425)
- feature: 线程机制与futex (#411)
- feature: DragonStub引导DragonOS内核 (#460)
- feature: 实现Epoll IO多路复用机制 (#455)
- feature: 帧缓冲抽象以及vesafb驱动 (#483)
- feature: 增加early io remap的fixmap功能 (#495)
- feature: 实现内核日志系统 (#489)
- refactor: 使用Rust重写x86_64下内核初始化代码(#507)
- feature: 新增riscv64架构的内存管理等(#506)
- refactor: 中断管理模块重构完成(#554)
- refactor: 重构tty模块,实现unix兼容tty(#577)
- featurn: 实现若干POSIX标准系统调用
bugfix
- bugfix: 修正由于init proc union导致的无法运行的问题 && 修正由于内核线程启动后默认sleep的行为导致init进程无法正常运行的bug (#381)
- bugfix: 修复了Flusher Drop的时候没有自动刷新TLB的bug(#384)
- bugfix: multiboot2启动的信息因为没及时转存导致后面无法从其中进行查询的bug (#405)
- bugfix: 修复bus/device manager对卸载逻辑的处理错误 (#385)
- bugfix: 解决waitqueue sleep的时候,由于preempt count不为0,导致sched失败,从而导致该waitqueue下一次wakeup时,会把pcb多次加入调度队列的bug (#419)
- bugfix: 修正fork的时候没有正确拷贝vm holes的bug (#433)
- bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题. (#448)
- bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug (#454)
- bugfix: 修正由于bus的driver、device强弱引用关系 不正确从而导致对象被释放的bug (#483)
- bugfix: 修复文件关闭后epoll还持有对应描述符的文件弱引用的bug (#455)
- bugfix: 修复无法sleep的问题以及进程处于block(true)状态时无法被信号唤醒&唤醒后不处理信号的问题 (#470)
更新内容-用户环境
新特性
- feature: 新增init程序dragonreach (#391)
- featurn: 新增shell程序NovaShell (#456)
- featurn: 新增文本编辑器Held (#583)
- featurn: 能够支持gcc,tar,redis等程序运行
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
:::{note}
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
:::
开源软件使用情况
DragonOS在开发的过程中,参考了Linux社区的一些设计,或者引入了他们的部分思想,亦或是受到了他们的启发。我们在这里对Linux社区以及Linux社区的贡献者们致以最衷心的感谢!
V0.1.8
V0.1.8
:::{note}
本文作者:龙进 [email protected]
2023年8月16日
:::
贡献者名单
DragonOS V0.1.8版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- 黄厅 [email protected]
- 孔维超 [email protected]
- 蔡嘉鑫 [email protected]
- 池克俭 [email protected]
- zhaoyao73 [email protected]
- 周瀚杰 [email protected]
- Bullet [email protected]
- 櫻井桃華 [email protected]
- Tptogiar [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- ferchiel
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
新特性
- refactor: 重构系统调用模块 (#267)
- feature: 添加AlignBox和int_like宏 (#272)
- refactor: 新的ipi功能&kick_cpu功能的重写 (#274)
- feature: 实现gettimeofday()系统调用和clocksource+timekeeping子模块 (#278)
- refactor: PCI设备中断重构,并删去USB相关代码 (#285)
- feature: 注册串口设备,创建字符设备框架(#290)
- refactor: 新的内存管理模块 (#303)
- feature: 新的二进制加载器、elf解析器 (#303)
- feature: 增加 ListenTable 来检测端口占用 (#291)
- feature: 替换 local_irq_save 为 IrqFlagsGuard 实现 (#317)
- feature: 实现系统调用Fstat (#295)
- feature: 实现内核通知链 notifier chain (#316)
- feature: 增加fcntl系统调用 (#323)
- feature: 添加per cpu变量支持 (#327)
- feature: spinlock守卫新增leak,spinlock新增force unlock功能.(#329)
bugfix
- bugfix: 修复无法正常读取stdin的问题 (#264)
- bugfix: 修复了当传入ahci驱动的缓冲区地址为用户缓冲区时,产生的内存越界问题.(采用分配内核缓冲区的方式临时解决) (#265)
- bugfix: 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 (#303)
- bugfix: 解决local_irq_save未关中断的错误 (#303)
- bugfix: 解决arch_try_cmpxchg对于指针处理的错误 (#307)
- bugfix: 修复了wait4的异常报错 (#312)
- bugfix: 修正null设备以及zero设备无法open、行为不符合预期的问题 (#314)
- bugfix: 修正fat文件系统未能正确的扩展文件大小的bug (#323)
- bugfix: 修正rwlock有的地方由于未使用ManuallyDrop导致的use after free问题 (#329)
更新内容-用户环境
新特性
- feature: 新增http server (#265)
bugfix
- bugfix: 解决链接时,由于crt*.o未按照升序排列导致init段链接错误的问题 (#265)
更新内容-其他
- bugfix: 固定编译工具链、修复由于新版rust编译器问题导致的报错。 (#258)
- feature: Makefile: 根目录下添加make help命令 (#271)
- doc: 更新github issue模板 (#277)
- bugfix: 解决relibc的头文件没能识别__dragonos__定义的问题 (#315)
- feature: 设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318)
- feature: 自动安装、更新dadk (#319)
更新内容-软件移植
- feature: 移植了sqlite3 (#323)
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
:::{note}
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
:::
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- 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
当前版本的所有提交记录
commit 40176b1c6603d487b7eb66fb81e641f0932ab90a
Author: longjin <[email protected]>
Date: Tue Aug 15 15:06:57 2023 +0000
删除无用代码,并把about app的版本号更新为0.1.8
commit 67b481888770c6469f572f244a4f97e42da77d1f
Author: houmkh <[email protected]>
Date: Mon Aug 14 12:18:46 2023 +0800
移动fstat (#330)
* 移动fstat
commit 90a0a49048fdaf5e31320d0c87f8bed8db1bd882
Author: LoGin <[email protected]>
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 <[email protected]>
Date: Sun Aug 13 16:28:24 2023 +0800
添加per cpu变量支持 (#327)
commit 42c97fa7f4fee7eeefeda5d2b7ed14f598a58493
Author: LoGin <[email protected]>
Date: Tue Aug 8 23:45:04 2023 +0800
删除旧的libELF (#324)
commit 6d81180b3b7328466b976b69c5f7782aa66d8a89
Author: LoGin <[email protected]>
Date: Tue Aug 8 23:39:22 2023 +0800
移植sqlite3,并修复一些bug (#323)
* bugfix: 程序加载器映射内存时,计算要映射的大小不正确的问题。
* 修正brk系统调用不符合规范的地方
* bugfix: 修正fat文件系统未能正确的扩展文件大小的bug
* 增加fcntl系统调用
* 移植sqlite3
commit 26887c6334cdca2d13ad71dec27fb69faa0a57be
Author: LoGin <[email protected]>
Date: Mon Aug 7 01:38:52 2023 +0800
bugfix: 解决取消低地址映射时,错误的把重映射的物理页释放,从而导致的use after free问题。 (#321)
commit 729a96ef47f473d535d8317a2ace5ba141fd282a
Author: Xshine <[email protected]>
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 <[email protected]>
Date: Sat Aug 5 18:52:46 2023 +0800
实现系统调用Fstat (#295)
* fstat
* 修改syscall.rs中的verify_area
commit 9550910ae1de900e0291a84d268e8873fa142902
Author: Chiichen <[email protected]>
Date: Sat Aug 5 18:30:55 2023 +0800
替换 local_irq_save 为 IrqFlagsGuard 实现 (#317)
commit abf3f634bf7e13e829556e962e7c73a85d163335
Author: LoGin <[email protected]>
Date: Sat Aug 5 15:30:06 2023 +0800
自动安装、更新dadk (#319)
* auto install/auto update dadk
commit d6fd9c1e8025dd679339f9156477cb7d26d3db0d
Author: LoGin <[email protected]>
Date: Sat Aug 5 15:04:08 2023 +0800
设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318)
commit 1a62e7767c1215f9668915b42de770e7993711bf
Author: LoGin <[email protected]>
Date: Wed Aug 2 18:11:05 2023 +0800
解决relibc的头文件没能识别__dragonos__定义的问题 (#315)
commit 06500303303ec14711b4f995e2058e12703f0f2c
Author: LoGin <[email protected]>
Date: Wed Aug 2 17:33:16 2023 +0800
修正null设备以及zero设备无法open、行为不符合预期的问题 (#314)
commit 4da3758acf0327d429dfce3d313b50c2e0fc7723
Author: Chiichen <[email protected]>
Date: Wed Aug 2 14:29:59 2023 +0800
修复了wait4的异常报错 (#312)
* 修复了wait4的异常报错
commit 821bb9a2dcfd28f9878d53ba722bdf164cf00f69
Author: Xshine <[email protected]>
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 <[email protected]>
commit 7cc4a02c7ff7bafd798b185beb7b0c2986b9f32f
Author: zhaoyao73 <[email protected]>
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 <[email protected]>
commit a30434f5201ca4c60b9515c8c23444fea3b5a8c6
Author: zhaoyao73 <[email protected]>
Date: Tue Jul 25 10:02:42 2023 -0400
fix some script bugs (#304)
add arch linux prerequisited packages
Co-authored-by: Yao Zhao <[email protected]>
commit 40fe15e0953f989ccfeb74826d61621d43dea6bb
Author: LoGin <[email protected]>
Date: Sat Jul 22 16:27:02 2023 +0800
新的内存管理模块 (#303)
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。
  内存管理模块主要由以下类型的组件组成:
- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- ...
V0.1.7
V0.1.7
本文作者:龙进 [email protected]
2023年4月24日
贡献者名单
DragonOS V0.1.7版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 关锦权 [email protected]
- 黄厅 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- 苏琎韬 [email protected]
- 周瀚杰 [email protected]
- HoshuChiu [email protected]
- Bullet [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- ferchiel
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
- scheduler: 修改CFSqueue从Vec变成红黑树 (#229)
- new: lazy_init (#230) (#236)
- pci: pci重构+pcie支持 (#235)
- net: 增加网络子系统,且能在用户态进行编程 (#237) (#247)
- mm: 调整brk系统调用,使得参数、返回值与Linux一致 (#238)
- 修改errno,使其与relibc的保持一致 (#234)
- pci: 修复ecam无法获取MCFG table的问题 (#241)
- libs: DowncastArc and its docs (#244)
- softirq: 增加定时器和软中断文档,修改了softirq面向c的接口 (#245)
- spinlock: 修复spinlock忘记恢复rflags的问题 (#247)
- waitqueue: 增加wakeup_all和sleep_without_schedule的功能 (#247)(#253)
- filesystem: 把PollStatus结构体改为使用bitflags库来实现 (#247)
- filesystem: 增加iovec的支持(暴力实现) (#247)
- filesystem: 新增SysFS (#250) (#254)
- driver: 根据sysfs,完善设备驱动模型 (#254)
- pipe: 匿名管道重构 (#253)
- irq: 新增IrqArch抽象。以及IrqFlagsGuard。以简化关中断-恢复中断的过程 (#253)
更新内容-用户环境
新增仓库
DragonOS-relibc
- Add sys_dup and sys_dup2 support (#2)
- 添加原本的libc的内存分配器,修复对齐问题。 (#6) (#7)
- 配置网络相关的系统调用 (#8)
- 修复由于DragonOS不支持TLS(thread local storage)导致errno变量无法正常工作的问题. (#8)
更新内容-其他
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- 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
当前版本的所有提交记录
commit e0de0fd6a52199753a3127cfbb5d12f0a1555aae
Author: TingHuang <[email protected]>
Date: Sun Apr 23 22:55:57 2023 +0800
根据sysfs完善设备驱动模型 & 添加sysfs官方文档 (#254)
* 根据sysfs完善设备驱动模型
* 添加sysfs官方文档
commit f678331a3315b7847f08ab32b42d5bf49a9f3a6a
Author: hanjiezhou <[email protected]>
Date: Sun Apr 23 21:05:10 2023 +0800
匿名管道重构&增加IrqArch trait以及IrqFlags及其守卫 (#253)
* 实现匿名管道
* 增加IrqArch trait以及IrqFlags及其守卫
---------
Co-authored-by: longjin <[email protected]>
commit 8a1e95abb5e4df5e872bb452efc26c9e9631157d
Author: Bullet <[email protected]>
Date: Fri Apr 21 23:36:54 2023 +0800
解决使用zsh在构建DragonOS时,无法直接使用一键初始化脚本进行安装的问题 (#252)
commit dd9f1fc1a42406461e6f0d38cce1e56e22a1a15f
Author: TingHuang <[email protected]>
Date: Fri Apr 21 16:03:42 2023 +0800
新增SysFS (#250)
* 添加sysfs
* 注册sysfs
* 添加sysfs相关
* 添加rust-anlyzer辅助配置
* 将设备与sysfs相关联
* 添加单独的文件管理sysfs下的文件夹
commit cde5492f725681ed89abe1e6eb088e05d943d793
Author: login <[email protected]>
Date: Wed Apr 19 18:05:02 2023 +0800
新增网络socket的系统调用接口 (#247)
1.修复spinlock忘记恢复rflags的问题
2.WaitQueue增加wakeup_all的功能
3.完善tcp,udp,raw socket
4.把PollStatus结构体改为使用bitflags
5.新增iovec结构体
6.完成网络的系统调用
7.在bootstrap里面添加dnsmasq bridge-utils iptables
---------
Co-authored-by: guanjinquan <[email protected]>
commit 8fd71f277271ae68e648f290c67f187b030feae0
Author: houmkh <[email protected]>
Date: Mon Apr 17 17:17:06 2023 +0800
增加定时器和软中断文档,修改了softirq面向c的接口 (#245)
* 增加定时器和软中断文档
* 修改softirq对c的接口和文档
* 修改文档格式
commit 77c928f6ce3192c79ea42ab7bcba2713e289f73b
Author: login <[email protected]>
Date: Sun Apr 16 20:29:04 2023 +0800
new: DowncastArc and its docs (#244)
commit 7149abaa49a4ca70f0e42ad3b61fdfd6a941a092
Author: HoshuChiu <[email protected]>
Date: Sun Apr 16 14:47:51 2023 +0800
修复Issue#220;vnc的端口号恢复5900 (#243)
* 修复Issue#220
* qemu-vnc端口号恢复为5900
commit 5c1e552cc7f0a6ad75c8a1fa2928e3b9cc619657
Author: YJwu2023 <[email protected]>
Date: Fri Apr 14 12:21:08 2023 +0800
修复ecam无法获取MCFG table的问题 (#241)
commit 79a452ce8f27ad9c7283ac0bcf4078ed6fa018d7
Author: houmkh <[email protected]>
Date: Tue Apr 11 17:05:33 2023 +0800
修改errno,使其与relibc的保持一致 (#234)
修改errno,使其与relibc的保持一致
commit ac48398d3f17f24ff9b5da5e400ce912d05f0ba2
Author: login <[email protected]>
Date: Tue Apr 11 16:54:14 2023 +0800
调整brk系统调用,使得参数、返回值与Linux一致 (#238)
* 新增用于测试relibc的app
* 为适配relibc,修改do_execve中关于用户栈的内容的设置
* 调整brk系统调用,使得参数、返回值与Linux一致
commit 13776c114b15c406b1e0aaeeb71812ea6e471d2e
Author: login <[email protected]>
Date: Mon Apr 10 20:22:39 2023 +0800
增加对dhcpv4的支持(tcp、udp socket已写好,但由于缺少epoll机制,尚未完整测试) (#237)
* 为virtio网卡完成smoltcp的phy层配置
* raw socket
* 初步写完udp和tcp socket
* 能够正常通过dhcp获取ipv4地址(具有全局iface btree)
---------
Co-authored-by: guanjinquan <[email protected]>
commit 78bf93f02f84bf5e024ddfb559f040e68ce39ccf
Author: YJwu2023 <[email protected]>
Date: Sun Apr 9 12:30:02 2023 +0800
pci重构+pcie支持 (#235)
* pci重构+pcie支持
* pci重构测试完成
* 修正makefile的问题
* 小修改
* 修改函数名字
commit 5c9a63df836eedaca33c8c4c600b7aaeb2caf9a6
Author: login <[email protected]>
Date: Sat Apr 8 23:53:53 2023 +0800
Patch add lazy init (#236)
* 修正并发安全问题
commit 766127209ee49465a8086cfd0bec90d8b79a96c0
Author: login <[email protected]>
Date: Thu Apr 6 19:01:30 2023 +0800
new: lazy_init (#230)
commit e0dfd4d5d70d1b50fc7ad3ed4bf84b7ba6dad19d
Author: hanjiezhou <[email protected]>
Date: Thu Apr 6 00:50:14 2023 +0800
修改CFSqueue从Vec变成红黑树 (#229)
使用了由tickbh编写的rbtree: https://github.com/tickbh/rbtree-rs/blob/master/src/lib.rs
Co-authored-by: tickbh <[email protected]>
commit 2a7d773d3d39f1cb3d59d6baa817c896c6fd52d1
Author: TingHuang <[email protected]>
Date: Wed Apr 5 13:02:05 2023 +0800
新增设备驱动模型,为设备和驱动提供高层视图 (#227)
* 添加base mod
* 添加设备驱动模型相关文件
* 删除单独的mod文件,使用mod.rs,修改一些格式上的问题
* 移动驱动错误类型到该文件
* 修改一些格式上的问题
commit 5d00b1852818dd4b25952fd6a30deb20e7c7df53
Author: login <[email protected]>
Date: Wed Apr 5 00:53:35 2023 +0800
修复显示刷新线程的空指针问题 (#228)
V0.1.6
V0.1.6
本文作者:龙进 [email protected]
2023年4月2日
贡献者名单
DragonOS V0.1.6版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 关锦权 [email protected]
- 苏琎韬 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- Mork [email protected]
- WaferJay [email protected]
- HoshuChiu [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
- softirq: 重构了软中断 (#223)
- timer: 重构了系统定时器 (#223)
- stdio: 新增tty设备,用于标准输入输出 (#202) (#217)
- lib: 第一套键盘扫描码的状态机 (#216) (#219)
- syscall: 新增dup,dup2系统调用 (#224)
- syscall: 新增SystemError枚举类型,使得错误处理更清晰 (#205)
- driver: 新增x87浮点处理器支持 (#212)
- driver: VirtIO网卡能够正常发送、接收数据 (#204)
- filesystem: 修正了FAT32判断逻辑,解决了文件系统为FAT12/16时系统无法正常启动的问题。 (#211)
- filesystem: 新增VFS文档,以及修改文档配置 (#209)
- textui: 修复由于textui加锁,更改了preempt_count导致“进程长时间连续输出字符”的情况下,进程调度器不运行的问题。 (#203)
- scheduler: 解决由于在中断上下文以外,sched_enqueue时,未关中断导致cpu_queue双重加锁的问题 (#201)
更新内容-用户环境
新增仓库
- 新增子项目:dsc
- 移植relibc: DragonOS-relibc
更新内容-其他
- build: 添加了qemu使用VNC作为图像输出的选项 (#222)
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- 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
当前版本的所有提交记录
commit bacd691c9ef0502b5cc618aad50517f9e59df5e0
Author: login <[email protected]>
Date: Sun Apr 2 17:09:33 2023 +0800
软中断&定时器重构 (#223)
* 软中断&定时器重构
Co-authored-by: houmkh<[email protected]>
* 修改timer的clock()
* 删除debug信息
---------
Co-authored-by: houmkh <[email protected]>
commit 6d345b774223b0daaf0ee629c7fb595a1912a9e2
Author: HoshuChiu <[email protected]>
Date: Sun Apr 2 15:55:24 2023 +0800
添加了qemu使用VNC作为图像输出的选项 (#222)
* 添加了qemu使用VNC作为图像输出的选项
* 设置vnc端口为5900
---------
Co-authored-by: longjin <[email protected]>
commit 2b771e32f5795e0fdda458e3bb2651ef6b9673ac
Author: Gou Ngai <[email protected]>
Date: Sun Apr 2 15:43:53 2023 +0800
Add dup,dup2 (#224)
* dup,dup2
* fix: sys_dup2语义与posix不一致的问题
---------
Co-authored-by: longjin <[email protected]>
commit d7b31a969ff091224a4929496f0278d024f78c77
Author: Gou Ngai <[email protected]>
Date: Fri Mar 31 18:23:58 2023 +0800
Patch keyboard capslock alt (#219)
* keyboard-alt-capslock
* 解决键盘输入'%'字符的时候无法回显的bug
---------
Co-authored-by: longjin <[email protected]>
commit 20e3152e1eea97f87d644c3023391e172bc83c93
Author: login <[email protected]>
Date: Fri Mar 31 12:54:37 2023 +0800
将TTY与stdio进行连接,实现基本的stdio功能 (#217)
* 将stdio与tty接上
commit 5fb12ce447710edf8566f250655a06cb27519fca
Author: Gou Ngai <[email protected]>
Date: Thu Mar 30 18:19:02 2023 +0800
第一套键盘扫描码的状态机 (#216)
第一套键盘扫描码的状态机
---------
Co-authored-by: guanjinquan <[email protected]>
Co-authored-by: longjin <[email protected]>
commit 676b8ef62e1a0a1e52d65b40c53c1636a2954040
Author: Mork <[email protected]>
Date: Wed Mar 29 21:24:11 2023 +0800
部分函数从返回值为Result<<>,i32>修改为Result<<>,SystemError> (#210)
* 将Result<<>,i32>替换为Result<<>,SystemError>
* bugfix: 显示双缓冲区初始化的时候,连续注册了两次Video Softirq的问题。
Co-authored-by: longjin <[email protected]>
commit 64aea4b3494bee7375e1c1ee5739c9fab0db0cb7
Author: Gou Ngai <[email protected]>
Date: Tue Mar 28 20:44:26 2023 +0800
增加x87FPU支持 (#212)
* remove `ret_from_syscall`
*修复ps2键盘驱动程序inode在进程fork的时候导致死锁的问题.
*更新: VFS每次拷贝文件描述符的时候,都会去调用inode的open函数
---------
Co-authored-by: longjin <[email protected]>
commit 2286eda6526ed1b46afd79b47dc701034b9e903d
Author: WaferJay <[email protected]>
Date: Mon Mar 27 09:32:43 2023 +0800
修正了FAT32判断逻辑,解决了文件系统为FAT12/16时系统无法正常启动的问题。 (#211)
* fix(fat): fix determination of fat type casue crash if fs is fat12/16
* refactor(fat): split BiosParameterBlock.validate() into BiosParameterBlockFAT32.validate() and BiosParameterBlockLegacy.validate()
* 调整“最大允许的簇号”的常量放置的位置。
---------
Co-authored-by: longjin <[email protected]>
commit 45b8371173b070028457f7ee64be33f68b4f9ada
Author: login <[email protected]>
Date: Sat Mar 25 14:51:16 2023 +0800
新增VFS文档,以及修改文档配置 (#209)
* 1.新增vfs设计文档
2.修改文档版权标志为"2022-2023, DragonOS Community"
3.修改电脑版文档页面的宽度为90%
* layout.html末尾加空行
commit 73c607aaddf6e4634cad179a81d3f1bc589f7220
Author: YJwu2023 <[email protected]>
Date: Sat Mar 18 20:43:37 2023 +0800
VirtIO网卡能够正常发送、接收数据 (#204)
* virtio-net小修改
* 移动volatile.rs到libs文件夹
* 使用virtio-drivers 0.3.0
* bugfix: 初始化BAR之后,未正确设置command register的问题
---------
Co-authored-by: longjin <[email protected]>
commit 4454d1a2dd1f1078750151c028a794cfd9a04a1b
Author: login <[email protected]>
Date: Sat Mar 18 20:26:05 2023 +0800
新增SystemError枚举类型,使得错误处理更清晰 (#205)
commit 0d48c3c9c21a2dd470d0e1e58b507db60e0887bb
Author: login <[email protected]>
Date: Thu Mar 16 19:48:59 2023 +0800
new: tty设备(尚未与stdio接上) (#202)
commit 790d45764090bce3bbfb96b42b2818100a8cef9a
Author: login <[email protected]>
Date: Wed Mar 15 11:42:41 2023 +0800
修复由于textui加锁,更改了preempt_count导致“进程长时间连续输出字符”的情况下,进程调度器不运行的问题。 (#203)
commit c2e757d8cbeed01b16f48bea48ed8447685e6f1a
Author: login <[email protected]>
Date: Mon Mar 13 22:22:23 2023 +0800
解决由于在中断上下文以外,sched_enqueue时,未关中断导致cpu_queue双重加锁的问题 (#201)
V0.1.5
V0.1.5
本文作者:龙进 [email protected]
2023年3月13日
贡献者名单
DragonOS V0.1.5版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 关锦权 [email protected]
- 苏琎韬 [email protected]
- 孔维超 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- 周于喆 [email protected]
- Satin Wuker [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
更新内容-内核
- scheduler: doc: 实时进程调度器文档 (#163)
- scheduler: rt: RTQueue改用双向链表存储 (#174)
- scheduler: load balance: 多核负载均衡 (#193)
- Semaphore: new: 新增了rust实现的信号量 (#183)
- mm: refactor: 重构了MMIO地址分配器 (#184)
- RwLock: new: 新增了rust实现的读写锁 (#186)
- driver: update: 完善pci的功能 (#194)
- driver: new: VirtIO网卡驱动(仍存在问题) (#194)
- driver: refactor: Rust版本的AHCI驱动 (#198)
- block io: delete: 移除Block IO 调度器. (#196)
- filesystem: refactor: 新版的VFS (#198)
- filesystem: refactor: 新版的ProcFS (#198)
- filesystem: refactor: 新版的DevS (#198)
- filesystem: new: RamFS内存文件系统 (#198)
- filesystem: new: FAT12/FAT16/FAT32文件系统 (#198)
- filesystem: new: 新的设备、块设备抽象 (#198)
更新内容-用户环境
- libc: 调整,将所有的app直接链接到libc.a中,而不是都执行一遍"搜索.o"的过程 (#171)
更新内容-其他
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- 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
当前版本的所有提交记录
commit 84407d360511c7699938a0f245ae33ff76f16b17
Author: login <[email protected]>
Date: Mon Mar 13 00:26:04 2023 +0800
bugfix:解决touch命令失败的问题 (#199)
* bug fix : 解决touch命令失败的问题
commit 004e86ff19727df303c23b42c7a271b9214c6898
Author: login <[email protected]>
Date: Sun Mar 12 22:36:11 2023 +0800
新版文件系统重构完成 (#198)
1.重构:VFS
2. 重构:ProcFS
3. 重构:DevFS
4. 重构:FAT32
5. 重构:AHCI驱动
6. 新增:RamFS
7. 新增:MountFS
8. 新增:FAT12
9. 新增:FAT16
10. 重构:设备抽象
Co-authored-by: guanjinquan <[email protected]>
Co-authored-by: DaJiYuQia <[email protected]>
commit 17041e0e307eaf9e8d8ddbddfa186cd1f10f1bc0
Author: login <[email protected]>
Date: Sun Mar 12 21:04:37 2023 +0800
添加rust的bare bone工具链 (#197)
commit 26d84a31393c50063ff416bc509316e8d342028c
Author: YJwu2023 <[email protected]>
Date: Sat Mar 11 21:09:50 2023 +0800
新增VirtIO网卡驱动 (#194)
* 修复内存bug与grub安装脚本的错误
* 修改小bug
* PCI增加功能与virtio-net驱动
* little fix
* virtio-net小修改
commit 1d48996375149279a721777b2c600e1b5c3ee1b5
Author: kong <[email protected]>
Date: Sat Mar 11 18:17:35 2023 +0800
多核负载均衡(#193)
* feat(sched):CPU负载检测初步实现
* fix(smp):调整smp中的apic的头文件声明
* fix(smp):简单的负载均衡算法实现
* fix(sched):抽离负载均衡方法
* fix(sched):修改rt中的运行队列bug,调整负载均衡逻辑
* fix(process):移除无用测试代码
* reformat code
commit ef9f9732b09f78d7192f1d0dd3b41be655fb0914
Author: houmkh <[email protected]>
Date: Thu Mar 9 23:31:25 2023 +0800
修复了mmio buddy的bug (#189)
* 修改buddy_query
commit c1396d277115b371d09ad6d39a1c419f9224ffd0
Author: Gou Ngai <[email protected]>
Date: Mon Mar 6 11:28:32 2023 +0800
Rwlock文档 (#186)
* Rwlock文档
commit a7eb62a47a8d701b90a14f83cc9028cfed07c268
Author: houmkh <[email protected]>
Date: Mon Mar 6 11:21:29 2023 +0800
修改mmio-buddy代码结构和函数名 (#184)
* 修改mmio-buddy结构和函数名
commit c2481452f81750ec02adec627ab2edbc93d9cd9c
Author: houmkh <[email protected]>
Date: Sat Mar 4 18:36:55 2023 +0800
rust重构mmio_buddy和mmio (#178)
* rust重构mmio_buddy和mmio
* mmio-buddy文档
---------
Co-authored-by: longjin <[email protected]>
commit f1284c35717a2f9f8cee7cecfc835ba1d23a1161
Author: Gou Ngai <[email protected]>
Date: Sat Mar 4 17:47:17 2023 +0800
新增了rust实现的信号量 (#181)
* 新增了rust实现的信号量
---------
Co-authored-by: longjin <[email protected]>
commit 83b9512c1c1e8289000084adcafddebee6a23f16
Author: Gou Ngai <[email protected]>
Date: Sat Mar 4 16:54:42 2023 +0800
新增了rust实现的信号量 (#183)
* 新增了rust实现的信号量
commit e532a536a0b244f4590e6eb7910084bd63049704
Author: login <[email protected]>
Date: Thu Mar 2 22:50:07 2023 +0800
添加赞助者:FengWangHao (#179)
commit b66beefd4e9ead61ee55f335246ebeb8277d3011
Author: login <[email protected]>
Date: Mon Feb 27 01:00:35 2023 +0800
解决ubuntu2210版本无法正确编译grub,以及正确安装qemu的问题 (#176)
commit 4177d0327c3eacdc606f0b22f99f208fd48cfff3
Author: kong <[email protected]>
Date: Mon Feb 20 17:03:37 2023 +0800
RTQueue改用双向链表存储(#174)
* RTQueue改用双向链表存储
commit 2bf5ee0e3cac3a91dee6a13b71c86a9477c07d9b
Author: login <[email protected]>
Date: Sat Feb 11 13:04:24 2023 +0800
修改libc的编译相关内容(#171)
1.将libc的include文件夹分为export和internal
2.将所有app都直接链接libc.a,而不是都执行一遍"搜索.o"的过程
commit 90b077f9d3ecd48ca46f8bbb32363620db6ddbe6
Author: kong <[email protected]>
Date: Thu Feb 9 15:24:37 2023 +0800
Sched rt doc (#163)
* update
* 完善调度器文档
* 更新RT调度器文档
* 更新实时调度文档
commit 009f92d50fe2e52e425bce397801d3fa204daecd
Author: Satin Wuker <[email protected]>
Date: Tue Feb 7 19:29:09 2023 -0800
fix typos 改正README_EN的错别字和语法错误 (#167)
V0.1.4
V0.1.4
本文作者:龙进 [email protected]
2023年2月4日
贡献者名单
DragonOS V0.1.4版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- Gou Ngai [email protected]
- 孔维超 [email protected]
- 侯嘉滢 [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen (人民币2000元)
- Seele.Clover (人民币500元)
- 叶锦毅 (人民币100元)
- 林 (人民币50元)
- Albert (人民币9.99元)
- TerryLeeSCUT (人民币6.66元)
- slientbard (人民币6.66元)
- 悟 (人民币2.00元)
- 【其他匿名的热心人士】(人民币1.00元)
更新内容-内核
- Spinlock: new: 新增具有守卫的自旋锁SpinLock,支持编译期对锁的使用进行检查。 (#148)
- Spinlock: feature: Raw spin lock 增加lock_irqsave、unlock_irqrestore(#151)
- Mutex: new: Rust版本的Mutex (#157)
- doc: new: Rust代码风格文档 (#161)
- WaitQueue: new: Rust版本的WaitQueue (#162)
- WaitQueue: update: C版本的wait_queue的唤醒,改为立即唤醒 (#158)
- block io: new: Block IO 调度器. 当具有多核时,io调度器在核心1上运行。 (#158)
- smp: bugfix: 为AP核启动apic_timer,使其能够运行调度 (#158)
- smp: new: 增加kick_cpu功能,支持让某个特定核心立即运行调度器 (#158)
- smp: new: 增加进程在核心间迁移的功能 (#158)
- scheduler: new: 增加实时进程调度器(支持FIFO、RR策略) (#139)
- scheduler: update: CFS调度器为每个核心设置单独的IDLE进程pcb(pid均为0) (#158)
- scheduler: bugfix: process_wakeup时,对cfs的进程,重设虚拟运行时间。解决由于休眠的进程,其虚拟运行时间过小,导致其他进程饥饿的问题 (#158)
- process: new: pcb中增加migrate_to字段 (#158)
更新内容-用户环境
无
更新内容-其他
无
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/fslongjin/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT
当前版本的所有提交记录
commit f6ba114bb0420e848ef7fc844c96c0d7a0552d93
Author: houmkh <[email protected]>
Date: Sat Feb 4 12:31:15 2023 +0800
Block IO Scheduler (#158)
* Block io调度器
* process_wakeup时,对cfs的进程,重设虚拟运行时间。解决由于休眠的进程,其虚拟运行时间过小,导致其他进程饥饿的问题
* 1、为AP核启动apic_timer,使其能够运行调度
2、增加kick_cpu功能,支持让某个特定核心立即运行调度器
3、wait_queue的唤醒,改为立即唤醒。
4、增加进程在核心间迁移的功能
5、CFS调度器为每个核心设置单独的IDLE进程pcb(pid均为0)
6、pcb中增加migrate_to字段
7、当具有多核时,io调度器在核心1上运行。
* io调度器文件位置修改
* 修改io的makefile
* 更新makefile中的变量名
* 修改io调度器函数名
---------
Co-authored-by: login <[email protected]>
commit 151251b50b7ed55596edd32ffec49a4041010e2a
Author: login <[email protected]>
Date: Tue Jan 31 19:27:02 2023 +0800
Patch add rust waitqueue (#162)
* new: rust版本的waitqueue
* new:等待队列的文档
commit 3c369b1430e8d571bcc74a8ef7fefc1c4cae5dd2
Author: login <[email protected]>
Date: Mon Jan 30 15:43:42 2023 +0800
new:新增rust代码风格 (#161)
commit c28bd540ac856cd9d8d5597852af8f2588a660e4
Author: login <[email protected]>
Date: Mon Jan 30 15:10:24 2023 +0800
更新赞助者名单 (#160)
* 更新赞赏者列表
commit 935f40ec174fec217aed4553d45996327443bc0e
Author: login <[email protected]>
Date: Tue Jan 17 21:30:16 2023 +0800
new: Rust版本的Mutex (#157)
commit d8a064128a8a06b90ff4c7b87c193518d9572641
Author: Gou Ngai <[email protected]>
Date: Mon Jan 16 19:58:50 2023 +0800
Raw spin lock 增加lock_irqsave、unlock_irqrestore(#151)
Raw spin lock 增加lock_irqsave、unlock_irqrestore
commit 06b09f34ed64a006a80ae8df383e3c8b176f02e0
Author: kong <[email protected]>
Date: Sat Jan 14 22:38:05 2023 +0800
Patch sched rust (#139)
* update
* 添加rt调度器的rust初步实现
* 完善rt调度逻辑
* 调试rt调度器
* 修改sched的返回值
* cargo fmt 格式化
* 删除无用代码,修补rt bug
* 删除无用的代码,和重复的逻辑
* 软中断bugfix
* 删除一些代码
* 添加kthread_run_rt文档
* 解决sphinix警告_static目录不存在的问题
Co-authored-by: longjin <[email protected]>
commit ec53d23ed03347854189d92b7e175f309779321b
Author: login <[email protected]>
Date: Sat Jan 14 10:35:49 2023 +0800
new: 新增具有守卫的自旋锁SpinLock,支持编译期对锁的使用进行检查。 (#148)
commit 41474ba3df99b6822ce452dc94dc53a4da62cba1
Author: login <[email protected]>
Date: Tue Jan 10 22:07:41 2023 +0800
更新Readme中关于DragonOS的介绍部分 (#146)
commit 8ad2e358fd3b05eed2919de50640682e51687fb5
Author: login <[email protected]>
Date: Sun Jan 8 15:51:59 2023 +0800
更新about app中的版本号 (#145)
* 更新about app中的版本号
commit a8b621c8d1fe77251b8e4eafe258dc0ee7366dd5
Author: login <[email protected]>
Date: Sun Jan 8 15:47:44 2023 +0800
修正由于libc中具有crti.S和crtn.S,造成的与x86_64-elf-gcc不兼容的问题 (#144)
commit 9358ff0f6f7daa18d6fab4497de025736b3d6725
Author: login <[email protected]>
Date: Sun Jan 8 15:06:52 2023 +0800
Add v0.1.3 changelog (#143)
* new: 0.1.3发行日志
* 新增输出指定时间范围内的贡献者名单的脚本
* 更新bootloader文档
* update: 简介文档
* new: 镜像站文档
* update: 功能特性文档
V0.1.3
V0.1.3
本文作者:龙进 [email protected]
2023年1月8日
贡献者名单
DragonOS V0.1.3版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 吴宇健 [email protected]
- 关锦权 [email protected]
- Gou Ngai [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen
- Seele.Clover
- TerryLeeSCUT
- 悟
- slientbard
更新内容-内核
- syscall: new: 增加getpid系统调用 (#120)
- signal: update: 对于除了SIGKILL以外的信号,也将他们加入SigQueue (#120)
- rtc: refactor: 使用Rust重构RTC驱动 (#118)
- doc: new: 新增signal的文档 (#126)
- Spinlock: new: 新增rust写的RawSpinlock (#127)
- arch: update: 在lib.rs中,将arch模块的路径进行更改,使得其他模块使用arch的代码时,不需要指定arch::x86_64 (#128)
- mm: bugfix: 修复页面分配器在初始化时,ZONE_NORMAL_INDEX始终为0的bug (#129)
- scheduler: new: 使用Rust重构CFS调度器 (#131)
- smp: 删除已经在smp中废弃的HPET中断转发函数 (#131)
- process: bugfix: 修复init进程忘记设定fs gs寄存器的问题。 (#132)
- vfs: update: 将VFS文件夹重命名为vfs (#133)
- lockref: new: 新增rust版本的lockref (#135)
- cpu: new: new:Rust封装cpu_relax(),通过pause指令,让cpu休息一会儿,降低空转功耗. (#135)
- 使用rust重构softirq机制 (#138)
更新内容-用户环境
- libc: bugfix: 注册信号处理函数时,总是注册sigkill的问题 (#120)
- libc: new: 增加了raise、kill、abort (#120)
- libc: new: 新增arch文件夹,在下面新增crt0 crti crtn文件 (#134)
- libc: new: 新增
fflush()
,fprintf()
,stdin
,stdout
,stderr
,ferror()
,fopen()
,fclose()
,putchar()
,puts()
(#136) - libc: new: 简单添加了
fopen()
对mode参数的处理。请注意,它没有完全遵循posix,也与Linux的不一致,将来使用Rust的时候完善它。 (#141) - 移植: new: 新增了gmp, mpfr, mpc的移植构建脚本 (#136)
- 移植: new: 新增了gcc、binutils的交叉编译构建脚本以及gcc-11.3.0, binutils-2.38的补丁(在DragonOS-community下的仓库中)(#136)
- compile: update: 更改编译器的Include路径,使得include时不需要加
<libc/src/include/>
前缀 (#124)
更新内容-其他
- bugfix: 修复docker安装时异常退出的bug (#116)
- new: 新增目标为x86_64-elf的GCC裸机编译器,并使用它来编译DragonOS (#111)
- update: 更新Docker编译镜像至版本
dragonos/dragonos-dev:v1.2
, 并支持从Dockerfile构建这个编译镜像 (#111) - bugfix: 修复MBR磁盘镜像未设置启动标志的bug (#111)
- update: 更新github workflow,增加cache,加快build check的速度
- bugfix: 修复下载grub2.06时的提示错误 (#125)
更新内容-软件移植
- new: gcc 11.3.0 userland cross-compiler, 提交:
64a5b1cbf28e3305560e166c1b6624e99745c720
, 仓库:https://github.com/DragonOS-Community/gcc - new: binutils 2.38 cross-compile tools, 提交:
a0ae560e0065862a9867b9e1f8364749ef38d99e
, 仓库:https://github.com/DragonOS-Community/binutils - new: gmp 6.2.1, 提交:
dd9eee5778fb6027fafa4fe850aff21b1a71c18e
, 仓库:https://github.com/DragonOS-Community/gmp-6.2.1 - new: mpfr 4.1.1, 提交:
fa8e30cdc2e838fdd82b60fec31fcfc5e118aad6
, 仓库:https://github.com/DragonOS-Community/mpfr - new: mpc 1.2.1, (无需打补丁即可移植),仓库:https://github.com/DragonOS-Community/mpc
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/fslongjin/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT
当前版本的所有提交记录
commit a8b621c8d1fe77251b8e4eafe258dc0ee7366dd5
Author: login <[email protected]>
Date: Sun Jan 8 15:47:44 2023 +0800
修正由于libc中具有crti.S和crtn.S,造成的与x86_64-elf-gcc不兼容的问题 (#144)
commit 9358ff0f6f7daa18d6fab4497de025736b3d6725
Author: login <[email protected]>
Date: Sun Jan 8 15:06:52 2023 +0800
Add v0.1.3 changelog (#143)
* new: 0.1.3发行日志
* 新增输出指定时间范围内的贡献者名单的脚本
* 更新bootloader文档
* update: 简介文档
* new: 镜像站文档
* update: 功能特性文档
commit fd91905f022b3ceaa59e666d1ff42d91fb8d40ef
Author: login <[email protected]>
Date: Sun Jan 8 11:38:59 2023 +0800
解决编译gcc、binutils的脚本中,变量名称错误的问题 (#142)
commit 62e4613978193aaf5d949a331df0398f2d085a30
Author: Gou Ngai <[email protected]>
Date: Sat Jan 7 23:15:37 2023 +0800
使用rust重构softirq机制;解决Rtc驱动的编译警告问题 (#138)
* 使用rust重构softirq机制
* 解决Rtc驱动的编译警告问题
Co-authored-by: longjin <[email protected]>
commit e9fdc57bf878f1bc5cc5743dfaeeaef743439291
Author: login <[email protected]>
Date: Sat Jan 7 22:36:49 2023 +0800
简单添加了fopen对mode参数的处理。请注意,它没有完全遵循posix,也与Linux的不一致,将来使用Rust的时候完善它。 (#141)
commit 2224c93ea968bc74621f7e124b4aca04875b3e6a
Author: guanjinquan <[email protected]>
Date: Fri Jan 6 21:29:23 2023 +0800
完善libc,构建了OS-specific工具链,编译了基于gcc-11.3.0的DragonOS userland compiler,移植了mpfr,gmp,mpc库 (#134)
* 修改include路径
* 添加了创建libsysapi.a和/bin/sysroot/usr/include/+lib/的代码
* 修补.gitignore
* 删除多余项
* 优化脚本可读性
* 新增crt0 crti crtn
* 编译binutils所需的东西
* fflush()和fprintf()的简单实现
* 应用程序启动前,调用初始化libc的函数
* 自动创建sysroot
* 添加了stderr的初始化
* 修改了stderr的初始化
* 内核添加对stdio的简略处理
* 格式化代码
* 修正打开stdio文件描述符的问题
* bugfix: 修复fprintf忘记释放buf的问题
* 修复shell错误地把入口设置为main而不是_start的问题
* 新增__cxa_atexit (gcc要求libc提供这个)
* 增加putchar puts
* 更新写入磁盘镜像的脚本,默认无参数时,使用legacy方式安装
* 更新编译脚本
* stdio增加eof的定义
* 新增extern cplusplus
* mpfr gmp mpc 构建脚本
* 更新libsysapi.a为libc.a
* 加上ferror fopen fclose
* 更新移植的软件的构建脚本
* 更改build_gcc_toolchain.sh中的-save参数名为-save-cache
Co-authored-by: longjin <[email protected]>
commit 61de2cdc3f29cdc6c441f128119e01e003e6f3ca
Author: login <[email protected]>
Date: Tue Jan 3 23:09:25 2023 +0800
新增rust版本的lockref (#135)
* new:Rust封装cpu_relax(),通过pause指令,让cpu休息一会儿。降低空转功耗
* new: Rust版本的lockref
* Rust的RawSpinlock新增is_locked()和set_value()方法。
* lockref文档
commit 2726f101b4cc787bbd36a69afffb0112f3a6567f
Author: login <[email protected]>
Date: Tue Jan 3 21:01:56 2023 +0800
删除无用的cfs.h (#136)
commit 587086d3f299f7394559d547c828191be20cfc11
Author: login <[email protected]>
Date: Sun Jan 1 16:53:57 2023 +0800
1、在文件系统目录下增加mod.rs 2、将VFS的路径改为vfs(#133)
2、将VFS的路径改为vfs
commit 843e442971a47693f37a5f8d3452c383f7325359
Author: login <[email protected]>
Date: Sat Dec 31 18:43:05 2022 +0800
修复init进程忘记设定fs gs寄存器的问题。 (#132)
commit 74bde36e014ff501241bf40dd83653db47a2c8e4
Author: guanjinquan <[email protected]>
Date: Sat Dec 31 17:35:39 2022 +0800
Patch porting gcc v2 (#124)
* 更改编译器的Include路径,使得include时不需要加`<libc/src/include/>`前缀
* 修改include路径
Co-authored-by: longjin <[email protected]>
commit d4f3de93a23e4bd4f000a3663768d47d094bf188
Author: login <[email protected]>
Date: Sat Dec 31 17:26:12 2022 +0800
使用Rust重构CFS调度器 (#131)
* 新建调度器的文件
* 把softirq vector移动到c文件中(原来在.h)
* 将进程切换方式改为“中断返回时切换”
* new:使用rust重构CFS
* 删除已经在smp中废弃的HPET中断转发函数
* 代码格式化
* 删除多余的dunce依赖
commit 156949680c83f2d7e3b21ed68b11698b88eaf396
Author: login <[email protected]>
Date: Sat Dec 31 13:47:49 2022 +0800
bugfix:修复当使用sched()运行调度器,在切换进程的时候,由于不在中断上下文内,导致当前进程的上下文丢失的问题。 (#130)
bugfix:修复当使用sched()运行调度器,在切换进程的时候,由于不在中断上下文内,导致当前进程的上下文丢失的问题。
bugfix:修复切换进程的宏的汇编代码的损坏部分,未声明rax寄存器,从而导致的编译器未定义行为问题。
commit 882f0b7e7498dbff8de527b2b9159b7f6e6359c9
Author: YJwu2023 <[email protected]>
Date: Wed Dec 28 19:35:17 2022 +0800
修复内存bug与grub安装脚本的错误 (#129)
* 修复内存bug与grub安装脚本的错误
* 修改小bug
commit adc1846b06fb862caed049f435fc0061488a6ff9
Author: login <[email protected]>
Date: Mon Dec 26 13:13:12 2022 +0800
内核:在lib.rs中,将arch模块的路径进行更改,使得其他模块使用arch的代码时,不需要指定arch::x86_64 (#128)
commit ac643d420b22f9d454ecefccd51ed34a9664586b
Author: login <[email protected]>
Date: Sun Dec 25 23:53:35 2022 +0800
new:新增rust写的RawSpinlock (#127)
commit 998390210549b47e6bdcc3fdab49eff4086ad18b
Author: login <[email protected]>
Date: Sat Dec 24 23:30:26 2022 +0800
...
V0.1.2
V0.1.2
:::{note}
本文作者:龙进 [email protected]
2022年12月17日
:::
贡献者名单
DragonOS V0.1.2版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 吴宇健 [email protected]
- Gou Ngai [email protected]
- 黄厅 [email protected]
- 王文聪 [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen
- Seele.Clover
- TerryLeeSCUT
- 悟
- slientbard
其中,非常感谢Seele.Clover给予DragonOS项目人民币500元的赞助与支持!我们对于每一笔赞助款项,将仔细登记,并确保其能被妥善的使用。
更新内容-内核
- 删除rust_helloworld文件 (#113)
- Signal: 允许用户注册信号处理函数,能够进入自定义的handler。(#112)
- 支持kill命令
- 允许用户自定义信号处理函数
- 新增2个系统调用:
SYS_SIGACTION
,SYS_RT_SIGRETURN
- libc增加
signal()
,sigaction()
函数。 - 暂时只支持旧版的sighandler,即:只有1个参数的
void handler(int signum)
类型的信号处理函数。对于另一种信号处理函数void handler(int signum, siginfo_t *info, void* data)
,尚不支持传递第三个参数。
- 在内核代码中加入自定义的stdint.h文件 (#109)
- 调整编译grub的脚本的部分 (#108)
- 新增32、64位uefi启动 (#105)(#101)
- 使用编译安装的grub-2.06,解决客户机上grub版本不对导致的编译无法运行的问题。
- 增加了timekeeping模块 (#106)
- bugfix: 修复rtc时钟对BCD码进行转换的时候,忘了处理day字段的问题 (#104)
- new: 开发过程文档(完成了一半)
- bootstrap.sh解决下载rust慢的问题
- 更新“构建系统”文档
- procfs->status增加显示preempt和虚拟运行时间 (#100)
- ffz函数:获取u64中的第一个值为0的bit (#100)
- 解决由于编译器优化导致local_irq_restore无法获取到正确的rflags的值的问题
- 使用Rust重构串口驱动 (#99)
更新内容-用户环境
- about app: 显示当前构建的git commit sha1以及构建时间(#114)
- shell: 修复shell的exec命令对绝对路径的拼接错误问题(#114)
- shell: exec命令增加"&"后台运行选项 (#100)
- new: 测试signal用的app
- 将libc目录进行调整,加入cargo作为rust的包管理器
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/fslongjin/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
:::{note}
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
:::
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
当前版本的所有提交记录
commit 7a818da88a1c7a1760de7671141b0ce1ca4e3dde
Author: login <[email protected]>
Date: Sat Dec 17 17:49:12 2022 +0800
Patch about auto gen version string (#114)
* new: about app中,显示当前构建的git commit sha1以及构建时间
* bugfix: 修复shell的exec命令对绝对路径的拼接错误问题
commit 83a7aaa46bbc411c43d4fc099c6c8884efbe4771
Author: login <[email protected]>
Date: Sat Dec 17 16:31:50 2022 +0800
删除rust_helloworld文件 (#113)
commit 6efd4740336205c9bfdd8b164e667cee2f38781e
Author: login <[email protected]>
Date: Sat Dec 17 16:27:50 2022 +0800
允许用户自定义信号处理函数 (#112)
* new: 用户注册信号处理函数,能够进入自定义的handler
* 修复忘了传信号的数字给用户的处理函数的bug
* new:sigreturn
* 删除注释
commit 0e0c187484281768391e131495f0655e40d70cf7
Author: login <[email protected]>
Date: Fri Dec 16 16:20:09 2022 +0800
在内核代码中加入自定义的stdint.h文件 (#109)
commit d02e6ea4112ad520aa4090ff73cdf592e14c0a82
Author: login <[email protected]>
Date: Wed Dec 14 20:01:55 2022 +0800
调整编译grub的脚本的部分 (#108)
1、bugfix: 修复编译grub的脚本的部分错误
2、将grub下载源替换为tuna
3、优化写入磁盘镜像的脚本
4、将bios文件夹改名为legacy
commit 38b341b8aa671f75ac26d05059aa2e9a09e653b7
Author: YJwu2023 <[email protected]>
Date: Wed Dec 14 16:58:49 2022 +0800
新增32位uefi启动 (#105)
* 新增32位uefi启动
* 修复小bug
* 增加grub本地编译安装
* 增加本地grub编译安装脚本
* 修正小错误
* 修复空文件夹不上传的bug
commit 01876902fbf6ed43992cc7d153bd8c505cb5224b
Author: Gou Ngai <[email protected]>
Date: Wed Dec 14 15:13:54 2022 +0800
增加了timekeeping模块 (#106)
* 增加了timekeeping模块
* 格式化文档和细节更改
Co-authored-by: longjin <[email protected]>
commit 728aca308917a7d4d0ba10fe8174e9408d77a9a6
Author: login <[email protected]>
Date: Sun Dec 11 22:59:47 2022 +0800
bugfix: 修复rtc时钟对BCD码进行转换的时候,忘了处理day字段的问题 (#104)
commit 237e95c6ddce72d72ae7fedfeca412fab82b3622
Author: wwc-15172310230 <[email protected]>
Date: Sun Dec 11 22:22:10 2022 +0800
调整user下libs的libc目录结构 (#103)
* 调整user下libs的libc目录结构
* 修正.gitignore文件的问题
* 修复无法编译的问题
Co-authored-by: longjin <[email protected]>
commit 2291ffdece1dc5a703602f79f74df8a4854d215b
Author: login <[email protected]>
Date: Sun Dec 11 20:09:58 2022 +0800
文档更新 (#102)
* new: 开发过程文档(完成了一半)
* bootstrap.sh解决下载rust慢的问题
* 更新“构建系统”文档
commit 7f439c5ddbd2ecffc112149d16983975f523052c
Author: YJwu2023 <[email protected]>
Date: Fri Dec 9 16:08:54 2022 +0800
增加uefi启动 (#101)
* 增加uefi启动
* 修改脚本
* uefi修改
* 删除错误的注释
* 修正写入磁盘镜像的脚本
* 修改X86_64为x86_64
Co-authored-by: longjin <[email protected]>
commit 1a2eaa402f05f82aaeebe1e03824534a0a425d4d
Author: login <[email protected]>
Date: Thu Dec 8 22:59:51 2022 +0800
signal的处理(kill命令)以及一些其他的改进 (#100)
* 将entry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all
* new: 增加判断pt_regs是否来自用户态的函数
* new: rust的cli和sti封装
* 将原有的判断pt_regs是否来自用户态的代码,统一改为调用user_mode函数
* ffz函数:获取u64中的第一个值为0的bit
* spinlock增加 spinlock irq spin_unlock_irq
* 临时解决显示刷新线程迟迟不运行的问题
* 更改ffi_convert的生命周期标签
* new: 测试signal用的app
* 解决由于编译器优化导致local_irq_restore无法获取到正确的rflags的值的问题
* new: exec命令增加"&"后台运行选项
* procfs->status增加显示preempt和虚拟运行时间
* 更改引用计数的FFIBind2Rust trait中的生命周期标签
* new: signal处理(kill)
* 更正在review中发现的一些细节问题
commit f8b55f6d3fcbf152a1cb6d6fc722bf1607418b28
Author: TingHuang <[email protected]>
Date: Tue Dec 6 22:15:03 2022 +0800
Patch uart (#99)
* 添加UART驱动相关文件
* 添加驱动核心文件,将rust编写的驱动代码加入Package中
* 添加glib.h文件生成rust代码,添加uart驱动代码
* 添加串口发送及接收相关代码
* 添加字符串发送函数,未实现具体功能
* 为调用uart驱动的代码添加rust接口
* 添加字符串发送函数,修改C语言调用接口
* 添加rust串口驱动
* 添加uart.h头文件,将串口端口类型改为enum
* 添加注释,规范代码
commit 036acc52ce9d0fb9e7d92768ff74939a29c07f32
Author: login <[email protected]>
Date: Tue Nov 29 21:46:13 2022 +0800
将entry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all (#98)
* 将entry.S中冗余的ret_from_syscall代码删除,改为jmp Restore_all
V0.1.1
V0.1.1
:::{note}
本文作者:龙进 [email protected]
2022年11月27日
:::
贡献者名单
DragonOS V0.1.1版本由以下小伙伴贡献代码:
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen
- TerryLeeSCUT
- 悟
- slientbard
其中,非常感谢David Wen给予DragonOS项目人民币1000元的赞助与支持!我们对于每一笔赞助款项,将仔细登记,并确保其能被妥善的使用。
更新内容-内核
- 新增rust ffi (#77)
- port kmalloc and printk to rust
- rust下的kdebug kinfo kwarn kBUG kerror宏
- bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题
- 目录结构优化:移动asm.h和cmpxchg.h
- signal的发送
- procfs:查看进程的status
- 解决第一次编译时磁盘镜像权限错误的问题
- 将fork相关代码移动到fork.c
更新内容-用户环境
- shell:增加kill命令,可向目标进程发送信号。但由于仍未完善signal机制,因此目标进程暂时不能响应这个信号。
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/fslongjin/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
:::{note}
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
:::
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
- 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 - 《一个64位操作系统的设计与实现》田宇; 人民邮电出版社
- chcore - 《现代操作系统:设计与实现》陈海波,夏虞斌; 机械工业出版社
- SimpleKernel - https://github.com/Simple-XX/SimpleKernel - MIT
当前版本的所有提交记录
commit d65ade9c5909076747bd00966a398fe27fbd290d
Author: DaJiYuQia <[email protected]>
Date: Sun Nov 27 14:21:31 2022 +0800
Patch procf (#95)
* debug color problem
Co-authored-by: longjin <[email protected]>
commit 6cb769c423b09e88fea1763210200a716477be0a
Author: login <[email protected]>
Date: Sun Nov 27 14:17:36 2022 +0800
将include目录下的rust代码转移到他们应当属于的模块中 (#96)
* 将include目录下的rust代码转移到他们应当属于的模块下。
commit 27a97abd2474b03ad09b562e5ed11e1fdae8eb32
Author: DaJiYuQia <[email protected]>
Date: Sat Nov 26 17:34:00 2022 +0800
Patch procf (#90)
* 1234
* 123
* 合并master
* procfs
* 1
* procfs展示进程基本信息
* modified code
* 恢复权限
* 恢复权限
#恢复权限
* modify permission
* 删除run.sh
* 解决第一次编译时磁盘镜像权限错误的问题
* 恢复.vscode/c_cpp_properties.json
* 删除process.c中错误的do_fork
* remake procfs
* 修改一些变量名
* 修改类型
* modified
* data_puts缓冲区溢出后return
Co-authored-by: longjin <[email protected]>
commit ad23fcddf893d7f92d2bf3efdb66e969416d2852
Author: login <[email protected]>
Date: Wed Nov 23 21:34:35 2022 +0800
bugfix: 修复进程退出时未释放signal和sighand && 增加赞赏者名单:David Wen (#93)
* bugfix: 修复进程退出时未释放signal和sighand的bug
* 增加赞赏者名单:David Wen
commit 0274cd6eeec01885232e7418a501857cb76da69e
Author: login <[email protected]>
Date: Wed Nov 23 20:43:18 2022 +0800
修正drop signal结构体的box对象的的问题 (#92)
* fix: exit signal and exit sighand
commit c8025a88798dc57ecc5d7f20ad69de695445638f
Author: login <[email protected]>
Date: Wed Nov 23 20:18:22 2022 +0800
new:在fork时拷贝signal和sighand (#91)
* refcount初始化
* new: 实现copy_sighand
del: 删除sighand_struct的wqh, 待将来有需要时,替换成rust版本的
* new: 拷贝signal
bugfix: 解决拷贝sighand时的uaf问题
commit 66f67c6a95b8aad85cfd2146a86e5e3e6a3568e7
Author: login <[email protected]>
Date: Wed Nov 23 11:38:20 2022 +0800
signal的发送(暂时父子进程之间共享信号及相应的结构体) (#89)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题
* new: 初步实现signal的数据结构
* new:signal相关数据结构
* fix: 解决bindings.rs报一堆警告的问题
* new: rust下的kdebug kinfo kwarn kBUG kerror宏
* 移动asm.h和cmpxchg.h
* new: signal的发送(暂时只支持父子进程共享信号及处理函数)
commit 3d729e2069e01ee07525ff83167566dac5322a40
Author: login <[email protected]>
Date: Fri Nov 18 17:59:33 2022 +0800
bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题 (#87)
* bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题
new: pcb相关api文档
* 将文档加入目录
commit 0bfe94f46be9bdde1ade81a20e803aa2aafd2964
Author: login <[email protected]>
Date: Fri Nov 18 16:32:15 2022 +0800
new: rust下的kdebug kinfo kwarn kBUG kerror宏 (#86)
* new: rust下的kdebug kinfo kwarn kBUG kerror宏
commit c6174797dcf3427f38bfa0f4bd3e039c319f7c5b
Author: login <[email protected]>
Date: Thu Nov 17 20:29:29 2022 +0800
fix: 解决bindings.rs报了很多警告的问题 (#85)
* fix: 解决bindings.rs报一堆警告的问题
commit cffd7144fbed84f9775e89d7b99602c6ccc5a510
Author: login <[email protected]>
Date: Wed Nov 16 15:18:03 2022 +0800
signal相关数据结构&代码结构优化 (#84)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题
* new: 初步实现signal的数据结构
commit fb6c29d01d4cf92368efec08c01e419c2a941f7d
Author: login <[email protected]>
Date: Sun Nov 13 16:43:58 2022 +0800
port kmalloc and printk to rust (#83)
* 暂时移除cbindgen
* 将lib文件夹更名为libs文件夹(解决rust的冲突)
* 实现了全局的allocator
* 实现了printk宏
* new: 完善了printk的颜色
commit 82d2e446a401e7eee57a847f48a6d162931170c3
Author: login <[email protected]>
Date: Sat Nov 12 15:25:54 2022 +0800
new: 暂时移除cbindgen (#82)
commit 2aaf7808efe44ecfaadd51ae4f8892e667108578
Author: login <[email protected]>
Date: Fri Nov 11 22:21:44 2022 +0800
在内核中引入cbindgen,生成rust-C的FFI (#81)
* 解决codeql失败问题
* new: 为内核引入cbindgen
commit 2813126e3190c9b3c1a836a647b259a7adbe0cf3
Author: login <[email protected]>
Date: Fri Nov 11 15:35:37 2022 +0800
新增rust ffi (#77)
* 引入cargo
* 取消对Cargo.lock的跟踪
* 解决vscode报错问题
* new: rust的代码能够调用c语言的printk_color
* 1、将原本run.sh的工作拆解,变为几个不同的make命令
2、在docker镜像中编译rust
* 更改workflow
* update workflow
* new: 解决workflow无法通过编译的问题
commit 5e023cf7911333eb05bfe65704dce4b01fa4d0a7
Author: login <[email protected]>
Date: Fri Nov 11 15:21:45 2022 +0800
Update makefile.yml
commit e44795008f7e34d2068cf28dcedbcb91f5ccd66b
Author: login <[email protected]>
Date: Fri Nov 11 15:18:13 2022 +0800
Update makefile.yml (#80)
commit ec5fb84b61c313824cc2199ab64e3af4b7e5f895
Author: login <[email protected]>
Date: Fri Nov 11 15:08:09 2022 +0800
Update makefile.yml
commit 6d9dff5f1ff347ea780a0249e54eef356cdcaaea
Author: login <[email protected]>
Date: Fri Nov 11 15:07:48 2022 +0800
Revert "Update makefile.yml (#78)" (#79)
This reverts commit badc7d238f2341e844a90be3e357e5dd77a447fc.
commit badc7d238f2341e844a90be3e357e5dd77a447fc
Author: login <[email protected]>
Date: Fri Nov 11 15:05:52 2022 +0800
Update makefile.yml (#78)