2024-08-07 07:25:02 +02:00
|
|
|
# xv6
|
|
|
|
|
2006-09-04 13:52:36 +02:00
|
|
|
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,
|
2019-06-04 12:45:09 +02:00
|
|
|
but is implemented for a modern RISC-V multiprocessor using ANSI C.
|
2006-08-28 20:31:33 +02:00
|
|
|
|
2024-08-07 07:25:02 +02:00
|
|
|
## 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>
|
2024-08-07 07:29:01 +02:00
|
|
|
<summary>Fedora</summary>
|
|
|
|
<p>
|
2024-08-07 07:25:02 +02:00
|
|
|
```bash
|
|
|
|
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"`
|
2024-08-07 07:29:01 +02:00
|
|
|
</p>
|
2024-08-07 07:25:02 +02:00
|
|
|
</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".
|