🔥【DragonOS V0.1.10 更新发布】🔥
亲爱的DragonOS用户和开发者们,我们很高兴地宣布DragonOS V0.1.10版本正式发布!在这个版本中,我们引入了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)
更新内容-用户环境
新特性/新应用移植
- 添加core utils到系统 (#624)
- 移植dns查询工具dog的–tcp功能 (#652)
更新内容-CI
- 引入triagebot对issue和PR进行分类
- 添加clippy检测的自动化工作流 (#649)
- ci: import issue checker (#750)
- ci: update the match regex of issue checker (#784)
- ci: 添加支持gentoo系统的一键安装脚本 (#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社区的贡献者们致以最衷心的感谢!
发表回复