Personal patches to the xv6 kernel
Find a file
2025-01-22 00:05:41 +01:00
kernel kfree comment for clarity 2025-01-15 13:45:36 +01:00
mkfs Complete reformat 2024-06-15 16:55:06 +02:00
user Correcting logic error 2025-01-22 00:05:41 +01:00
.clang-format Allow body-less loops on a single line 2024-08-07 16:07:05 +02:00
.dir-locals.el Setting indent-tabs-mode nil everywhere is dangerous 2011-09-05 15:22:16 -04:00
.editorconfig Clean up linker script 2019-10-21 22:27:18 -04:00
.gdbinit.tmpl-riscv set riscv use-compressed-breakpoints yes 2020-10-14 20:28:16 -04:00
.gitignore Gitignore for clangd and compile-commands.json 2024-08-07 05:12:38 +02:00
LICENSE x 2019-07-24 09:06:49 -04:00
Makefile Remove dependence on perl, depend on python instead 2025-01-14 20:29:50 +01:00
README.md Going with broken formatting for now 2024-08-07 07:39:56 +02:00

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

make -j$(nproc) kernel
make -j$(nproc) world
make -j$(nproc) fs.img

To do everything in one sweep:

make -j$(nproc) qemu

Dependencies

- Qemu (RV)
- Make (GNU variant)
- GCC (RV)
- clang-format (optional)
Fedora
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"

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".