xv6-riscv-kernel/README.md
2024-08-07 07:39:56 +02:00

86 lines
3 KiB
Markdown

# xv6
xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix
Version 6 (v6). xv6 loosely follows the structure and style of v6,
but is implemented for a modern RISC-V multiprocessor using ANSI C.
## Testing
The makefile exposes several targets inspired by FreeBSD: kernel, world and fs.img
```bash
make -j$(nproc) kernel
make -j$(nproc) world
make -j$(nproc) fs.img
```
To do everything in one sweep:
```bash
make -j$(nproc) qemu
```
## Dependencies
- Qemu (RV)
- Make (GNU variant)
- GCC (RV)
- clang-format (optional)
<details>
<summary>Fedora</summary>
Only essentials:
sudo dnf install make qemu-system-riscv gcc-riscv64-linux-gnu clang-format
Alternatively, if you want all "batteries included":
sudo dnf group install "C Development Tools and Libraries" "Development Tools"
</details>
## From upstream readme:
> ACKNOWLEDGMENTS
>
> xv6 is inspired by John Lions's Commentary on UNIX 6th Edition (Peer
> to Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14,
> 2000)). See also https://pdos.csail.mit.edu/6.1810/, which provides
> pointers to on-line resources for v6.
>
> The following people have made contributions: Russ Cox (context switching,
> locking), Cliff Frey (MP), Xiao Yu (MP), Nickolai Zeldovich, and Austin
> Clements.
>
> We are also grateful for the bug reports and patches contributed by
> Takahiro Aoyagi, Silas Boyd-Wickizer, Anton Burtsev, carlclone, Ian
> Chen, Dan Cross, Cody Cutler, Mike CAT, Tej Chajed, Asami Doi,
> eyalz800, Nelson Elhage, Saar Ettinger, Alice Ferrazzi, Nathaniel
> Filardo, flespark, Peter Froehlich, Yakir Goaron, Shivam Handa, Matt
> Harvey, Bryan Henry, jaichenhengjie, Jim Huang, Matúš Jókay, John
> Jolly, Alexander Kapshuk, Anders Kaseorg, kehao95, Wolfgang Keller,
> Jungwoo Kim, Jonathan Kimmitt, Eddie Kohler, Vadim Kolontsov, Austin
> Liew, l0stman, Pavan Maddamsetti, Imbar Marinescu, Yandong Mao, Matan
> Shabtay, Hitoshi Mitake, Carmi Merimovich, Mark Morrissey, mtasm, Joel
> Nider, Hayato Ohhashi, OptimisticSide, Harry Porter, Greg Price, Jude
> Rich, segfault, Ayan Shafqat, Eldar Sehayek, Yongming Shen, Fumiya
> Shigemitsu, Cam Tenny, tyfkda, Warren Toomey, Stephen Tu, Rafael Ubal,
> Amane Uehara, Pablo Ventura, Xi Wang, WaheedHafez, Keiichi Watanabe,
> Nicolas Wolovick, wxdao, Grant Wu, Jindong Zhang, Icenowy Zheng,
> ZhUyU1997, and Zou Chang Wei.
>
>
> The code in the files that constitute xv6 is
> Copyright 2006-2022 Frans Kaashoek, Robert Morris, and Russ Cox.
>
> ERROR REPORTS
>
> Please send errors and suggestions to Frans Kaashoek and Robert Morris
> (kaashoek,rtm@mit.edu). The main purpose of xv6 is as a teaching
> operating system for MIT's 6.1810, so we are more interested in
> simplifications and clarifications than new features.
>
> BUILDING AND RUNNING XV6
>
> You will need a RISC-V "newlib" tool chain from
> https://github.com/riscv/riscv-gnu-toolchain, and qemu compiled for
> riscv64-softmmu. Once they are installed, and in your shell
> search path, you can run "make qemu".