Releases: DragonOS-Community/DragonOS
v0.4.0
V0.4.0
前言:本次版本聚焦“Linux 语义对齐 + 工程可用性”。I/O 多路复用、POSIX 定时器/CPU 时间、文件系统与 procfs 获得大幅补强;tmpfs、mount 传播、等待队列重构等为容器/云原生场景铺路;CI/夜构与 Playground 让体验和回归更顺畅。
发布日期: 2025-12-22
核心亮点
I/O 多路复用与时间语义:向 Linux 6.6 对齐
- poll/pselect6 系统调用完善:修复信号掩码恢复逻辑,优化
pselect6实现,正确处理 sigmask 参数和 timeout 验证,移除零超时提前返回的逻辑,确保在等待 I/O 时正确保存和恢复信号掩码 (#1531) - epoll 事件处理增强:正确处理普通文件的 epoll 事件,避免添加不必要的 epitem;修复 epoll 超时唤醒机制,确保定时器通过 Waker 唤醒等待队列;改进 poll_select_finish 函数以支持更多时间类型 (#1528, #1492)
- POSIX interval timer 完整实现:实现 timer_create、timer_settime、timer_gettime、timer_getoverrun、timer_delete 系统调用,支持 SIGEV_NONE/SIGEV_SIGNAL/SIGEV_THREAD_ID 信号投递模式,修复 gVisor timers_test (#1501, #1521)
- 进程与线程 CPU 时间统计:实现 ProcessCpuTime 结构体,支持用户态、内核态及总执行时间统计;为 PCB 添加 cputime_wait_queue,支持 CLOCK_PROCESS/THREAD_CPUTIME_ID 的 clock_nanosleep;扩展 clock_gettime 和 clock_nanosleep 系统调用支持进程和线程 CPU 时间时钟 (#1517)
- POSIX 调度系统调用:实现 sched_getparam、sched_getscheduler 系统调用,重构 sched_yield 到独立模块 (#1416)
文件系统与 VFS:功能扩展与稳定性提升
- tmpfs 文件系统支持:新增 tmpfs 支持并与 devfs 集成,提供内存文件系统能力;实现原子大小管理、零页创建、页缓存管理等功能;支持 /dev/shm 挂载,完善 chroot 和挂载传播机制 (#1459, #1480, #1410)
- 新系统调用实现:
- 文件操作改进:
- append 锁机制:实现文件追加操作的锁管理器,使用 jhash 算法保障并发写入的正确性,支持强制追加语义 (#1483)
- EventFd 文件系统:实现 EventFd 文件系统并增强 VFS inode 能力,支持事件通知机制;为 IndexNode trait 添加 is_stream、supports_seek、supports_pread、supports_pwrite 方法 (#1486)
- 文件系统标志重构:重构文件系统标志体系,区分打开标志与访问模式,提升代码清晰度 (#1414)
- 路径检查统一:统一使用 vfs_check_and_clone_cstr 函数进行路径检查,减少代码重复 (#1481)
- 文件预读功能:添加文件预读功能支持,新增 readahead 模块实现文件预读算法,提升顺序读取性能 (#1391)
- 挂载传播机制:实现挂载传播机制,支持 Shared、Private、Slave、Unbindable 传播类型,实现递归绑定挂载支持 (#1410)
procfs 与系统信息:可观测性大幅提升
- 进程信息文件完善:
- 命名空间支持:
- 内核日志管理:实现内核日志级别管理和 procfs 接口(/proc/sys/kernel/printk),支持动态调整日志级别 (#1415)
- 文件描述符信息:在 procfs 中新增文件描述符相关支持,支持 /proc/self/fd/N 魔法链接,实现管道 FIONREAD ioctl 命令,添加 /proc//fdinfo 目录支持 (#1426)
进程管理与执行:更接近 Linux 行为
- shebang 脚本支持:添加 shebang 脚本执行支持,实现脚本解析和递归执行,可直接运行脚本文件,支持多种解释器 (#1511)
- 进程等待语义修复:
- 进程执行改进:
- 修复 sys_exec 相关测试,修复 execve 系统调用中空路径和空参数处理问题 (#1518)
- 改进 execve 和 execveat 系统调用的实现,增强执行文件权限检查与信号处理
- 实现 fd_table 在 execve 进程中的 unsharing,确保隔离性
- 改进路径解析逻辑,修复 shebang 解释器未找到时的错误日志
- 信号处理增强:
内存管理与 I/O:性能与稳定性优化
- 用户空间内存访问修复:
- 修复 IoVecs 构造时对零长度缓冲区的验证,确保符合 Linux 语义
- 修复 scatter 方法在遇到不可访问内存时的错误处理,避免部分写入后返回错误
- 修复 readv/preadv 等系统调用,使其支持分块读取和部分成功写入
- 修复页面回收逻辑,避免回收仍被映射的文件页
- 修复 UserBufferReader/Writer 对空指针的检查,防止未定义行为
- 优化 IoVecs 的用户空间内存访问检查与拷贝逻辑,统一使用 user_accessible_len 进行访问性验证 (#1522)
- 块缓存增强:增强 CacheBlock 和 BlockCache 功能,添加 from_slice 和 write_data 方法,改进 insert_one_block 和 immediate_write 方法接受切片而非向量,修复 FileMapInfo::page_cache 的内存泄漏问题(改为 Weak)(#1465)
- 页面缓存改进:
- 内存管理优化:
- mmap 支持增强:为多个文件系统节点实现 mmap 方法,改进 mmap 错误处理和验证,增强内存保护处理和验证 (#1455)
IPC 与管道:阻塞语义与竞态修复
- FIFO 阻塞打开语义:实现 FIFO 的阻塞打开语义,为 LockedPipeInode 添加 open_wait_queue 用于 FIFO 打开时的阻塞等待,实现 Linux FIFO 的阻塞/非阻塞打开语义(O_RDONLY/O_WRONLY/O_RDWR)(#1429)
- 管道行为完善:
网络与设备:稳定性提升
- 网络栈优化:
- TTY 驱动增强:
- 异步 I/O 通知:实现异步 I/O 通知机制和 ioctl 系统调用增强 (#1425)
文件系统实现:ext4 与 FAT 改进
- ext4 文件系统:
- 修复 ext4 inode 读写操作中的自旋锁死锁问题
- 添加父目录指针支持,实现 parent() 方法
- 改进块设备寻址逻辑,统一使用 512 字节 LBA
- 增强根文件系统探测机制,支持 ext4 和 FAT 自动识别
- 修复 ELF 加载器中解释器路径查找问题
- 为 ext4 和 fat 文件系统添加探测方法并优化代码 (#1509)
- FAT 文件系统:
- 文件系统统计:完善 FAT 和 tmpfs 的文件系统统计信息支持,为 tmpfs 添加默认容量策略(物理内存一半)(#1491)
等待队列重构:引入 Waiter/Waker 模式
- 等待队列机制重构:重构等待队列机制,引入 Waiter/Waker 模式避免唤醒丢失,统一等待接口,提供 wait_event_interruptible/uninterruptible 方法,重构 futex、epoll、eventfd、semaphore、completion 等模块使用新等待队列,优化进程等待子进程退出逻辑 (#1452)
- 信号处理修复:在 sys_rt_sigtimedwait 中消费信号后及时刷新 HAS_PENDING_SIGNAL 状态,将 futex 可中断唤醒的错误码从 ERESTARTSYS 改为 EINTR,以符合 Linux 语义 (#1452)
工程效率与 CI:自动化与工具链改进
- 夜间构建工作流:新增夜间构建与发布工作流,支持自动化构建和发布,分离构建和发布步骤,压缩构建产物为 tarball (#1469, #1471, #1472, #1473, #1474, #1475, #1476, #1477)
- 构建容器升级:构建容器版本升级至 v1.19,修复 CI 相关问题,添加 riscv64 libc 支持,更新 CI 工作流中的 Docker 镜像仓库地址 (#1442)
- CI 流程修复:
- 代码审查自动化:添加 Claude 代码审查工作流,优化代码审查流程和配置,启用进度跟踪功能 (#1435, #1436, #1437, #1438, #1440, #1445, #1446, #1447)
- 开发容器支持:添加基于 CNB 镜像的 devcontainer 支持,设置非 root 用户为默认 devcontainer 用户 (#1449, #1457)
文档与社区:体验与可访问性提升
- DragonOS Playground:更新 README 和构建文档,添加 DragonOS Playground 体验方式,在 README 中新增云原生开发体验方式,提供 CNB 平台一键启动链接,更新社区新闻添加 Playground 上线信息 (#1484)
- 文档翻译更新:多轮文档翻译更新,提升国际化支持 (#1485, #1453, #1411, #1408, #1402, #1396)
- 用户环境改进:
gVisor 测试:兼容性持续提升
- 测试用例扩展:删除 gVisor 测试中的 fifo_test blocklist 文件,扩展测试覆盖范围 (#1524)
- 系统调用修复:
- 修复 open 系统调用在 gVisor 下的异常表现,修复多个 open 相关测试 (#1417)
- 修复 utimensat/futimesat 系统调用边界情况以兼容 gVisor 测试 (#1431)
- 修复 pread64 系统调用的兼容性和错误处理 (#1398)
- 修复 sys_rename 逻辑并支持 RENAME_NOREPLACE (#1393)
- 修复 getdents 系统调用实现 (#1397)
- 修复 syscall/vfs 中写入部分可读缓冲区时的 SIG 衍生问题 (#1375)
- 修复 cputime、sys_rt_sigtimedwait 和 sys_rt_sigreturn 相关问题 (#1406, #1394, #1400)
其他改进
- 符号表查询修复:修复符号表查询问题,使用二分查找符号替代原有逻辑 (#1443)
- 设备驱动改进:添加随机设备支持(/dev/random),提供随机字节生成能力 (#1455)
- 文件系统改进:改进目录链接计数管理,更新 FAT 和 RAM 文件系统中的目录链接计数管理 (#1454)
版本概览
- I/O 多路复用:poll/pselect6 信号掩码恢复逻辑修复,epoll 事件处理增强,超时唤醒机制完善
- 时间与定时器:POSIX interval timer 完整实现,CPU 时间统计,clock_nanosleep 完善,POSIX 调度系统调用
- 文件系统:tmpfs 支持,copy_file_range、creat、preadv2、pwritev2、fadvise64、umask 等新系统调用,append 锁机制,EventFd 文件系统,挂载传播机制
- procfs 增强:/proc//stat、/proc//task、/proc//cmdline、/proc//maps、/proc//ns/、/proc/thread-self/ns 等文件支持,内核日志管理
- 进程管理:shebang 脚本支持,进程等待语义修复,信号处理增强,进程执行改进
- 内存与 I/O:用户空间内存访问修复,块缓存增强,页面缓存改进,slab 分配器并发安全修复,mmap 支持增强
- IPC 与管道:FIFO 阻塞打开语义,管道竞态条件修复,管道缓冲区动态调整
- 网络与设备:网络栈锁机制优化,UDP 套接字修复,TTY 驱动增强,随机设备支持
- 文件系统实现:ext4 死锁修复,FAT 文件系统改进,文件系统统计信息完善
- 等待队列重构:Waiter/Waker 模式,统一等待接口
- 工程效率:夜间构建工作流,构建容器升级至 v1.19,CI 流程修复,代码审查自动化,开发容器支持
- 文档与社区:DragonOS Playground 推广,文档翻译更新,用户环境改进
- gVisor 测试:测试用例扩展,多个系统调用修复以通过 gVisor 测试
详细变更
1. I/O 多路复用与时间语义:对齐 Linux 6.6
poll/pselect6 优化 (#1531)
- 修复 poll_select_finish 中信号掩码恢复逻辑,避免在 ERESTARTSYS 时错误恢复
- 重构 pselect6 系统调用,正确处理 sigmask 参数和 timeout 验证
- 移除 poll_select_finish 中零超时提前返回的逻辑
- 为 PosixTimeSpec 添加 as_millis 方法
- 将 select 相关测试加入白名单
epoll 事件处理 (#1528, #1492)
- 修复普通文件在 epoll 中总是就绪的逻辑,避免添加不必要的 epitem
- 改进 poll_select_finish 函数以支持更多时间类型
- 修复 select 系统调用中 timeout 负值检查
- 重构定时器创建逻辑,使用 EpollTimeoutWaker 结构体实现 TimerFunction
- 将超时唤醒方式从直接唤醒 PCB 改为通过 Waker::wake() 触发
POSIX interval timer (#1501, #1521)
- 新增 timer_create/timer_settime/timer_gettime/timer_getoverrun/timer_delete 系统调用处理,并接入 syscall table
- 实现进程级 POSIX interval timer:基于 CLOCK_MONOTONIC 的创建/删除/设置/查询、周期性重装与到期调度
- 完整实现 SIGEV_NONE/SIGEV_SIGNAL/SIGEV_THREAD_ID(放宽 SIGEV_THREAD_ID 限制,允许向同线程组的任意线程投递信号)与 SI_TIMER siginfo(含 si_timerid/si_overrun/si_value)
- 修复 overrun 语义与信号合并:按线程 pending 队列合并并累积 overrun,避免重复入队导致进程被信号杀死
- 修复周期性 timer 的 gettime 剩余时间计算与回调窗口返回 0 的问题
- 修复定时器回调中信号锁/队列访问导致的自锁死
- 修复 ProcessControlBlock::raw_tgid() 返回错误字段的问题
CPU 时间统计 (#1517)
- 新增 ProcessCpuTime 结构体,用于统计用户态、内核态及总执行时间
- 为 PCB 添加 cputime_wait_queue,支持 CLOCK_PROCESS/THREAD_CPUTIME_ID 的 clock_nanosleep
- 在调度器 CPU 时间统计中增加 CPU-time 等待队列唤醒逻辑
- 扩展 clock_gettime 和 clock_nanosleep 系统调用,支持进程和线程...
v0.3.0
V0.3.0
发布日期: 2025-11-20
核心亮点
Linux 兼容性突破
- 已通过 275 个 Linux 兼容性测试用例,可在 ci-dashboard.dragonos.org 持续跟踪测试结果
- 引入 gVisor Linux 系统调用自动化测试套件,每次提交/合并都能实时追踪内核行为与 Linux 的兼容性
- 通过多项 gVisor 系统调用测试,内核行为与 Linux 更接近
容器原生能力显著增强
- 命名空间支持:UTS、IPC、mnt 命名空间完善,支持
unshare操作,容器隔离边界与权限模型向 Linux 主线看齐 - 权限与能力:
capset/capget系统调用、sethostname/domainname修复,完善容器身份管理 - 文件系统增强:xattr 六个系统调用、
SYS_PWRITEV、truncate、路径遍历/目录切换权限检查,保障容器镜像构建和文件挂载的可控性 - 网络子系统重构:全新的网络子系统实现,提供更好的 Linux 兼容性和可扩展性;桥接网络支持,应对多租户与边缘节点场景
- 运维工具:Dropbear SSH 服务器支持,使轻量云原生场景可以即装即用
多线程稳定性提升
- 线程组退出机制、PI futex、
prctl(PR_SET_PDEATHSIG/PR_SET_NAME)等一系列改动,让复杂进程的生命周期控制更接近 Linux 主线 - Go 语言示例程序展示 DragonOS 在多线程场景下的最佳实践
- vfork、CLONE_PARENT_SETTID、signal frame、FP 状态等历史遗留问题彻底修复
系统调用全面扩容
新增 10+ 个系统调用接口支持,包括:
waitid、rt_sigtimedwait、setitimer/getitimer、clock_nanosleep、tgkill/tkillSYS_GETCPU、SYS_PWRITEV、truncate- xattr 相关六个系统调用、
capset/capget clone3、get_mempolicy、mincore
版本概览
- 内核特性:线程组退出、PI futex、PR_SET_PDEATHSIG/PR_SET_NAME、SYS_GETCPU、waitid、rt_sigtimedwait、setitimer/getitimer、clock_nanosleep 等调度/信号链路全面增强
- 内存与同步:VM_DONTCOPY、mincore、RLIMIT_FSIZE、资源限制框架、异常表用户态访问保护,futex 子系统修复/重构 10+ 项
- 文件系统与命名空间:引入
pwritev、truncate、xattr 六个系统调用、路径权限检查、UTS/mnt/IPC namespace、capset/capget、/proc 改进 - 平台与网络:x86 kexec+initram、VF2 RISC-V 适配、桥接网络、大规模网络栈重构、Dropbear SSH 服务器、Go 用户态演示与工具链完善
- 工程效率:CI 容器升级、测试上传与监控、gVisor/FreeBSD bootstrap 支持、Nix-shell 工具链版本锁定
详细变更
1. 线程与信号:向 Linux 行为对齐
- PRCTL 新选项、备用信号栈拷贝、克隆/等待语义补完,
waitid/job control、资源限制(rlimit)框架与 RLIMIT_FSIZE 检查 (#1386, #1363, #1362, #1333, #1300, #1312)。 setitimer/getitimer、clock_nanosleep、tgkill/tkill等定时器/信号路由补齐;fs/gs 用户空间验证、clone3+/proc/cpuinfo、PR_SET_PDEATHSIG支持,提升 ABI 兼容性 (#1377, #1307, #1336, #1299).- 大量信号/线程相关修复:vfork、CLONE_PARENT_SETTID、signal frame、FP 状态、sys_sigaction/sigprocmask、/proc/self/exe 链接等,解决兼容性和稳定性问题 (#1358, #1342, #1357, #1356, #1347, #1359)。
2. Futex & 内存:同步栈焕然一新
-
PI futex、共享键生成重构、robust futex 竞态修复、wake op 兼容性、参数校验、futex test 启用,形成更完整的 futex 行为矩阵 (#1373, #1376, #1374, #1372, #1371, #1326, #1321, #1320, #1311, #1276, #d5158a0, #e85d1cd).
-
内存管理改进:VM_DONTCOPY 标志、异常表驱动的安全用户态访问、mincore、madvise/msync 边界修复、匿名共享页同步、伙伴分配器死锁 & 边界检查等内核内存改进 (#1383, #1349, #1334, #1301, #1258, #1345, #1334, #1361, #1280)
-
资源限制:Rlimit 框架与 RLIMIT_FSIZE、
get_mempolicy、clone3集成的/proc/cpuinfo,增强资源观测与限制能力 (#1300, #1312, #1299)
3. 容器与命名空间:为云原生而生
- 网络子系统重构:实现了全新的网络子系统,提供了更好的 Linux 兼容性,以及更好的可扩展性 (#977)
- 文件系统增强:
SYS_PWRITEV、truncate、路径遍历/目录切换权限检查、mknodat/fatfs 死锁修复、syncfs/openat/unlinkat/lseek行为校正,保障文件系统语义一致性 (#1322, #1308, #1348, #1346, #1369, #1355, #1344) - 命名空间支持:扩展属性 xattr 六大系统调用、
capset/capget、UTS namespace、setdomainname/sethostname修复、IPC namespace 首版、mntnsunshare,完善命名空间与安全隔离 (#1248, #1293, #1268, #1298, #1288, #1262) - 容器网络与运维:桥接网络、网络栈重构、Dropbear SSH 服务器支持,使得 DragonOS 离真正运行容器更近一步 (#1287, #1295, #1304)
4. 平台与设备:可部署性跃迁
- x86
kexec+ initram 完成闭环,配合 reboot syscall 完善,为快速切换和自举铺平道路 (#1303, #1157) - VF2 RISC-V 平台适配,DragonOS 成为国产 RISC-V 场景的可选方案 (#1285)
- SYS_GETCPU 与 SMP syscall table 对齐,让多核调度与性能分析更精准 (#1368, #1367)
- Go 语言示例程序,展示多线程场景下的最佳实践 (#1387)
5. 工程效率与社区:省时、省心、可复用
- CI 与测试:CI 容器升级至 v1.16,加入测试结果上传、syscall 测试监控、实时 stdout 输出,问题定位速度倍增 (#1380, #1364, #1341, #15964250)
- 自动化测试:引入 gVisor Linux 系统调用自动化测试套件,每次提交/合并,都能实时追踪内核行为与 Linux 的兼容性 (#1306, #1271, #1371, #1296)
- 开发工具链:Nix-shell Rust 固定版本、FreeBSD bootstrap 支持,让外部贡献者也能快速复现同一环境 (#40603716, #093388bd)
- 社区与文档:多轮文档翻译更新、EdgeOne CDN 赞助商信息、README/支持者列表刷新 (#1385, #1317, #1315, #1294, #1292, #1290, #1289, #1281)
已知关注点
- futex 子系统近期大量变更,建议重点执行多线程压力与robust list 回归测试。
- 新增 kexec/initram & 网络重构涉及启动链路,若自定义硬件需重新验证启动脚本。
- Namespace/rlimit 相关 syscalls 需更新用户态工具链与测试以覆盖更多边界。
贡献者鸣谢
LoGin、kaleidoscope416、linfeng、Shenjie Yang、JingXuan_Wei、aLinChe、黄铭涛、Bruce.carrot93、Samuel Dai、Vitus、Yuming Jiang、火花等 15 位伙伴共同完成了 0.3.0。
参考资料
- Linux 兼容性测试看板:ci-dashboard.dragonos.org
- 社区仓库:github.com/DragonOS-Community/DragonOS
v0.2.0
DragonOS 0.2.0 发布说明 (Release Notes)
发布日期: 2025-08-22
版本定位: 0.2.0 是 DragonOS 在「可用性、可观测性、可扩展性」三个维度的里程碑版本——引入 ext4、动态链接、eBPF、虚拟化、命名空间 (PID/Mount/User 初步)、多体系结构 (x86_64 / RISC-V64 / LoongArch64) 支持,以及系统调用子系统、内存/文件缓存子系统的大幅重构,为后续 0.3.x 的容器化、网络与调度增强打下基础。
📌 概览摘要 (Executive Summary)
核心亮点:
- 文件系统与存储: 新增 ext4;完成 mount/umount2;实现 gendisk/分区扫描;
/proc/mounts;页面缓存与文件映射体系化;支持实验性 overlayfs;改进 FAT & VFS 元数据 (statx / newfstatat)。 - 进程与命名空间: 引入 PID Namespace、Mount Namespace、Namespace Proxy;实现
unshare();改进进程组 / Session / TTY 作业控制;增强/proc进程信息。 - 内存与虚拟内存: mmap 延迟分配、
msync、私有/共享文件映射;PageCache 脏页同步/回收;多处栈使用优化与爆栈修复;SLAB 与 buddy 回收改进。 - 可观测性与可扩展: 初步 eBPF 支持(rbpf → 主线 / kprobe / tracepoint / Aya 生态);tracepoint 框架化;静态键 (static-keys)。
- 虚拟化: 引入 KVM/VMX 基础框架与 EPT;清理旧 KVM 代码;改进启动稳定性。
- 体系结构: 新增 LoongArch64 引导 & 异常处理早期实现;RISC-V64 改进;多引导协议抽象 (Multiboot2 / HVM / Serial Console / Framebuffer)。
- 系统调用与内核结构: 统一 syscall table;大量子系统模块化迁移;
ERESTARTSYS机制;补齐/新增大批系统调用(poll/epoll/select、eventfd、execveat、unshare、msync 等)。 - 安全与权限: Cred 框架 (UID/GID/FSUID/权限判定);
set*id / setres*;chown/chmod迁移与修复。 - 设备与 I/O: virtio console、virtio blk 分区识别、loopback 网卡、TTY + epoll、HVC、PCI 配置空间访问、网络设备 sysfs 注册。
- 工具链与生态: 动态链接 (ELF 解释器);Dadk 0.2.0 加速构建;统一用户态程序构建;实验接入 Tokio 单线程运行时;文档自动翻译与版本化。
- 稳定性与质量: 大量栈帧/死锁/内存越界/竞态/信号/等待语义/PageCache 修复;改进 backtrace/unwind;日志系统统一化。
⚠️ 重大变化与潜在不兼容 (Breaking / Important Changes)
- Dadk 升级到 0.2.0:旧版配置不兼容,需按新文档迁移。
- Syscall 结构重排:各子系统迁移到表驱动架构;自定义补丁需适配。
- 内核栈默认 16K → 32K,并引入 Guard Pages / 写保护 (x86_64)。
- PageCache 语义升级:
mmap+ 直接读写需结合msync;旧行为假设需调整。 - Namespace 架构初步:接口未来可能调整(仍属实验状态)。
- eBPF 接口为早期形态:Map / Helper / 类型限制后续可能变化。
✨ 新增 / 增强特性 (Features & Enhancements)
1. 文件系统 & VFS
- ext4:基于 another_ext4 集成,可从块设备挂载。
- mount/umount2:真实块设备挂载链路 + 分区扫描 (MBR);支持 MountFlags;
/proc/mounts。 - overlayfs (实验):多层只读 + 顶层写 copy-up + whiteout。
- gendisk 抽象;virtio 磁盘作为根文件系统;块设备自动注册 devfs。
- FAT/vfat:
rename/move重构;statx创建时间 (btime);文件映射;page cache 同步修复。 - VFS:
statx/newfstatat、faccessat2、linkat/renameat2、readlinkat等;open/close/stat/ioctl 拆分;LookUpFlags;/proc扩展(kthread 标记 / FD 占用 / exe 链接 / 运行/启动时间 / tty 信息)。
2. 进程 / 命名空间 / 会话
- PID Namespace:ID 映射与隔离;nsproxy 统一挂载。
- Mount Namespace:根挂载树隔离。
unshare():新建 namespace(现覆盖 PID/Mount 基础)。- Session / Process Group:完整作业控制;TTY 前台进程组信号 (SIGINT 等);
wait4修复。 - reboot 流程增强(magic 校验 / 多 cmd 预留)。
3. 内存管理 (MM)
mmap延迟分配 /msync/mprotect修复 /madvise/msync表接入。- PageCache:ID 管理、页面回写、脏页清理、回收线程、多次映射一致性修复。
- SLAB → buddy 释放路径补全;爆栈检测 (clippy);拆分大函数降低栈占用。
mincore()占位返回ENOSYS;truncate_inode_pages框架。
4. 可观测 & eBPF
bpf():初始 Map / kprobe / 统计样例;rbpf 升级 → 主线;Aya 兼容模板。- tracepoint 框架化;静态键支持热点条件启用。
5. 虚拟化 & 平台
- 初步 KVM/VMX + EPT;旧 KVM 清理。
- HVM / Multiboot2 / 启动命令行解析 (Arg/KV/EarlyKV)。
- LoongArch64:引导进入
kernel_main+ 异常处理;RISC-V64 运行 Rust HelloWorld;多平台串口/控制台抽象;Serial Console + nographic。
6. 设备与 I/O
- virtio console (HVC);virtio blk/网/控制台中断命名改进;PCI 配置空间访问 (portio)。
- Loopback 网卡;网络设备 sysfs 节点与属性;DHCP 稳定性。
eventfd/epoll/poll/ppoll/select/pselect6:等待/超时/信号一致性。- TTY:适配 epoll;控制字符解析;波特率/termios;tab/erase 修复;SIGINT 广播。
7. 安全 & 账户
- Cred 框架:UID/EUID/FSUID/GID/组列表;
seteuid/setegid/setres*;chown/chmod/fchownat/lchown。 get/setgroups;umask类型改造;/procstatus 名称精确化。
8. 系统调用子系统
- 统一 syscall table;
ERESTARTSYS;批量迁移(process/mm/vfs/ipc)。 - 新增/补齐:
mount,umount2,eventfd,poll/ppoll/select/pselect6,epoll重构,fchdir,mkdirat/mkdirat2,utimensat/utimes,newfstatat/statx,execveat,unshare,set|getgroups,msync,madvise,mremap,mprotect,brk/sbrk,reboot增强,rt_sigpending,mincore(ENOSYS)等。
9. 工具链 / 构建 / 文档
- Dadk 0.2.0:镜像生命周期管理 / 构建加速 / profiling。
- 统一用户程序构建:Rust + C;示例 Rust 应用。
- 动态链接 ELF 解释器;busybox 引导模式 & NovaShell/DragonReach 演进。
- 自动文档翻译,多语言,多版本 Sphinx;页脚显示 commit;README / Q&A / namespace 文档更新。
- CI:Docker 构建缓存、按分支触发、镜像自动推送、MinIO/S3 分发、loongarch64 QEMU 构建、工具链 nightly 锁定、backtrace/unwind 升级、栈溢出测试。
🚀 性能与资源占用 (Performance & Footprint)
- 减少多处大栈帧:IRQ 初始化拆分、ACPI 表读取宏化、process create/内存池结构重写 (Vec 替换大数组)。
- PageCache 二次映射写入 panic 修复 → 提升 mmap IO 连贯性;减少 copy。
- SLAB 空闲页回收 → buddy,降低驻留内存。
- 通过写保护 + Guard Pages 早期发现非法写入。
🛠 稳定性 & 关键修复 (Stability & Fixes)
代表性修复:
- 等待/进程:
wait/wait4语义、do_wait锁释放、Blocked 子进程处理。 - I/O 多路复用:epoll inode 引用释放、epoll 超时/唤醒广播、poll 边界/RestartBlock。
- 管道/信号:pipe/FIFO 非阻塞 + 信号/kill 语义;阻塞 pipe 可被 kill;命名管道 POSIX 行为。
- PageCache:mmap 多实例一致性;回写已 drop address space panic;
unlink后脏页处理。 - futex:用户态地址安全
safe_read/safe_write;robust list。 - 信号:默认 handler 恢复;SIGINT 分发;KILL pid=1 反馈;pending not masked 检查;
execve错误传播。 - TTY:前台进程组置空错误;init 早期字符输入崩溃;tab 展开越界。
- Timer:插入边界;
sleep被信号打断ERESTARTSYS。 - 竞争/内存:slab UAF/越界;nttyData 栈溢出;buddy 构造大栈帧;内核地址错误 RIP 输出。
- 文件系统:
getcwd语义;read O_PATH校验;unlink后 dirty 清理;remount 错误;mprotect vm_flags。 - ELF:解释器路径读取越界;
execve失败错误码。 - 多路复用:
select/pselect6初期编译问题。 - virtio/PCI:多设备中断冲突;PCI 初始化顺序;virtio net 中断处理。
- 网络:DHCP 网卡顺序;loopback / poll listen 状态。
🧾 新系统调用清单 (部分)
mount, umount2, fchdir, mkdirat/mkdirat2, linkat/renameat/renameat2, newfstatat, statx, readlinkat, faccessat/faccessat2, eventfd, poll, ppoll, select, pselect6, epoll (重构), utimensat, utimes, msync, madvise, mremap, mprotect, brk/sbrk (表化), execveat, unshare, setgroups/getgroups, rt_sigpending, reboot (增强), mincore(ENOSYS) ...
🧪 开发与构建体验 (Dev Experience)
- Dadk 0.2.0:镜像创建 / 挂载 / 卸载统一;构建加速;profiling。
- 用户程序:Rust + C 统一构建流水线;Rust 示例。
- 工具链:固定 nightly 版本 & 升级脚本;多架构交叉工具链脚本。
- 文档:自动翻译 & 失效清理;中英双语;FAQ / 构建问题指引。
🙌 贡献者 (部分, 按提交活跃度 / 首字母)
感谢所有贡献者在内核子系统、文件系统、虚拟化、文档与工具链方面的持续投入。
特别感谢以下核心贡献者:
- longjin - 项目负责人,大量核心功能实现与重构
- chenlinfeng (Godones) - eBPF、网络、文件系统等
- sparkzky - TTY、进程管理、系统调用重构
- MemoryShore - 文件系统、内存管理、VFS
- Samuel Dai - KVM、网络、驱动
- 黄铭涛 - PCI、驱动、内核优化
- 以及所有其他贡献者!
本版本贡献者清单
LoGin [email protected], [email protected]
linfeng: [email protected], [email protected]
火花 [email protected], [email protected]
MemoryShore: [email protected], [email protected]
黄铭涛: [email protected], [email protected]
Jomo [email protected]
Samuel Dai: [email protected], [email protected]
曾俊 [email protected]
kaleidoscope416 [email protected]
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
DoL [email protected]
donjuanplatinum [email protected]
chiichen [email protected]
BrahmaMantra [email protected]
Vitus: [email protected], [email protected]
YJwu2023 [email protected]
GnoCiYeH [email protected]
LIU Yuwei [email protected]
yuyi2439 [email protected]
codeironman [email protected]
EMasi [email protected]
SMALLC [email protected]
laokengwt [email protected]
Godones [email protected]
oeasy1412 [email protected]
dragonosbot [email protected]
xiaolin2004 [email protected], [email protected]
🙏 致谢 (Acknowledgements)
感谢所有开发者、测试者、文档贡献者及社区用户的反馈。DragonOS 0.2.0 站在前序版本的实验与积累之上,也为后续容器化、资源隔离与性能优化奠定结构基础。欢迎通过 Issue / PR / 讨论区持续参与。
🔎 附录: 关键词索引 (便于检索)
ext4 overlayfs PageCache mmap PID namespace mount namespace unshare syscall table eBPF kprobe tracepoint Aya KVM VMX EPT LoongArch64 RISC-V virtio console loopback eventfd poll epoll select pselect6 ppoll statx newfstatat execveat dynamic linking Dadk 0.2.0 Cred chown msync mprotect utimensat reboot slab buddy Guard Page WP Tokio groupprocess/session
New Contributors
- @ad56583964 made their first contribution in #928
- @Marsman1996 made their first contribution in #1076
- @Vitus213 made their first contribution in #1183
- @kaleidoscope416 made their first contribution in #1185
-- END OF DragonOS 0.2.0 Release Notes --
V0.1.10
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)
更新内容-用户环境
新特性/新应用移植
更新内容-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
- @val213 made their first contribution in #652
- @BrahmaMantra made their first contribution in #673
- @Saga1718 made their first contribution in #714
- @SMALLC04 made their first contribution in #710
- @zwb0x00 made their first contribution in #755
- @donjuanplatinum made their first contribution in #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社区的贡献者们致以最衷心的感谢!
V0.1.9
V0.1.9
:::{note}
本文作者:何懿聪 [email protected]
DragonOS官方论坛:bbs.dragonos.org.cn
2024年3月13日
:::
贡献者名单
DragonOS V0.1.9版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 何懿聪 [email protected]
- 裕依 [email protected]
- R0ronoa [email protected]
- 池克俭 [email protected]
- 吴宇健 [email protected]
- zhaoyao73 [email protected]
- 胡兆朋 [email protected]
- 周瀚杰 [email protected]
- 栗子 [email protected]
- Xshine [email protected]
- Chenzx [email protected]
- MContour [email protected]
- Donkey Kane [email protected]
- Luo Jia / Zhouqi Jiang [email protected]
- Wu Mianzhi [email protected]
- Xiaoye Zheng [email protected]
- Plucky923 [email protected]
赞助商列表
- 中国雅云 雅安大数据产业园为DragonOS提供了云服务器支持。
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen
- 万晓兰
- 龙进
- 吴宇健
两千元以下:
- Seele.Clover
- FindWangHao
- ferchiel
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
新特性
- refactor: 重构进程管理模块 (#380)
- feature: 完善设备驱动模型 (#401)
- feature: 实现e1000e网卡驱动 (#393)
- feature: DragonOS虚拟化框架(#389)
- feature: 支持syscall快速系统调用指令(#417)
- refactor: 重写apic驱动 (#425)
- feature: 线程机制与futex (#411)
- feature: DragonStub引导DragonOS内核 (#460)
- feature: 实现Epoll IO多路复用机制 (#455)
- feature: 帧缓冲抽象以及vesafb驱动 (#483)
- feature: 增加early io remap的fixmap功能 (#495)
- feature: 实现内核日志系统 (#489)
- refactor: 使用Rust重写x86_64下内核初始化代码(#507)
- feature: 新增riscv64架构的内存管理等(#506)
- refactor: 中断管理模块重构完成(#554)
- refactor: 重构tty模块,实现unix兼容tty(#577)
- featurn: 实现若干POSIX标准系统调用
bugfix
- bugfix: 修正由于init proc union导致的无法运行的问题 && 修正由于内核线程启动后默认sleep的行为导致init进程无法正常运行的bug (#381)
- bugfix: 修复了Flusher Drop的时候没有自动刷新TLB的bug(#384)
- bugfix: multiboot2启动的信息因为没及时转存导致后面无法从其中进行查询的bug (#405)
- bugfix: 修复bus/device manager对卸载逻辑的处理错误 (#385)
- bugfix: 解决waitqueue sleep的时候,由于preempt count不为0,导致sched失败,从而导致该waitqueue下一次wakeup时,会把pcb多次加入调度队列的bug (#419)
- bugfix: 修正fork的时候没有正确拷贝vm holes的bug (#433)
- bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题. (#448)
- bugfix: 修复因rsdp v1 v2版本问题,导致ACPI无法正常初始化的bug (#454)
- bugfix: 修正由于bus的driver、device强弱引用关系 不正确从而导致对象被释放的bug (#483)
- bugfix: 修复文件关闭后epoll还持有对应描述符的文件弱引用的bug (#455)
- bugfix: 修复无法sleep的问题以及进程处于block(true)状态时无法被信号唤醒&唤醒后不处理信号的问题 (#470)
更新内容-用户环境
新特性
- feature: 新增init程序dragonreach (#391)
- featurn: 新增shell程序NovaShell (#456)
- featurn: 新增文本编辑器Held (#583)
- featurn: 能够支持gcc,tar,redis等程序运行
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问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社区的贡献者们致以最衷心的感谢!
V0.1.8
V0.1.8
:::{note}
本文作者:龙进 [email protected]
2023年8月16日
:::
贡献者名单
DragonOS V0.1.8版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- 黄厅 [email protected]
- 孔维超 [email protected]
- 蔡嘉鑫 [email protected]
- 池克俭 [email protected]
- zhaoyao73 [email protected]
- 周瀚杰 [email protected]
- Bullet [email protected]
- 櫻井桃華 [email protected]
- Tptogiar [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- ferchiel
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
新特性
- refactor: 重构系统调用模块 (#267)
- feature: 添加AlignBox和int_like宏 (#272)
- refactor: 新的ipi功能&kick_cpu功能的重写 (#274)
- feature: 实现gettimeofday()系统调用和clocksource+timekeeping子模块 (#278)
- refactor: PCI设备中断重构,并删去USB相关代码 (#285)
- feature: 注册串口设备,创建字符设备框架(#290)
- refactor: 新的内存管理模块 (#303)
- feature: 新的二进制加载器、elf解析器 (#303)
- feature: 增加 ListenTable 来检测端口占用 (#291)
- feature: 替换 local_irq_save 为 IrqFlagsGuard 实现 (#317)
- feature: 实现系统调用Fstat (#295)
- feature: 实现内核通知链 notifier chain (#316)
- feature: 增加fcntl系统调用 (#323)
- feature: 添加per cpu变量支持 (#327)
- feature: spinlock守卫新增leak,spinlock新增force unlock功能.(#329)
bugfix
- bugfix: 修复无法正常读取stdin的问题 (#264)
- bugfix: 修复了当传入ahci驱动的缓冲区地址为用户缓冲区时,产生的内存越界问题.(采用分配内核缓冲区的方式临时解决) (#265)
- bugfix: 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 (#303)
- bugfix: 解决local_irq_save未关中断的错误 (#303)
- bugfix: 解决arch_try_cmpxchg对于指针处理的错误 (#307)
- bugfix: 修复了wait4的异常报错 (#312)
- bugfix: 修正null设备以及zero设备无法open、行为不符合预期的问题 (#314)
- bugfix: 修正fat文件系统未能正确的扩展文件大小的bug (#323)
- bugfix: 修正rwlock有的地方由于未使用ManuallyDrop导致的use after free问题 (#329)
更新内容-用户环境
新特性
- feature: 新增http server (#265)
bugfix
- bugfix: 解决链接时,由于crt*.o未按照升序排列导致init段链接错误的问题 (#265)
更新内容-其他
- bugfix: 固定编译工具链、修复由于新版rust编译器问题导致的报错。 (#258)
- feature: Makefile: 根目录下添加make help命令 (#271)
- doc: 更新github issue模板 (#277)
- bugfix: 解决relibc的头文件没能识别__dragonos__定义的问题 (#315)
- feature: 设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318)
- feature: 自动安装、更新dadk (#319)
更新内容-软件移植
- feature: 移植了sqlite3 (#323)
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/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
- rcore-fs - https://github.com/rcore-os/rcore-fs.git - MIT
- redox - https://gitlab.redox-os.org/redox-os/redox - MIT
当前版本的所有提交记录
commit 40176b1c6603d487b7eb66fb81e641f0932ab90a
Author: longjin <[email protected]>
Date: Tue Aug 15 15:06:57 2023 +0000
删除无用代码,并把about app的版本号更新为0.1.8
commit 67b481888770c6469f572f244a4f97e42da77d1f
Author: houmkh <[email protected]>
Date: Mon Aug 14 12:18:46 2023 +0800
移动fstat (#330)
* 移动fstat
commit 90a0a49048fdaf5e31320d0c87f8bed8db1bd882
Author: LoGin <[email protected]>
Date: Mon Aug 14 01:24:49 2023 +0800
修正rwlock有的地方由于未使用ManuallyDrop导致的use after free && spinlock守卫新增leak,spinlock新增force unlock功能.(#329)
1.修正rwlock有的地方由于未使用ManuallyDrop导致的use after free
2. spinlock守卫新增leak,spinlock新增force unlock功能.
commit c3dad0011d331d782670e14723aa48e98fbac787
Author: LoGin <[email protected]>
Date: Sun Aug 13 16:28:24 2023 +0800
添加per cpu变量支持 (#327)
commit 42c97fa7f4fee7eeefeda5d2b7ed14f598a58493
Author: LoGin <[email protected]>
Date: Tue Aug 8 23:45:04 2023 +0800
删除旧的libELF (#324)
commit 6d81180b3b7328466b976b69c5f7782aa66d8a89
Author: LoGin <[email protected]>
Date: Tue Aug 8 23:39:22 2023 +0800
移植sqlite3,并修复一些bug (#323)
* bugfix: 程序加载器映射内存时,计算要映射的大小不正确的问题。
* 修正brk系统调用不符合规范的地方
* bugfix: 修正fat文件系统未能正确的扩展文件大小的bug
* 增加fcntl系统调用
* 移植sqlite3
commit 26887c6334cdca2d13ad71dec27fb69faa0a57be
Author: LoGin <[email protected]>
Date: Mon Aug 7 01:38:52 2023 +0800
bugfix: 解决取消低地址映射时,错误的把重映射的物理页释放,从而导致的use after free问题。 (#321)
commit 729a96ef47f473d535d8317a2ace5ba141fd282a
Author: Xshine <[email protected]>
Date: Sun Aug 6 12:53:47 2023 +0800
实现内核通知链 notifier chain (#316)
* 实现通知链块结构
* 实现通知链的基本功能
* 实现 atomic notifier chain
* 实现 blocking notifier chain
* 使用 rust 范式完成功能
* 支持回调次数 nr_to_call
* 移动至 libs 目录
* 完善通知链相关方法
* 修正相关格式
* 文档编写
* 更改文档路径
commit be63f3b2b6b472daa3ee17180aa607409cb9d182
Author: houmkh <[email protected]>
Date: Sat Aug 5 18:52:46 2023 +0800
实现系统调用Fstat (#295)
* fstat
* 修改syscall.rs中的verify_area
commit 9550910ae1de900e0291a84d268e8873fa142902
Author: Chiichen <[email protected]>
Date: Sat Aug 5 18:30:55 2023 +0800
替换 local_irq_save 为 IrqFlagsGuard 实现 (#317)
commit abf3f634bf7e13e829556e962e7c73a85d163335
Author: LoGin <[email protected]>
Date: Sat Aug 5 15:30:06 2023 +0800
自动安装、更新dadk (#319)
* auto install/auto update dadk
commit d6fd9c1e8025dd679339f9156477cb7d26d3db0d
Author: LoGin <[email protected]>
Date: Sat Aug 5 15:04:08 2023 +0800
设置内核、relibc的远程为dragonos的git镜像站,防止国内网络问题导致编译失败 (#318)
commit 1a62e7767c1215f9668915b42de770e7993711bf
Author: LoGin <[email protected]>
Date: Wed Aug 2 18:11:05 2023 +0800
解决relibc的头文件没能识别__dragonos__定义的问题 (#315)
commit 06500303303ec14711b4f995e2058e12703f0f2c
Author: LoGin <[email protected]>
Date: Wed Aug 2 17:33:16 2023 +0800
修正null设备以及zero设备无法open、行为不符合预期的问题 (#314)
commit 4da3758acf0327d429dfce3d313b50c2e0fc7723
Author: Chiichen <[email protected]>
Date: Wed Aug 2 14:29:59 2023 +0800
修复了wait4的异常报错 (#312)
* 修复了wait4的异常报错
commit 821bb9a2dcfd28f9878d53ba722bdf164cf00f69
Author: Xshine <[email protected]>
Date: Fri Jul 28 17:51:05 2023 +0800
增加 ListenTable 来检测端口占用 (#291)
* 增加 ListenTable 来检测端口占用
* 使用Arc封装GlobalSocketHandle
* 删除 listen 处的端口检测逻辑,延至实现端口复用时完成
* 设立两张表,分别记录TCP和UDP的端口占用
* 实现 meatadata 相关逻辑
* 实现socket关闭时,端口在表中移除
* 使用端口管理器重构端口记录表
* 修正与RawSocket相关的端口管理逻辑
* 补充测试文件
* 修正 unbind_port 在逻辑错误
* 修正格式问题
---------
Co-authored-by: longjin <[email protected]>
commit 7cc4a02c7ff7bafd798b185beb7b0c2986b9f32f
Author: zhaoyao73 <[email protected]>
Date: Fri Jul 28 03:44:45 2023 -0400
fix arch_try_cmpxchg macro declaration (#307)
fix arch_try_cmpxchg in atomic_cmpxchg
Co-authored-by: Yao Zhao <[email protected]>
commit a30434f5201ca4c60b9515c8c23444fea3b5a8c6
Author: zhaoyao73 <[email protected]>
Date: Tue Jul 25 10:02:42 2023 -0400
fix some script bugs (#304)
add arch linux prerequisited packages
Co-authored-by: Yao Zhao <[email protected]>
commit 40fe15e0953f989ccfeb74826d61621d43dea6bb
Author: LoGin <[email protected]>
Date: Sat Jul 22 16:27:02 2023 +0800
新的内存管理模块 (#303)
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。
  内存管理模块主要由以下类型的组件组成:
- **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行
- **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中)
- **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新)
- **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator
- **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成)
- ...
V0.1.7
V0.1.7
本文作者:龙进 [email protected]
2023年4月24日
贡献者名单
DragonOS V0.1.7版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 关锦权 [email protected]
- 黄厅 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- 苏琎韬 [email protected]
- 周瀚杰 [email protected]
- HoshuChiu [email protected]
- Bullet [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- ferchiel
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
- scheduler: 修改CFSqueue从Vec变成红黑树 (#229)
- new: lazy_init (#230) (#236)
- pci: pci重构+pcie支持 (#235)
- net: 增加网络子系统,且能在用户态进行编程 (#237) (#247)
- mm: 调整brk系统调用,使得参数、返回值与Linux一致 (#238)
- 修改errno,使其与relibc的保持一致 (#234)
- pci: 修复ecam无法获取MCFG table的问题 (#241)
- libs: DowncastArc and its docs (#244)
- softirq: 增加定时器和软中断文档,修改了softirq面向c的接口 (#245)
- spinlock: 修复spinlock忘记恢复rflags的问题 (#247)
- waitqueue: 增加wakeup_all和sleep_without_schedule的功能 (#247)(#253)
- filesystem: 把PollStatus结构体改为使用bitflags库来实现 (#247)
- filesystem: 增加iovec的支持(暴力实现) (#247)
- filesystem: 新增SysFS (#250) (#254)
- driver: 根据sysfs,完善设备驱动模型 (#254)
- pipe: 匿名管道重构 (#253)
- irq: 新增IrqArch抽象。以及IrqFlagsGuard。以简化关中断-恢复中断的过程 (#253)
更新内容-用户环境
新增仓库
DragonOS-relibc
- Add sys_dup and sys_dup2 support (#2)
- 添加原本的libc的内存分配器,修复对齐问题。 (#6) (#7)
- 配置网络相关的系统调用 (#8)
- 修复由于DragonOS不支持TLS(thread local storage)导致errno变量无法正常工作的问题. (#8)
更新内容-其他
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进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
- redox - https://gitlab.redox-os.org/redox-os/redox - MIT
当前版本的所有提交记录
commit e0de0fd6a52199753a3127cfbb5d12f0a1555aae
Author: TingHuang <[email protected]>
Date: Sun Apr 23 22:55:57 2023 +0800
根据sysfs完善设备驱动模型 & 添加sysfs官方文档 (#254)
* 根据sysfs完善设备驱动模型
* 添加sysfs官方文档
commit f678331a3315b7847f08ab32b42d5bf49a9f3a6a
Author: hanjiezhou <[email protected]>
Date: Sun Apr 23 21:05:10 2023 +0800
匿名管道重构&增加IrqArch trait以及IrqFlags及其守卫 (#253)
* 实现匿名管道
* 增加IrqArch trait以及IrqFlags及其守卫
---------
Co-authored-by: longjin <[email protected]>
commit 8a1e95abb5e4df5e872bb452efc26c9e9631157d
Author: Bullet <[email protected]>
Date: Fri Apr 21 23:36:54 2023 +0800
解决使用zsh在构建DragonOS时,无法直接使用一键初始化脚本进行安装的问题 (#252)
commit dd9f1fc1a42406461e6f0d38cce1e56e22a1a15f
Author: TingHuang <[email protected]>
Date: Fri Apr 21 16:03:42 2023 +0800
新增SysFS (#250)
* 添加sysfs
* 注册sysfs
* 添加sysfs相关
* 添加rust-anlyzer辅助配置
* 将设备与sysfs相关联
* 添加单独的文件管理sysfs下的文件夹
commit cde5492f725681ed89abe1e6eb088e05d943d793
Author: login <[email protected]>
Date: Wed Apr 19 18:05:02 2023 +0800
新增网络socket的系统调用接口 (#247)
1.修复spinlock忘记恢复rflags的问题
2.WaitQueue增加wakeup_all的功能
3.完善tcp,udp,raw socket
4.把PollStatus结构体改为使用bitflags
5.新增iovec结构体
6.完成网络的系统调用
7.在bootstrap里面添加dnsmasq bridge-utils iptables
---------
Co-authored-by: guanjinquan <[email protected]>
commit 8fd71f277271ae68e648f290c67f187b030feae0
Author: houmkh <[email protected]>
Date: Mon Apr 17 17:17:06 2023 +0800
增加定时器和软中断文档,修改了softirq面向c的接口 (#245)
* 增加定时器和软中断文档
* 修改softirq对c的接口和文档
* 修改文档格式
commit 77c928f6ce3192c79ea42ab7bcba2713e289f73b
Author: login <[email protected]>
Date: Sun Apr 16 20:29:04 2023 +0800
new: DowncastArc and its docs (#244)
commit 7149abaa49a4ca70f0e42ad3b61fdfd6a941a092
Author: HoshuChiu <[email protected]>
Date: Sun Apr 16 14:47:51 2023 +0800
修复Issue#220;vnc的端口号恢复5900 (#243)
* 修复Issue#220
* qemu-vnc端口号恢复为5900
commit 5c1e552cc7f0a6ad75c8a1fa2928e3b9cc619657
Author: YJwu2023 <[email protected]>
Date: Fri Apr 14 12:21:08 2023 +0800
修复ecam无法获取MCFG table的问题 (#241)
commit 79a452ce8f27ad9c7283ac0bcf4078ed6fa018d7
Author: houmkh <[email protected]>
Date: Tue Apr 11 17:05:33 2023 +0800
修改errno,使其与relibc的保持一致 (#234)
修改errno,使其与relibc的保持一致
commit ac48398d3f17f24ff9b5da5e400ce912d05f0ba2
Author: login <[email protected]>
Date: Tue Apr 11 16:54:14 2023 +0800
调整brk系统调用,使得参数、返回值与Linux一致 (#238)
* 新增用于测试relibc的app
* 为适配relibc,修改do_execve中关于用户栈的内容的设置
* 调整brk系统调用,使得参数、返回值与Linux一致
commit 13776c114b15c406b1e0aaeeb71812ea6e471d2e
Author: login <[email protected]>
Date: Mon Apr 10 20:22:39 2023 +0800
增加对dhcpv4的支持(tcp、udp socket已写好,但由于缺少epoll机制,尚未完整测试) (#237)
* 为virtio网卡完成smoltcp的phy层配置
* raw socket
* 初步写完udp和tcp socket
* 能够正常通过dhcp获取ipv4地址(具有全局iface btree)
---------
Co-authored-by: guanjinquan <[email protected]>
commit 78bf93f02f84bf5e024ddfb559f040e68ce39ccf
Author: YJwu2023 <[email protected]>
Date: Sun Apr 9 12:30:02 2023 +0800
pci重构+pcie支持 (#235)
* pci重构+pcie支持
* pci重构测试完成
* 修正makefile的问题
* 小修改
* 修改函数名字
commit 5c9a63df836eedaca33c8c4c600b7aaeb2caf9a6
Author: login <[email protected]>
Date: Sat Apr 8 23:53:53 2023 +0800
Patch add lazy init (#236)
* 修正并发安全问题
commit 766127209ee49465a8086cfd0bec90d8b79a96c0
Author: login <[email protected]>
Date: Thu Apr 6 19:01:30 2023 +0800
new: lazy_init (#230)
commit e0dfd4d5d70d1b50fc7ad3ed4bf84b7ba6dad19d
Author: hanjiezhou <[email protected]>
Date: Thu Apr 6 00:50:14 2023 +0800
修改CFSqueue从Vec变成红黑树 (#229)
使用了由tickbh编写的rbtree: https://github.com/tickbh/rbtree-rs/blob/master/src/lib.rs
Co-authored-by: tickbh <[email protected]>
commit 2a7d773d3d39f1cb3d59d6baa817c896c6fd52d1
Author: TingHuang <[email protected]>
Date: Wed Apr 5 13:02:05 2023 +0800
新增设备驱动模型,为设备和驱动提供高层视图 (#227)
* 添加base mod
* 添加设备驱动模型相关文件
* 删除单独的mod文件,使用mod.rs,修改一些格式上的问题
* 移动驱动错误类型到该文件
* 修改一些格式上的问题
commit 5d00b1852818dd4b25952fd6a30deb20e7c7df53
Author: login <[email protected]>
Date: Wed Apr 5 00:53:35 2023 +0800
修复显示刷新线程的空指针问题 (#228)
V0.1.6
V0.1.6
本文作者:龙进 [email protected]
2023年4月2日
贡献者名单
DragonOS V0.1.6版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 关锦权 [email protected]
- 苏琎韬 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- Mork [email protected]
- WaferJay [email protected]
- HoshuChiu [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
- 匿名热心人士
更新内容-内核
- softirq: 重构了软中断 (#223)
- timer: 重构了系统定时器 (#223)
- stdio: 新增tty设备,用于标准输入输出 (#202) (#217)
- lib: 第一套键盘扫描码的状态机 (#216) (#219)
- syscall: 新增dup,dup2系统调用 (#224)
- syscall: 新增SystemError枚举类型,使得错误处理更清晰 (#205)
- driver: 新增x87浮点处理器支持 (#212)
- driver: VirtIO网卡能够正常发送、接收数据 (#204)
- filesystem: 修正了FAT32判断逻辑,解决了文件系统为FAT12/16时系统无法正常启动的问题。 (#211)
- filesystem: 新增VFS文档,以及修改文档配置 (#209)
- textui: 修复由于textui加锁,更改了preempt_count导致“进程长时间连续输出字符”的情况下,进程调度器不运行的问题。 (#203)
- scheduler: 解决由于在中断上下文以外,sched_enqueue时,未关中断导致cpu_queue双重加锁的问题 (#201)
更新内容-用户环境
新增仓库
- 新增子项目:dsc
- 移植relibc: DragonOS-relibc
更新内容-其他
- build: 添加了qemu使用VNC作为图像输出的选项 (#222)
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进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
- redox - https://gitlab.redox-os.org/redox-os/redox - MIT
当前版本的所有提交记录
commit bacd691c9ef0502b5cc618aad50517f9e59df5e0
Author: login <[email protected]>
Date: Sun Apr 2 17:09:33 2023 +0800
软中断&定时器重构 (#223)
* 软中断&定时器重构
Co-authored-by: houmkh<[email protected]>
* 修改timer的clock()
* 删除debug信息
---------
Co-authored-by: houmkh <[email protected]>
commit 6d345b774223b0daaf0ee629c7fb595a1912a9e2
Author: HoshuChiu <[email protected]>
Date: Sun Apr 2 15:55:24 2023 +0800
添加了qemu使用VNC作为图像输出的选项 (#222)
* 添加了qemu使用VNC作为图像输出的选项
* 设置vnc端口为5900
---------
Co-authored-by: longjin <[email protected]>
commit 2b771e32f5795e0fdda458e3bb2651ef6b9673ac
Author: Gou Ngai <[email protected]>
Date: Sun Apr 2 15:43:53 2023 +0800
Add dup,dup2 (#224)
* dup,dup2
* fix: sys_dup2语义与posix不一致的问题
---------
Co-authored-by: longjin <[email protected]>
commit d7b31a969ff091224a4929496f0278d024f78c77
Author: Gou Ngai <[email protected]>
Date: Fri Mar 31 18:23:58 2023 +0800
Patch keyboard capslock alt (#219)
* keyboard-alt-capslock
* 解决键盘输入'%'字符的时候无法回显的bug
---------
Co-authored-by: longjin <[email protected]>
commit 20e3152e1eea97f87d644c3023391e172bc83c93
Author: login <[email protected]>
Date: Fri Mar 31 12:54:37 2023 +0800
将TTY与stdio进行连接,实现基本的stdio功能 (#217)
* 将stdio与tty接上
commit 5fb12ce447710edf8566f250655a06cb27519fca
Author: Gou Ngai <[email protected]>
Date: Thu Mar 30 18:19:02 2023 +0800
第一套键盘扫描码的状态机 (#216)
第一套键盘扫描码的状态机
---------
Co-authored-by: guanjinquan <[email protected]>
Co-authored-by: longjin <[email protected]>
commit 676b8ef62e1a0a1e52d65b40c53c1636a2954040
Author: Mork <[email protected]>
Date: Wed Mar 29 21:24:11 2023 +0800
部分函数从返回值为Result<<>,i32>修改为Result<<>,SystemError> (#210)
* 将Result<<>,i32>替换为Result<<>,SystemError>
* bugfix: 显示双缓冲区初始化的时候,连续注册了两次Video Softirq的问题。
Co-authored-by: longjin <[email protected]>
commit 64aea4b3494bee7375e1c1ee5739c9fab0db0cb7
Author: Gou Ngai <[email protected]>
Date: Tue Mar 28 20:44:26 2023 +0800
增加x87FPU支持 (#212)
* remove `ret_from_syscall`
*修复ps2键盘驱动程序inode在进程fork的时候导致死锁的问题.
*更新: VFS每次拷贝文件描述符的时候,都会去调用inode的open函数
---------
Co-authored-by: longjin <[email protected]>
commit 2286eda6526ed1b46afd79b47dc701034b9e903d
Author: WaferJay <[email protected]>
Date: Mon Mar 27 09:32:43 2023 +0800
修正了FAT32判断逻辑,解决了文件系统为FAT12/16时系统无法正常启动的问题。 (#211)
* fix(fat): fix determination of fat type casue crash if fs is fat12/16
* refactor(fat): split BiosParameterBlock.validate() into BiosParameterBlockFAT32.validate() and BiosParameterBlockLegacy.validate()
* 调整“最大允许的簇号”的常量放置的位置。
---------
Co-authored-by: longjin <[email protected]>
commit 45b8371173b070028457f7ee64be33f68b4f9ada
Author: login <[email protected]>
Date: Sat Mar 25 14:51:16 2023 +0800
新增VFS文档,以及修改文档配置 (#209)
* 1.新增vfs设计文档
2.修改文档版权标志为"2022-2023, DragonOS Community"
3.修改电脑版文档页面的宽度为90%
* layout.html末尾加空行
commit 73c607aaddf6e4634cad179a81d3f1bc589f7220
Author: YJwu2023 <[email protected]>
Date: Sat Mar 18 20:43:37 2023 +0800
VirtIO网卡能够正常发送、接收数据 (#204)
* virtio-net小修改
* 移动volatile.rs到libs文件夹
* 使用virtio-drivers 0.3.0
* bugfix: 初始化BAR之后,未正确设置command register的问题
---------
Co-authored-by: longjin <[email protected]>
commit 4454d1a2dd1f1078750151c028a794cfd9a04a1b
Author: login <[email protected]>
Date: Sat Mar 18 20:26:05 2023 +0800
新增SystemError枚举类型,使得错误处理更清晰 (#205)
commit 0d48c3c9c21a2dd470d0e1e58b507db60e0887bb
Author: login <[email protected]>
Date: Thu Mar 16 19:48:59 2023 +0800
new: tty设备(尚未与stdio接上) (#202)
commit 790d45764090bce3bbfb96b42b2818100a8cef9a
Author: login <[email protected]>
Date: Wed Mar 15 11:42:41 2023 +0800
修复由于textui加锁,更改了preempt_count导致“进程长时间连续输出字符”的情况下,进程调度器不运行的问题。 (#203)
commit c2e757d8cbeed01b16f48bea48ed8447685e6f1a
Author: login <[email protected]>
Date: Mon Mar 13 22:22:23 2023 +0800
解决由于在中断上下文以外,sched_enqueue时,未关中断导致cpu_queue双重加锁的问题 (#201)
V0.1.5
V0.1.5
本文作者:龙进 [email protected]
2023年3月13日
贡献者名单
DragonOS V0.1.5版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- 关锦权 [email protected]
- 苏琎韬 [email protected]
- 孔维超 [email protected]
- 侯嘉滢 [email protected]
- 吴宇健 [email protected]
- 周于喆 [email protected]
- Satin Wuker [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- 万晓兰
- David Wen
- Seele.Clover
- FindWangHao
- 叶锦毅
- 林
- Albert
- TerryLeeSCUT · GitHub
- slientbard
- 悟
更新内容-内核
- scheduler: doc: 实时进程调度器文档 (#163)
- scheduler: rt: RTQueue改用双向链表存储 (#174)
- scheduler: load balance: 多核负载均衡 (#193)
- Semaphore: new: 新增了rust实现的信号量 (#183)
- mm: refactor: 重构了MMIO地址分配器 (#184)
- RwLock: new: 新增了rust实现的读写锁 (#186)
- driver: update: 完善pci的功能 (#194)
- driver: new: VirtIO网卡驱动(仍存在问题) (#194)
- driver: refactor: Rust版本的AHCI驱动 (#198)
- block io: delete: 移除Block IO 调度器. (#196)
- filesystem: refactor: 新版的VFS (#198)
- filesystem: refactor: 新版的ProcFS (#198)
- filesystem: refactor: 新版的DevS (#198)
- filesystem: new: RamFS内存文件系统 (#198)
- filesystem: new: FAT12/FAT16/FAT32文件系统 (#198)
- filesystem: new: 新的设备、块设备抽象 (#198)
更新内容-用户环境
- libc: 调整,将所有的app直接链接到libc.a中,而不是都执行一遍"搜索.o"的过程 (#171)
更新内容-其他
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/DragonOS-Community/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进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
- redox - https://gitlab.redox-os.org/redox-os/redox - MIT
当前版本的所有提交记录
commit 84407d360511c7699938a0f245ae33ff76f16b17
Author: login <[email protected]>
Date: Mon Mar 13 00:26:04 2023 +0800
bugfix:解决touch命令失败的问题 (#199)
* bug fix : 解决touch命令失败的问题
commit 004e86ff19727df303c23b42c7a271b9214c6898
Author: login <[email protected]>
Date: Sun Mar 12 22:36:11 2023 +0800
新版文件系统重构完成 (#198)
1.重构:VFS
2. 重构:ProcFS
3. 重构:DevFS
4. 重构:FAT32
5. 重构:AHCI驱动
6. 新增:RamFS
7. 新增:MountFS
8. 新增:FAT12
9. 新增:FAT16
10. 重构:设备抽象
Co-authored-by: guanjinquan <[email protected]>
Co-authored-by: DaJiYuQia <[email protected]>
commit 17041e0e307eaf9e8d8ddbddfa186cd1f10f1bc0
Author: login <[email protected]>
Date: Sun Mar 12 21:04:37 2023 +0800
添加rust的bare bone工具链 (#197)
commit 26d84a31393c50063ff416bc509316e8d342028c
Author: YJwu2023 <[email protected]>
Date: Sat Mar 11 21:09:50 2023 +0800
新增VirtIO网卡驱动 (#194)
* 修复内存bug与grub安装脚本的错误
* 修改小bug
* PCI增加功能与virtio-net驱动
* little fix
* virtio-net小修改
commit 1d48996375149279a721777b2c600e1b5c3ee1b5
Author: kong <[email protected]>
Date: Sat Mar 11 18:17:35 2023 +0800
多核负载均衡(#193)
* feat(sched):CPU负载检测初步实现
* fix(smp):调整smp中的apic的头文件声明
* fix(smp):简单的负载均衡算法实现
* fix(sched):抽离负载均衡方法
* fix(sched):修改rt中的运行队列bug,调整负载均衡逻辑
* fix(process):移除无用测试代码
* reformat code
commit ef9f9732b09f78d7192f1d0dd3b41be655fb0914
Author: houmkh <[email protected]>
Date: Thu Mar 9 23:31:25 2023 +0800
修复了mmio buddy的bug (#189)
* 修改buddy_query
commit c1396d277115b371d09ad6d39a1c419f9224ffd0
Author: Gou Ngai <[email protected]>
Date: Mon Mar 6 11:28:32 2023 +0800
Rwlock文档 (#186)
* Rwlock文档
commit a7eb62a47a8d701b90a14f83cc9028cfed07c268
Author: houmkh <[email protected]>
Date: Mon Mar 6 11:21:29 2023 +0800
修改mmio-buddy代码结构和函数名 (#184)
* 修改mmio-buddy结构和函数名
commit c2481452f81750ec02adec627ab2edbc93d9cd9c
Author: houmkh <[email protected]>
Date: Sat Mar 4 18:36:55 2023 +0800
rust重构mmio_buddy和mmio (#178)
* rust重构mmio_buddy和mmio
* mmio-buddy文档
---------
Co-authored-by: longjin <[email protected]>
commit f1284c35717a2f9f8cee7cecfc835ba1d23a1161
Author: Gou Ngai <[email protected]>
Date: Sat Mar 4 17:47:17 2023 +0800
新增了rust实现的信号量 (#181)
* 新增了rust实现的信号量
---------
Co-authored-by: longjin <[email protected]>
commit 83b9512c1c1e8289000084adcafddebee6a23f16
Author: Gou Ngai <[email protected]>
Date: Sat Mar 4 16:54:42 2023 +0800
新增了rust实现的信号量 (#183)
* 新增了rust实现的信号量
commit e532a536a0b244f4590e6eb7910084bd63049704
Author: login <[email protected]>
Date: Thu Mar 2 22:50:07 2023 +0800
添加赞助者:FengWangHao (#179)
commit b66beefd4e9ead61ee55f335246ebeb8277d3011
Author: login <[email protected]>
Date: Mon Feb 27 01:00:35 2023 +0800
解决ubuntu2210版本无法正确编译grub,以及正确安装qemu的问题 (#176)
commit 4177d0327c3eacdc606f0b22f99f208fd48cfff3
Author: kong <[email protected]>
Date: Mon Feb 20 17:03:37 2023 +0800
RTQueue改用双向链表存储(#174)
* RTQueue改用双向链表存储
commit 2bf5ee0e3cac3a91dee6a13b71c86a9477c07d9b
Author: login <[email protected]>
Date: Sat Feb 11 13:04:24 2023 +0800
修改libc的编译相关内容(#171)
1.将libc的include文件夹分为export和internal
2.将所有app都直接链接libc.a,而不是都执行一遍"搜索.o"的过程
commit 90b077f9d3ecd48ca46f8bbb32363620db6ddbe6
Author: kong <[email protected]>
Date: Thu Feb 9 15:24:37 2023 +0800
Sched rt doc (#163)
* update
* 完善调度器文档
* 更新RT调度器文档
* 更新实时调度文档
commit 009f92d50fe2e52e425bce397801d3fa204daecd
Author: Satin Wuker <[email protected]>
Date: Tue Feb 7 19:29:09 2023 -0800
fix typos 改正README_EN的错别字和语法错误 (#167)
V0.1.4
V0.1.4
本文作者:龙进 [email protected]
2023年2月4日
贡献者名单
DragonOS V0.1.4版本由以下小伙伴贡献代码:
- 龙进 [email protected]
- Gou Ngai [email protected]
- 孔维超 [email protected]
- 侯嘉滢 [email protected]
赞助者名单
感谢以下同学的赞赏,我们将不断努力!
- David Wen (人民币2000元)
- Seele.Clover (人民币500元)
- 叶锦毅 (人民币100元)
- 林 (人民币50元)
- Albert (人民币9.99元)
- TerryLeeSCUT (人民币6.66元)
- slientbard (人民币6.66元)
- 悟 (人民币2.00元)
- 【其他匿名的热心人士】(人民币1.00元)
更新内容-内核
- Spinlock: new: 新增具有守卫的自旋锁SpinLock,支持编译期对锁的使用进行检查。 (#148)
- Spinlock: feature: Raw spin lock 增加lock_irqsave、unlock_irqrestore(#151)
- Mutex: new: Rust版本的Mutex (#157)
- doc: new: Rust代码风格文档 (#161)
- WaitQueue: new: Rust版本的WaitQueue (#162)
- WaitQueue: update: C版本的wait_queue的唤醒,改为立即唤醒 (#158)
- block io: new: Block IO 调度器. 当具有多核时,io调度器在核心1上运行。 (#158)
- smp: bugfix: 为AP核启动apic_timer,使其能够运行调度 (#158)
- smp: new: 增加kick_cpu功能,支持让某个特定核心立即运行调度器 (#158)
- smp: new: 增加进程在核心间迁移的功能 (#158)
- scheduler: new: 增加实时进程调度器(支持FIFO、RR策略) (#139)
- scheduler: update: CFS调度器为每个核心设置单独的IDLE进程pcb(pid均为0) (#158)
- scheduler: bugfix: process_wakeup时,对cfs的进程,重设虚拟运行时间。解决由于休眠的进程,其虚拟运行时间过小,导致其他进程饥饿的问题 (#158)
- process: new: pcb中增加migrate_to字段 (#158)
更新内容-用户环境
无
更新内容-其他
无
更新内容-软件移植
无
源码、发布版镜像下载
您可以通过以下方式获得源代码:
通过Git获取
- 您可以访问https://github.com/fslongjin/DragonOS/releases下载发布版的代码,以及编译好的,可运行的磁盘镜像。
- 我们在gitee上也有镜像仓库可供下载:https://gitee.com/DragonOS/DragonOS
通过DragonOS软件镜像站获取
为解决国内访问GitHub慢、不稳定的问题,同时为了方便开发者们下载DragonOS的每个版本的代码,我们特意搭建了镜像站,您可以通过以下地址访问镜像站:
您可以通过镜像站获取到DragonOS的代码压缩包,以及编译好的可运行的磁盘镜像。
- https://mirrors.DragonOS.org
- https://mirrors.DragonOS.org.cn
- 国内镜像加速: [https://mirrors.ringotek.cn/] (https://mirrors.ringotek.cn/)
开放源代码声明
为促进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 f6ba114bb0420e848ef7fc844c96c0d7a0552d93
Author: houmkh <[email protected]>
Date: Sat Feb 4 12:31:15 2023 +0800
Block IO Scheduler (#158)
* Block io调度器
* process_wakeup时,对cfs的进程,重设虚拟运行时间。解决由于休眠的进程,其虚拟运行时间过小,导致其他进程饥饿的问题
* 1、为AP核启动apic_timer,使其能够运行调度
2、增加kick_cpu功能,支持让某个特定核心立即运行调度器
3、wait_queue的唤醒,改为立即唤醒。
4、增加进程在核心间迁移的功能
5、CFS调度器为每个核心设置单独的IDLE进程pcb(pid均为0)
6、pcb中增加migrate_to字段
7、当具有多核时,io调度器在核心1上运行。
* io调度器文件位置修改
* 修改io的makefile
* 更新makefile中的变量名
* 修改io调度器函数名
---------
Co-authored-by: login <[email protected]>
commit 151251b50b7ed55596edd32ffec49a4041010e2a
Author: login <[email protected]>
Date: Tue Jan 31 19:27:02 2023 +0800
Patch add rust waitqueue (#162)
* new: rust版本的waitqueue
* new:等待队列的文档
commit 3c369b1430e8d571bcc74a8ef7fefc1c4cae5dd2
Author: login <[email protected]>
Date: Mon Jan 30 15:43:42 2023 +0800
new:新增rust代码风格 (#161)
commit c28bd540ac856cd9d8d5597852af8f2588a660e4
Author: login <[email protected]>
Date: Mon Jan 30 15:10:24 2023 +0800
更新赞助者名单 (#160)
* 更新赞赏者列表
commit 935f40ec174fec217aed4553d45996327443bc0e
Author: login <[email protected]>
Date: Tue Jan 17 21:30:16 2023 +0800
new: Rust版本的Mutex (#157)
commit d8a064128a8a06b90ff4c7b87c193518d9572641
Author: Gou Ngai <[email protected]>
Date: Mon Jan 16 19:58:50 2023 +0800
Raw spin lock 增加lock_irqsave、unlock_irqrestore(#151)
Raw spin lock 增加lock_irqsave、unlock_irqrestore
commit 06b09f34ed64a006a80ae8df383e3c8b176f02e0
Author: kong <[email protected]>
Date: Sat Jan 14 22:38:05 2023 +0800
Patch sched rust (#139)
* update
* 添加rt调度器的rust初步实现
* 完善rt调度逻辑
* 调试rt调度器
* 修改sched的返回值
* cargo fmt 格式化
* 删除无用代码,修补rt bug
* 删除无用的代码,和重复的逻辑
* 软中断bugfix
* 删除一些代码
* 添加kthread_run_rt文档
* 解决sphinix警告_static目录不存在的问题
Co-authored-by: longjin <[email protected]>
commit ec53d23ed03347854189d92b7e175f309779321b
Author: login <[email protected]>
Date: Sat Jan 14 10:35:49 2023 +0800
new: 新增具有守卫的自旋锁SpinLock,支持编译期对锁的使用进行检查。 (#148)
commit 41474ba3df99b6822ce452dc94dc53a4da62cba1
Author: login <[email protected]>
Date: Tue Jan 10 22:07:41 2023 +0800
更新Readme中关于DragonOS的介绍部分 (#146)
commit 8ad2e358fd3b05eed2919de50640682e51687fb5
Author: login <[email protected]>
Date: Sun Jan 8 15:51:59 2023 +0800
更新about app中的版本号 (#145)
* 更新about app中的版本号
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: 功能特性文档