Skip to content

V0.1.10

Latest
Compare
Choose a tag to compare
@fslongjin fslongjin released this 13 May 08:58
· 85 commits to master since this release
ce48b93

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)

更新内容-用户环境

新特性/新应用移植

  • 添加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)

New Contributors

源码、发布版镜像下载

  您可以通过以下方式获得源代码:

通过Git获取

通过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社区的贡献者们致以最衷心的感谢!