DragonOS
DragonOS copied to clipboard
使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算轻量化场景而设计。DragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for lightweight...
为了能在riscv64的qemu上获取到realtime,需要实现goldfish rtc驱动,并接入设备驱动模型。 参考: https://code.dragonos.org.cn/xref/linux-6.6.21/drivers/rtc/rtc-goldfish.c
## 需求 优化AHCI驱动程序,使得: 1. 接入sysfs 2. 支持中断,而不是现在的忙等 3. 支持同时发起多个读或者写的请求 ## 一些可能的建议 - 为了实现上面的第一点功能,也许需要先把PCI接入sysfs。 - 为了实现上面第2、3点的功能,也许需要对磁盘的读写请求包进行合理抽象,以便复用于之后的其他磁盘驱动。
## 需求 尝试使用go编写一个hello world应用程序,并将其运行在dragonos上. 同时编写相应的指南,写到应用程序开发文档之中.
## Feat 为visionfive2开发板实现riscv的mmc card的驱动,使得能够读取到要加载的程序。
## 需求 为腾讯云打包磁盘镜像,使得DragonOS能在CVM上运行pid1的内核线程。 也就是,正常运行到这一行: https://code.dragonos.org.cn/xref/DragonOS/kernel/src/init/initial_kthread.rs?r=b5b571e02693d91eb6918d3b7561e088c3e7ee81#44 (由于尚不支持virtio disk,因此可以暂时注释掉 ``` ahci_init().expect("Failed to initialize AHCI"); mount_root_fs().expect("Failed to mount root fs"); ```
**问题描述** 在某些情况下系统无法加载HPET驱动而导致系统panic **解决方案** 在系统无法加载HPET驱动时,实现对PIT的支持作为备用方案
### 【任务发布】检查``__schedule``函数与Linux行为不一致的地方 在[#766](https://github.com/DragonOS-Community/DragonOS/pull/766) 实现的``sched_yield``系统调用中,实现与Linux一致,但是在DragonOS中行为可能与Linux不一致,猜测为``__schedule``函数逻辑部分与Linux不太一致。 
**描述错误** 在某些情况下,epoll无法正确唤醒目标进程。 - 比如仓库内的test-backlog这个程序,使用了actix-web,但是无法返回任何内容到调用方。 - `ring`这个程序在第一次发送icmp并收到响应后,后续无法再发送icmp包。 **请填写您的电脑的信息:** - 操作系统及版本:Ubuntu 22.04 - DragonOS版本:[c719ddc](https://github.com/DragonOS-Community/DragonOS/commit/c719ddc6312acd7976e0f6fd449a94ff9abad5a6) - DADK版本:0.1.10 - Rust版本:1.68 **重现步骤** 重现行为的步骤: 1. 运行dragonos 2. 输入`test-backlog`命令 3. 在宿主机上,用浏览器访问虚拟机的12580端口。(如果是wsl/远程虚拟机,请使用vscode的端口转发) 4. 浏览器无法收到任何响应,会一直转圈。(由于backlog机制,因此多次刷新都不会connection reset的,只会一直等待) **期望行为** 能够返回`hello world`
## 简介 | Brief Introduction 现有的启动流程中,无法便捷的进行系统的自定义,比如在未来可能引入的测试框架中,选择是否开启某些测试、选择默认加载哪些用户程序、选择启动模式、是否开启gdb等等。现在这些都是要通过一些手动配置,或者通过make参数指定。这里我希望可以通过一种结构化的配置文件(toml会是一个不错的选择,后文会描述优点),来完整描述系统的启动行为 ## 想法 | Ideas 以下是目前设想的一套启动流程,欢迎大家在issue下讨论,基本想法是,把现有的dadk从一个用户程序加载工具,变成启动配置加载+启动命令生成+用户程序加载+测试套件(可选),把现有的`make run`系列命令,迁移为`cargo dadk run` ### 工作 | Jobs 1. 将现有dadk改写为cargo插件的形式便于集成 2. 将现有dadk 用户程序配置从json迁移为toml配置(可选) 3. 在dadk中集成启动模块,可以用dadk作为入口进入,简单理解就是把启动流程中的 make 命令替换成 cargo dadk 命令...