大家好: 这是目前初步制定的任务列表
# crate-based&unikernel 方式构造定制操作系统内核
## 模块
### 文件系统 - easyfs - fatfs
### netstack - lose-net-stack 已经实现了 `udp`等 - smoltcp
### 基础图形库 - embedded-graphics (2D graphics library)
### 存储设备驱动 - virtio-blk - nvme
### 网络设备驱动 - virtio-net - e1000
### 人机交互设备驱动 - virtio-input(键盘/鼠标) - virtio-gpu(图形显示)
### 硬件平台设备驱动 - pci
## OS或Hypervisor - rcore-tutorial-v3 - rcore-tutorial-in-single-workspace - aceros - Rust-for-Linux - RVM
## 可选择的题目
### 改进组合已有crates
- (入门)改进virtio-drivers crates,支持virtio协议的各种虚拟外设/功能模块 - (入门)把新的crates组合入rcore-tutorial-v3 或 rcore-tutorial-in-single-workspace - (中级)把已有crate组合入新的OS中,如aceros - (高级)把已有crate组合入新的OS中,如Rust-for-Linux
### 文件系统类题目
- (中级)log xv6fs文件系统 - (高级)ext2文件系统
### 网络类题目
- lose-net-stack 已经实现了 `udp`等,可以对 `lose-net-stack` 进行扩展
- (中级)添加 `lose-net-stack` `tcp` 支持 - (高级)添加 `lose-net-stack` `ipv6` 支持 - (中级)添加 `lose-net-stack` `icmp` 支持
或者基于 `lose-net-stack` 编写相关的用例.(也可以使用 `smoltcp`)
- (中级)基于 `lose-net-stack` 的 `dns` `client`(`udp` 协议) - (中级)基于 `lose-net-stack` 的 `ntp` `client`(`udp` 协议 网络时间协议,可以通过网络同步操作系统时间,可以补全很多个人编写的 `os` 时间不准或者不支持的问题。)
### UI类题目
基于 `virtio-gpu` 在rcore-tutorial等
- (中级)利用字库显示文字(unicode) - `bmp` 文件的解析和显示 - `ico` 文件的解析和显示 - `jpg` 文件的解析和显示 - `png` 文件的解析和显示
- (高级)在有对图片的和字库的支持下,可以再结合 `virtio-input` 实现鼠标的移动和键盘输入的显示。
### 设备驱动类题目 - (初级)支持virtio协议的各种虚拟外设/功能模块 - (中级)各种Qemu中模拟设备的驱动程序crate
### 操作系统类题目 - (初级)扩展/改进rcore-tutorial-v3,支持各种内核crates - (初级)扩展/改进rcore-tutorial-in-single-workspace,支持各种内核crates - (中级)扩展arceos等,形成unikernel形态,支持Linux系统调用和Linux应用程序。 - (高级)设计实现TPU/GPU/APU driver crate on rcore-tutorial..Rust for Linux,可运行在RISC-V or ARM开发板上 - (高级)扩展 Rust for Linux,更好地支持跨OS的内核相关crates - (高级)扩展 Rust for Linux on RISC-V 32/64 - (高级)扩展RVM,支持可调度/多核支持的Hypervisor,可运行在ARM上 - (高级)移植各种OS/Hypervisor在x86-64\RISC-V64/AARCH64\LoongArch上