V0.1.3
本文作者:龙进 longjin@RinGoTek.cn
2023年1月8日
贡献者名单
DragonOS V0.1.3版本由以下小伙伴贡献代码:
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
更新内容-内核
- 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)
更新内容-软件移植
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
开放源代码声明
为促进DragonOS项目的健康发展,DragonOS以GPLv2开源协议进行发布。所有能获得到DragonOS源代码以及相应的软件制品(包括但不限于二进制副本、文档)的人,都能享有我们通过GPLv2协议授予您的权利,同时您也需要遵守协议中规定的义务。
这是一个相当严格的,保护开源软件健康发展,不被侵占的协议。
对于大部分的善意的人们而言,您不会违反我们的开源协议。
我们鼓励DragonOS的自由传播、推广,但是请确保所有行为没有侵犯他人的合法权益,也没有违反GPLv2协议。
请特别注意,对于违反开源协议的,尤其是商业闭源使用以及任何剽窃、学术不端行为将会受到严肃的追责。(这是最容易违反我们的开源协议的场景)。
并且,请注意,按照GPLv2协议的要求,基于DragonOS修改或二次开发的软件,必须同样采用GPLv2协议开源,并标明其基于DragonOS进行了修改。亦需保证这些修改版本的用户能方便的获取到DragonOS的原始版本。
您必须使得DragonOS的开发者们,能够以同样的方式,从公开渠道获取到您二次开发的版本的源代码,否则您将违反GPLv2协议。
关于协议详细内容,还敬请您请阅读项目根目录下的LICENSE文件。请注意,按照GPLv2协议的要求,只有英文原版才具有法律效力。任何翻译版本都仅供参考。
开源软件使用情况
DragonOS在开发的过程中,参考了一些开源项目的设计,或者引入了他们的部分代码,亦或是受到了他们的启发。现将他们列在下面。我们对这些开源项目的贡献者们致以最衷心的感谢!
格式:<项目名> - <链接> - <开源协议>
当前版本的所有提交记录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357
| 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
新增signal文档 (#126) * 新增signal文档
commit a7f5ca7b67160557abf84a1169dd60093220aeb0 Author: YJwu2023 <119829947+YJwu2023@users.noreply.github.com> Date: Sat Dec 24 23:29:36 2022 +0800
修复下载grub2.06时的提示错误 (#125) * 修复grub下载显示提示显示错误
commit 82762007da41148e1ed1df465211eb5c8ba2c15e Author: login <longjin@ringotek.cn> Date: Fri Dec 23 18:11:47 2022 +0800
Update makefile.yml
commit b975025ec8854ca232152f4ee44cc2226891a34c Author: login <longjin@ringotek.cn> Date: Fri Dec 23 11:45:19 2022 +0800
Update makefile.yml
commit ad2bb74d949bfcb2935e43ac7b261d7ecce23389 Author: login <longjin@ringotek.cn> Date: Fri Dec 23 11:21:22 2022 +0800
Update makefile.yml
commit 6b7776d189ab5f19fbab20d6c5c9ed3ab20c7ab6 Author: login <longjin@ringotek.cn> Date: Fri Dec 23 10:59:15 2022 +0800
修正smp的makefile中没有替换AS的问题
commit beb12a188b6c6bc4196796ac2ae1ecd7d8ed8223 Author: login <longjin@ringotek.cn> Date: Fri Dec 23 10:57:39 2022 +0800
Update makefile.yml
commit d65c527730e5c8a75f6dad0f996c093040699ee3 Author: login <longjin@ringotek.cn> Date: Thu Dec 22 22:58:28 2022 +0800
Update makefile.yml (#121)
commit 5ed4cd460200cb19aae8c3c67dfd77e1e9f0e105 Author: guanjinquan <75822481+guanjinquan@users.noreply.github.com> 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 <longjin@RinGoTek.cn>
commit ba0d93d8b26034abc54bcaf3f0ff04863bbd076e Author: Gou Ngai <94795048+AlbertSanoe@users.noreply.github.com> 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 <longjin@ringotek.cn> 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 <119829947+YJwu2023@users.noreply.github.com> Date: Mon Dec 19 14:53:51 2022 +0800
修复docker安装时异常退出的bug (#119) * 修复docker安装时异常退出的bug * 修复grub编译脚本的小bug
commit 978043e47d1143ca2d5cf22b20793f032e8eb5a5 Author: login <longjin@ringotek.cn> Date: Sun Dec 18 15:09:15 2022 +0800
修复当系统中不存在dosfstools时,无法正确格式化磁盘镜像的问题 (#117) * 修复当系统中不存在dosfstools时,无法正确格式化磁盘镜像的问题
commit f9127772dc372a2e607388fdd6818d3f9c4c6d28 Author: YJwu2023 <119829947+YJwu2023@users.noreply.github.com> Date: Sat Dec 17 23:43:23 2022 +0800
修复docker安装时异常退出的bug (#116)
|