kernel/README.md

48 lines
1.7 KiB
Markdown
Raw Normal View History

2024-05-13 18:31:37 -04:00
---
created: 2024-05-13T14:28:49-05:00
modified: 2024-05-13T14:28:52-05:00
---
2024-05-14 12:12:11 -04:00
A kernel for RISC-V written in Rust. Currently focused on running on QEMU generic riscv64, advice and assistance welcome & encouraged.
2024-05-13 18:39:00 -04:00
# Reading list
2024-05-13 18:31:37 -04:00
2024-05-13 18:39:00 -04:00
## Beginner tutorial
2024-05-13 23:14:16 -04:00
- Meyer Zinn's RISC-V kernel guide (right now, code is just copied from this - will diverge later)
2024-05-13 22:42:49 -04:00
- [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/)
2024-05-13 18:39:00 -04:00
## Other reading
- https://osblog.stephenmarz.com/ch1.html
- https://os.phil-opp.com/
- https://github.com/skyzh/core-os-riscv
2024-05-13 22:37:28 -04:00
- https://twilco.github.io/riscv-from-scratch/2019/04/27/riscv-from-scratch-2.html
## RISC-V Spec
2024-05-13 22:42:49 -04:00
- [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
2024-05-13 23:07:46 -04:00
- [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)
2024-05-14 12:12:11 -04:00
- [LaurieWired's RISC-V Assembly primer](https://www.youtube.com/watch?v=0IeOaiKszLk)
# TODO Research and implement
- [ ] Basics
- [ ] Processes
- [ ] Virtual address 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