Releases: DragonOS-Community/DragonOS
V0.1.3
V0.1.3
本文作者:龙进 longjin@RinGoTek.cn
2023年1月8日
贡献者名单
DragonOS V0.1.3版本由以下小伙伴贡献代码:
- 龙进 longjin@RinGoTek.cn
- 吴宇健 wuyujian@DragonOS.org
- 关锦权 guanjinquan@DragonOS.org
- Gou Ngai sujintao@DragonOS.org
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 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 <longjin@ringotek.cn>
Date: Sun Jan 8 15:47:44 2023 +0800
修正由于libc中具有crti.S和crtn.S,造成的与x86_64-elf-gcc不兼容的问题 (#144)
commit 9358ff0f6f7daa18d6fab4497de025736b3d6725
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Sun Jan 8 11:38:59 2023 +0800
解决编译gcc、binutils的脚本中,变量名称错误的问题 (#142)
commit 62e4613978193aaf5d949a331df0398f2d085a30
Author: Gou Ngai <94795048+AlbertSanoe@users.noreply.github.com>
Date: Sat Jan 7 23:15:37 2023 +0800
使用rust重构softirq机制;解决Rtc驱动的编译警告问题 (#138)
* 使用rust重构softirq机制
* 解决Rtc驱动的编译警告问题
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit e9fdc57bf878f1bc5cc5743dfaeeaef743439291
Author: login <longjin@ringotek.cn>
Date: Sat Jan 7 22:36:49 2023 +0800
简单添加了fopen对mode参数的处理。请注意,它没有完全遵循posix,也与Linux的不一致,将来使用Rust的时候完善它。 (#141)
commit 2224c93ea968bc74621f7e124b4aca04875b3e6a
Author: guanjinquan <1666320330@qq.com>
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 <longjin@RinGoTek.cn>
commit 61de2cdc3f29cdc6c441f128119e01e003e6f3ca
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Tue Jan 3 21:01:56 2023 +0800
删除无用的cfs.h (#136)
commit 587086d3f299f7394559d547c828191be20cfc11
Author: login <longjin@ringotek.cn>
Date: Sun Jan 1 16:53:57 2023 +0800
1、在文件系统目录下增加mod.rs 2、将VFS的路径改为vfs(#133)
2、将VFS的路径改为vfs
commit 843e442971a47693f37a5f8d3452c383f7325359
Author: login <longjin@ringotek.cn>
Date: Sat Dec 31 18:43:05 2022 +0800
修复init进程忘记设定fs gs寄存器的问题。 (#132)
commit 74bde36e014ff501241bf40dd83653db47a2c8e4
Author: guanjinquan <1666320330@qq.com>
Date: Sat Dec 31 17:35:39 2022 +0800
Patch porting gcc v2 (#124)
* 更改编译器的Include路径,使得include时不需要加`<libc/src/include/>`前缀
* 修改include路径
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit d4f3de93a23e4bd4f000a3663768d47d094bf188
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Sat Dec 31 13:47:49 2022 +0800
bugfix:修复当使用sched()运行调度器,在切换进程的时候,由于不在中断上下文内,导致当前进程的上下文丢失的问题。 (#130)
bugfix:修复当使用sched()运行调度器,在切换进程的时候,由于不在中断上下文内,导致当前进程的上下文丢失的问题。
bugfix:修复切换进程的宏的汇编代码的损坏部分,未声明rax寄存器,从而导致的编译器未定义行为问题。
commit 882f0b7e7498dbff8de527b2b9159b7f6e6359c9
Author: YJwu2023 <119829947+YJwu2023@users.noreply.github.com>
Date: Wed Dec 28 19:35:17 2022 +0800
修复内存bug与grub安装脚本的错误 (#129)
* 修复内存bug与grub安装脚本的错误
* 修改小bug
commit adc1846b06fb862caed049f435fc0061488a6ff9
Author: login <longjin@ringotek.cn>
Date: Mon Dec 26 13:13:12 2022 +0800
内核:在lib.rs中,将arch模块的路径进行更改,使得其他模块使用arch的代码时,不需要指定arch::x86_64 (#128)
commit ac643d420b22f9d454ecefccd51ed34a9664586b
Author: login <longjin@ringotek.cn>
Date: Sun Dec 25 23:53:35 2022 +0800
new:新增rust写的RawSpinlock (#127)
commit 998390210549b47e6bdcc3fdab49eff4086ad18b
Author: login <longjin@ringotek.cn>
Date: Sat Dec 24 23:30:26 2022 +0800
...
V0.1.2
V0.1.2
:::{note}
本文作者:龙进 longjin@RinGoTek.cn
2022年12月17日
:::
贡献者名单
DragonOS V0.1.2版本由以下小伙伴贡献代码:
- 龙进 longjin@ringotek.cn
- 吴宇健 wuyujian@DragonOS.org
- Gou Ngai sujintao@DragonOS.org
- 黄厅 huangting@DragonOS.org
- 王文聪 1297389017@qq.com
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 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 <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Sat Dec 17 16:31:50 2022 +0800
删除rust_helloworld文件 (#113)
commit 6efd4740336205c9bfdd8b164e667cee2f38781e
Author: login <longjin@ringotek.cn>
Date: Sat Dec 17 16:27:50 2022 +0800
允许用户自定义信号处理函数 (#112)
* new: 用户注册信号处理函数,能够进入自定义的handler
* 修复忘了传信号的数字给用户的处理函数的bug
* new:sigreturn
* 删除注释
commit 0e0c187484281768391e131495f0655e40d70cf7
Author: login <longjin@ringotek.cn>
Date: Fri Dec 16 16:20:09 2022 +0800
在内核代码中加入自定义的stdint.h文件 (#109)
commit d02e6ea4112ad520aa4090ff73cdf592e14c0a82
Author: login <longjin@ringotek.cn>
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 <119829947+YJwu2023@users.noreply.github.com>
Date: Wed Dec 14 16:58:49 2022 +0800
新增32位uefi启动 (#105)
* 新增32位uefi启动
* 修复小bug
* 增加grub本地编译安装
* 增加本地grub编译安装脚本
* 修正小错误
* 修复空文件夹不上传的bug
commit 01876902fbf6ed43992cc7d153bd8c505cb5224b
Author: Gou Ngai <94795048+AlbertSanoe@users.noreply.github.com>
Date: Wed Dec 14 15:13:54 2022 +0800
增加了timekeeping模块 (#106)
* 增加了timekeeping模块
* 格式化文档和细节更改
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit 728aca308917a7d4d0ba10fe8174e9408d77a9a6
Author: login <longjin@ringotek.cn>
Date: Sun Dec 11 22:59:47 2022 +0800
bugfix: 修复rtc时钟对BCD码进行转换的时候,忘了处理day字段的问题 (#104)
commit 237e95c6ddce72d72ae7fedfeca412fab82b3622
Author: wwc-15172310230 <78997674+wwc-15172310230@users.noreply.github.com>
Date: Sun Dec 11 22:22:10 2022 +0800
调整user下libs的libc目录结构 (#103)
* 调整user下libs的libc目录结构
* 修正.gitignore文件的问题
* 修复无法编译的问题
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit 2291ffdece1dc5a703602f79f74df8a4854d215b
Author: login <longjin@ringotek.cn>
Date: Sun Dec 11 20:09:58 2022 +0800
文档更新 (#102)
* new: 开发过程文档(完成了一半)
* bootstrap.sh解决下载rust慢的问题
* 更新“构建系统”文档
commit 7f439c5ddbd2ecffc112149d16983975f523052c
Author: YJwu2023 <119829947+YJwu2023@users.noreply.github.com>
Date: Fri Dec 9 16:08:54 2022 +0800
增加uefi启动 (#101)
* 增加uefi启动
* 修改脚本
* uefi修改
* 删除错误的注释
* 修正写入磁盘镜像的脚本
* 修改X86_64为x86_64
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit 1a2eaa402f05f82aaeebe1e03824534a0a425d4d
Author: login <longjin@ringotek.cn>
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 <92705854+TingSHub@users.noreply.github.com>
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 <longjin@ringotek.cn>
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}
本文作者:龙进 longjin@RinGoTek.cn
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 <88259094+DaJiYuQia@users.noreply.github.com>
Date: Sun Nov 27 14:21:31 2022 +0800
Patch procf (#95)
* debug color problem
Co-authored-by: longjin <longjin@RinGoTek.cn>
commit 6cb769c423b09e88fea1763210200a716477be0a
Author: login <longjin@ringotek.cn>
Date: Sun Nov 27 14:17:36 2022 +0800
将include目录下的rust代码转移到他们应当属于的模块中 (#96)
* 将include目录下的rust代码转移到他们应当属于的模块下。
commit 27a97abd2474b03ad09b562e5ed11e1fdae8eb32
Author: DaJiYuQia <88259094+DaJiYuQia@users.noreply.github.com>
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 <longjin@RinGoTek.cn>
commit ad23fcddf893d7f92d2bf3efdb66e969416d2852
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Wed Nov 23 20:43:18 2022 +0800
修正drop signal结构体的box对象的的问题 (#92)
* fix: exit signal and exit sighand
commit c8025a88798dc57ecc5d7f20ad69de695445638f
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Fri Nov 18 17:59:33 2022 +0800
bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题 (#87)
* bugfix: 修复进程pcb被回收时,未将其从链表中删除的问题
new: pcb相关api文档
* 将文档加入目录
commit 0bfe94f46be9bdde1ade81a20e803aa2aafd2964
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Thu Nov 17 20:29:29 2022 +0800
fix: 解决bindings.rs报了很多警告的问题 (#85)
* fix: 解决bindings.rs报一堆警告的问题
commit cffd7144fbed84f9775e89d7b99602c6ccc5a510
Author: login <longjin@ringotek.cn>
Date: Wed Nov 16 15:18:03 2022 +0800
signal相关数据结构&代码结构优化 (#84)
* 解决由于spinlock.h中包含preempt_enable()带来的循环include问题
* new: 初步实现signal的数据结构
commit fb6c29d01d4cf92368efec08c01e419c2a941f7d
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Sat Nov 12 15:25:54 2022 +0800
new: 暂时移除cbindgen (#82)
commit 2aaf7808efe44ecfaadd51ae4f8892e667108578
Author: login <longjin@ringotek.cn>
Date: Fri Nov 11 22:21:44 2022 +0800
在内核中引入cbindgen,生成rust-C的FFI (#81)
* 解决codeql失败问题
* new: 为内核引入cbindgen
commit 2813126e3190c9b3c1a836a647b259a7adbe0cf3
Author: login <longjin@ringotek.cn>
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 <longjin@ringotek.cn>
Date: Fri Nov 11 15:21:45 2022 +0800
Update makefile.yml
commit e44795008f7e34d2068cf28dcedbcb91f5ccd66b
Author: login <longjin@ringotek.cn>
Date: Fri Nov 11 15:18:13 2022 +0800
Update makefile.yml (#80)
commit ec5fb84b61c313824cc2199ab64e3af4b7e5f895
Author: login <longjin@ringotek.cn>
Date: Fri Nov 11 15:08:09 2022 +0800
Update makefile.yml
commit 6d9dff5f1ff347ea780a0249e54eef356cdcaaea
Author: login <longjin@ringotek.cn>
Date: Fri Nov 11 15:07:48 2022 +0800
Revert "Update makefile.yml (#78)" (#79)
This reverts commit badc7d238f2341e844a90be3e357e5dd77a447fc.
commit badc7d238f2341e844a90be3e357e5dd77a447fc
Author: login <longjin@ringotek.cn>
Date: Fri Nov 11 15:05:52 2022 +0800
Update makefile.yml (#78)
V0.1.0
V0.1.0
本文作者:龙进 longjin@RinGoTek.cn
2022年11月4日
发布时间:2022年11月6日
前言
DragonOS从2022年1月15日开始开发,到如今已经经历了将近300天。在这么多个日夜里,已经数不清到底花了多少时间在DragonOS的开发之中,
我基本上把所有的空闲时间都给了DragonOS,保守估计总工时已经在1000小时以上。能够发布第一个版本,我感到十分有成就感。
在2022年7月以来,陆陆续续的,有来自6所高校或企业的小伙伴/大佬加入了DragonOS的开发。我当时非常的欣喜,我想,也许在大家的一同努力下,我们能创造出一个真正具有实用性的操作系统呢!我们累计召开了14次交流讨论会。我相信,在大家的共同努力下,将来,我们一定能创造出真正独立自主的、开放的、面向服务器领域应用的开源操作系统,并在生产环境中得到应用。
尽管DragonOS目前只是一个玩具水平的操作系统,只是“比本科生毕业设计难度略高的”操作系统。但是,请不要小看它,它的内在的架构设计,瞄准了Linux5.18及以后的发行版,
虽尚未能达到Linux的水平,但我们正努力追赶。得益于Linux的相关资料,DragonOS在架构设计之时,学习了Linux的很多设计思想,相关组件都尽量考虑了可扩展性与可移植性。
千里之行,始于足下。DragonOS V0.1.0版本的发布,是一个全新的开始。希望在未来的十年里,我们能与众多伙伴们一同努力,在2032年,将DragonOS建设成为具有实用意义的,能够在服务器领域取得
广泛应用的开源操作系统!
特别鸣谢
在DragonOS V0.1.0版本的发布之际,我想对我的老师、前辈以及学校表示衷心的感谢!
-
佛山市南海区大沥镇中心小学 姚志城老师: 您是带领我接触计算机,学会编程的领路人。十年前,与您交谈时,您说过:“我们国家目前还没有自主的、成熟的操作系统”。这句话,为我的梦想埋下了种子。您培养了我对计算机的热爱,因此我选择了软件工程这个专业。感谢当年您的教导,师恩难忘!
-
佛山市南海区石门实验学校: 在石实就读的三年里,非常感谢石实的“扬长教育”理念,在老师们的培养下,让我充分发挥了自己的个性和特长,也取得了不错的成绩。在石实的三年里,我学会了C++、Java以及简单的算法,也自己开发了几个安卓app,积累了将近6千行的代码量。
-
佛山市南海区石门中学:“任重道远,毋忘奋斗”是石中的校训,我想,这句校训,也应当成为我们每个新时代青年人的座右铭。在石门中学的三年,家国情怀教育对我产生了很大的影响。我想,我们作为新时代的青年,更应当肩负起时代的重任,奋勇拼搏,为祖国的发展,为民族的自强,为人类的未来,努力奋斗!
-
华南理工大学:“博学慎思,明辨笃行”,在华工,我得到了进一步的学习与发展。开拓了自己的视野,学会了跟很多人打交道。并且,在软件学院,我遇到了一群认真负责的老师。非常感谢学院对我的支持,支持我们成立项目组。我相信,在学院的支持下,能让DragonOS取得更好的发展,走的更远!
-
华南理工大学软件学院 王国华老师:王老师是我《操作系统》课程的老师,在她的指导下,我对操作系统的原理有了更深的理解,并参加了“泛珠三角+大学生计算机作品赛“,在2022年6月的广东省选拔赛中,DragonOS取得了一等奖、最佳创新奖的好成绩。
-
华南理工大学软件学院 汤峰老师: 汤老师是我们在校内的项目组的指导老师。在她的悉心指导下,我们将不断前行,保持我们前进的方向,持续构建开源社区。我由衷地感谢汤老师的指导!
-
Yaotian Feng: 在Bilibili上认识了这位非常厉害的老哥,解答了我的很多问题,很多次在我毫无头绪的debug了几天之后,几句话点醒了我,让我找到解决问题的路径。并且,他也跟我分享了容易踩坑的地方,让我在将要踩坑的时候能够有个心理预期,不至于那么难受哈哈哈哈。
贡献者名单
DragonOS V0.1.0版本的发布,离不开以下小伙伴们的共同努力:
- 龙进 longjin@RinGoTek.cn
- zzy666-hw zzy666@mail.ustc.edu.cn
- 关锦权 guanjinquan@DragonOS.org
- 周于喆 zhouyuzhe@DragonOS.org
- kkkkkong kongweichao@DragonOS.org
- houmkh jiaying.hou@qq.com
- wang904 1234366@qq.com
- Liric Mechan i@liric.cn
- Mustang handsomepd@qq.com
- Eugene caima12138@foxmail.com
- kun 1582068144@qq.com
- zhujikuan 1335289286@qq.com
- Alloc Alice 1548742234@qq.com
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- TerryLeeSCUT
- 悟
- slientbard
内核
遵循的一些标准规范
- 启动引导:Multiboot2
- 系统接口:posix 2008
硬件架构
- 目前支持在x86-64架构的处理器上运行
Bootloader
- 使用Grub 2.06作为bootloader
内存管理
- 实现了基于bitmap的页分配器
- 实现了slab分配器,用来分配小块的、具有对齐要求的内存
- 抽象出VMA(虚拟内存区域)
- 实现VMA反向映射机制
- 实现MMIO地址空间自动映射机制
多核
- 支持多核引导。也就是说,在DragonOS启动后,将会启动AP处理器。但是,为了简化其他内核模块的实现,目前AP处理器上,暂时没有任务在运行。
- 粗略实现了IPI(处理器核间通信)框架
进程管理
- 支持进程的创建、回收
- 内核线程
- kthread机制
- 用户态、内核态进程/线程的fork/vfork(注意,用户态的fork和内核态的有一定的区别,内核态的fork更复杂)
- exec 让进程去执行一个新的可执行文件
- 进程的定时睡眠(sleep)(支持spin/rdtsc高精度睡眠、支持上下文切换方式的睡眠)
同步原语
- spinlock 自旋锁
- mutex 互斥量
- atomic 原子变量
- wait_queue 等待队列
- semaphore 信号量
调度相关
- CFS调度器
- 单核调度(暂时不支持多核负载均衡)
- completion “完成”机制,让一个进程能等待某个任务的完成。
IPC进程间通信
- 匿名管道
文件系统
- VFS虚拟文件系统的基本功能
- FAT32文件系统(尚不支持删除文件夹)
- devfs设备文件系统。目前只将键盘文件注册到其中。
- rootfs根文件系统,在真实的磁盘文件系统被挂载前,为其他的伪文件系统提供支持。
- 挂载点抽象。目前实现了文件系统的挂载,使用类似于栈的方式管理所有的挂载点。(将来需要优化这部分)
异常及中断处理
- 处理器异常的捕获
- 对APIC的支持
- softirq软中断机制
- 能够对内核栈进行traceback
内核数据结构
- 普通的二叉树
- kfifo先进先出缓冲区
- 循环链表
- IDR 映射数据结构
- IDA ID分配数据组件
屏幕显示
- VESA VBE显示芯片驱动
- 实现了屏幕管理器,支持多个显示框架注册到屏幕管理器中。
- 实现了TextUI文本界面框架,能够渲染文本到屏幕上。并且预留了上下滚动翻页、多显示窗口的支持。
- printk
内核实用库
- 字符串操作库
- ELF可执行文件支持组件
- 基础数学库
- CRC函数库
软件移植
- 移植了LZ4压缩库(V1.9.3),为将来实现页面压缩机制打下基础。
内核测试
- ktest单元测试框架
- 支持使用串口(COM1)输出屏幕内容到文件之中。
驱动程序支持
- IDE硬盘
- AHCI硬盘(SATA Native)
- ACPI 高级电源配置模块
- PCI总线驱动
- XHCI主机控制器驱动(usb3.0)
- ps/2键盘
- ps/2鼠标
- HPET高精度定时器
- RTC时钟
- local APIC定时器
- UART串口(支持RS-232)
- VBE显示
- 虚拟tty设备
系统调用
DragonOS目前一共有22个有效的系统调用。
- SYS_PUT_STRING 往屏幕上打印字符
- SYS_OPEN 打开文件
- SYS_CLOSE 关闭文件
- SYS_READ 读取文件
- SYS_WRITE 写入文件
- SYS_LSEEK 调整文件指针
- SYS_FORK fork系统调用
- SYS_VFORK vfork系统调用
- SYS_BRK 调整堆大小为指定值
- SYS_SBRK 调整堆大小为相对值
- SYS_REBOOT 重启 (将来sysfs完善后,将删除这个系统调用,请勿过度依赖这个系统调用)
- SYS_CHDIR 切换进程的工作目录
- SYS_GET_DENTS 获取目录中的目录项的元数据
- SYS_EXECVE 让当前进程执行新的程序文件
- SYS_WAIT4 等待进程退出
- SYS_EXIT 退出当前进程
- SYS_MKDIR 创建文件夹
- SYS_NANOSLEEP 纳秒级睡眠(最长1秒)在小于500ns时,能够进行高精度睡眠
- SYS_CLOCK 获取当前cpu时间
- SYS_PIPE 创建管道
- SYS_MSTAT 获取系统当前的内存状态信息
- SYS_UNLINK_AT 删除文件夹或删除文件链接
用户环境
LibC
LibC是应用程序与操作系统交互的纽带。DragonOS的LibC实现了一些简单的功能。
- malloc堆内存分配器
- 基础数学库
- 简单的几个与文件相关的函数
- pipe
- fork/vfork
- clock
- sleep
- printf
Shell命令行程序
- 基于简单的字符串匹配的解析(不是通过编译课程学的的那一套东西做的,因此比较简单,粗暴)
- 支持的命令:ls,cd,mkdir,exec,about,rmdir,rm,cat,touch,reboot
用户态驱动程序
- 用户态键盘驱动程序
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过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