:::{note} 本文作者:龙进 [email protected]
2023年1月8日 :::
DragonOS V0.1.3版本由以下小伙伴贡献代码:
感谢以下同学的赞赏,我们将不断努力!
fflush()
, fprintf()
, stdin
, stdout
, stderr
, ferror()
, fopen()
, fclose()
, putchar()
, puts()
(#136)fopen()
对mode参数的处理。请注意,它没有完全遵循posix,也与Linux的不一致,将来使用Rust的时候完善它。 (#141)<libc/src/include/>
前缀 (#124)dragonos/dragonos-dev:v1.2
, 并支持从Dockerfile构建这个编译镜像 (#111)64a5b1cbf28e3305560e166c1b6624e99745c720
, 仓库:https://github.com/DragonOS-Community/gcca0ae560e0065862a9867b9e1f8364749ef38d99e
, 仓库:https://github.com/DragonOS-Community/binutilsdd9eee5778fb6027fafa4fe850aff21b1a71c18e
, 仓库:https://github.com/DragonOS-Community/gmp-6.2.1fa8e30cdc2e838fdd82b60fec31fcfc5e118aad6
, 仓库:https://github.com/DragonOS-Community/mpfr您可以通过以下方式获得源代码:
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
:::{note} 为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。 :::
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
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
新增signal文档 (#126)
* 新增signal文档
commit a7f5ca7b67160557abf84a1169dd60093220aeb0
Author: YJwu2023 <[email protected]>
Date: Sat Dec 24 23:29:36 2022 +0800
修复下载grub2.06时的提示错误 (#125)
* 修复grub下载显示提示显示错误
commit 82762007da41148e1ed1df465211eb5c8ba2c15e
Author: login <[email protected]>
Date: Fri Dec 23 18:11:47 2022 +0800
Update makefile.yml
commit b975025ec8854ca232152f4ee44cc2226891a34c
Author: login <[email protected]>
Date: Fri Dec 23 11:45:19 2022 +0800
Update makefile.yml
commit ad2bb74d949bfcb2935e43ac7b261d7ecce23389
Author: login <[email protected]>
Date: Fri Dec 23 11:21:22 2022 +0800
Update makefile.yml
commit 6b7776d189ab5f19fbab20d6c5c9ed3ab20c7ab6
Author: login <[email protected]>
Date: Fri Dec 23 10:59:15 2022 +0800
修正smp的makefile中没有替换AS的问题
commit beb12a188b6c6bc4196796ac2ae1ecd7d8ed8223
Author: login <[email protected]>
Date: Fri Dec 23 10:57:39 2022 +0800
Update makefile.yml
commit d65c527730e5c8a75f6dad0f996c093040699ee3
Author: login <[email protected]>
Date: Thu Dec 22 22:58:28 2022 +0800
Update makefile.yml (#121)
commit 5ed4cd460200cb19aae8c3c67dfd77e1e9f0e105
Author: guanjinquan <[email protected]>
Date: Thu Dec 22 21:09:12 2022 +0800
Patch gcc toolchain (#111)
* 添加了GCC_cross_compile——tool_chain
* - 解决环境变量路径拼接时,多了`/`的问题
- apt安装时增加-y,不需用户确认
* 解决添加环境变量的命令有误的问题
* 修正编译错误时,还会执行下一步的问题
* new: 编译完成后清理临时文件
* 更新makefile
* 调整:把grub安装在 $HOME/opt/dragonos-grub下
* new: 新增dockerfile
* 将镜像源换成中科大的(原因是清华的总是ban掉用于构建镜像的服务器的ip)
* 修改为基于debian bullseye构建
* 取消指定版本
* 修复MBR磁盘镜像未设置启动标志的bug
* 取消在docker中安装grub
* 安装grub的过程改到客户机上进行
* bootstrap.sh 添加--no-docker
* 使用新版的docker编译镜像
* 修补, 添加了一些关于gcc的check
Co-authored-by: longjin <[email protected]>
commit ba0d93d8b26034abc54bcaf3f0ff04863bbd076e
Author: Gou Ngai <[email protected]>
Date: Mon Dec 19 15:04:37 2022 +0800
refactor rtc module in rust (#118)
* 用rust重构rtc模块
* refactor the rtc module by rust
* rtc-updated
* rtc-updated-4
* rtc
commit c588d6f77f4b38939701b946228218ea81a7c8dc
Author: login <[email protected]>
Date: Mon Dec 19 15:03:44 2022 +0800
Patch add abort func (#120)
* 对于除了sigkill以外的信号,也加入队列
* bugfix:libc中,注册信号处理函数时,总是注册sigkill的问题
* 增加getpid系统调用
* 增加了raise、kill、abort
commit 47f0d12a1f1a1aa11be8e751ecdbf76f0cb596d9
Author: YJwu2023 <[email protected]>
Date: Mon Dec 19 14:53:51 2022 +0800
修复docker安装时异常退出的bug (#119)
* 修复docker安装时异常退出的bug
* 修复grub编译脚本的小bug
commit 978043e47d1143ca2d5cf22b20793f032e8eb5a5
Author: login <[email protected]>
Date: Sun Dec 18 15:09:15 2022 +0800
修复当系统中不存在dosfstools时,无法正确格式化磁盘镜像的问题 (#117)
* 修复当系统中不存在dosfstools时,无法正确格式化磁盘镜像的问题
commit f9127772dc372a2e607388fdd6818d3f9c4c6d28
Author: YJwu2023 <[email protected]>
Date: Sat Dec 17 23:43:23 2022 +0800
修复docker安装时异常退出的bug (#116)