--- created: 2024-05-13T14:28:49-05:00 modified: 2024-05-13T14:28:52-05:00 --- A kernel for RISC-V written in Rust. Currently focused on running on QEMU generic riscv64, advice and assistance welcome & encouraged. # Reading list ## Beginner tutorial - Meyer Zinn's RISC-V kernel guide (right now, code is just copied from this - will diverge later) - [Part 0](https://www.meyerzinn.tech/posts/2023/03/05/running-rust-code-on-risc-v-in-qemu/) - [Part 1](https://www.meyerzinn.tech/posts/2023/03/08/p1-printing-and-allocating/) ## Other reading - https://osblog.stephenmarz.com/ch1.html - https://os.phil-opp.com/ - https://github.com/skyzh/core-os-riscv - https://twilco.github.io/riscv-from-scratch/2019/04/27/riscv-from-scratch-2.html - https://danielmangum.com/categories/risc-v-bytes/ ## RISC-V Spec - [Volume I: Unprivileged](https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pdf) - [Volume II: Privileged](https://riscv.org/wp-content/uploads/2019/08/riscv-privileged-20190608-1.pdf) ## Videos - [Sarah Jamie Lewis's "Let's Build An OS" series](https://www.youtube.com/watch?v=s_4tFz52jbc) (Note: it *can* run Doom) - [Dr. Harry Porter's lectures on the xv6 kernel](https://www.youtube.com/watch?v=fWUJKH0RNFE&list=PLbtzT1TYeoMhTPzyTZboW_j7TPAnjv9XB) - [LaurieWired's RISC-V Assembly primer](https://www.youtube.com/watch?v=0IeOaiKszLk) # TODO Research and implement - [ ] Basics - [ ] Processes - [ ] Virtual addrxess spaces, page tables - [ ] Files, directories - [ ] Pipes - [ ] Multitasking, time-slicing - [ ] Syscalls - [ ] CPU cache - [ ] User authentication, login - [ ] File protection, permissions - [ ] Mountable file systems - [ ] Paging to disk - [ ] Sockets, network support - [ ] Interprocess communication - [ ] Device drivers - [ ] User applications