xv6, line by line
README

README

text · 48 lines · annotated 100% · upstream

About this file

The project’s README: what xv6 is, who made it, where to report errors, and how to build it. It is short; this page adds the context a newcomer needs.

It is also a file inside xv6. The Makefile passes README to mkfs along with the user programs (Makefile:154), so the disk image contains /README (inode 2). After make qemu, typing cat README at the xv6 shell prints this text, and wc README counts it; it is the one ordinary text file you can try programs on straight away.

Read next: Makefile for how make qemu builds and runs everything, then kernel/entry.S, where the kernel starts.

1xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix
2Version 6 (v6). xv6 loosely follows the structure and style of v6,
3but is implemented for a modern RISC-V multiprocessor using ANSI C.
5ACKNOWLEDGMENTS
7xv6 is inspired by John Lions's Commentary on UNIX 6th Edition (Peer
8to Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14,
92000)). See also https://pdos.csail.mit.edu/6.1810/, which provides
10pointers to on-line resources for v6.
12The following people have made contributions: Russ Cox (context switching,
13locking), Cliff Frey (MP), Xiao Yu (MP), Nickolai Zeldovich, and Austin
14Clements.
16We are also grateful for the bug reports and patches contributed by
17Abhinavpatel00, Takahiro Aoyagi, Marcelo Arroyo, Hirbod Behnam, Silas
18Boyd-Wickizer, Anton Burtsev, carlclone, Ian Chen, clivezeng, Dan
19Cross, Cody Cutler, Mike CAT, Tej Chajed, Asami Doi,Wenyang Duan,
20echtwerner, eyalz800, Nelson Elhage, Saar Ettinger, Alice Ferrazzi,
21Nathaniel Filardo, flespark, Peter Froehlich, Yakir Goaron, Shivam
22Handa, Matt Harvey, Bryan Henry, jaichenhengjie, Jim Huang, Matúš
23Jókay, John Jolly, Alexander Kapshuk, Anders Kaseorg, kehao95,
24Wolfgang Keller, Jungwoo Kim, Jonathan Kimmitt, Eddie Kohler, Vadim
25Kolontsov, Austin Liew, Bruce Lowekamp, l0stman, Pavan Maddamsetti,
26Imbar Marinescu, Yandong Mao, Matan Shabtay, Hitoshi Mitake, Carmi
27Merimovich, mes900903, Mark Morrissey, mtasm, Joel Nider, Hayato Ohhashi,
28OptimisticSide, papparapa, phosphagos, Harry Porter, Greg Price, Zheng
29qhuo, Quancheng, RayAndrew, Jude Rich, segfault, Ayan Shafqat, Eldar
30Sehayek, Yongming Shen, Fumiya Shigemitsu, snoire, Taojie, Cam Tenny,
31tyfkda, Warren Toomey, Stephen Tu, Alissa Tung, Rafael Ubal, unicornx,
32Amane Uehara, Pablo Ventura, Luc Videau, Xi Wang, WaheedHafez, Keiichi
33Watanabe, Lucas Wolf, Nicolas Wolovick, wxdao, Grant Wu, x653, Andy
34Zhang, Jindong Zhang, Icenowy Zheng, ZhUyU1997, and Zou Chang Wei.
36ERROR REPORTS
38Please send errors and suggestions to Frans Kaashoek and Robert Morris
39(kaashoek,rtm@mit.edu). The main purpose of xv6 is as a teaching
40operating system for MIT's 6.1810, so we are more interested in
41simplifications and clarifications than new features.
43BUILDING AND RUNNING XV6
45You will need a RISC-V "newlib" tool chain from
46https://github.com/riscv/riscv-gnu-toolchain, and qemu compiled for
47riscv64-softmmu. Once they are installed, and in your shell
48search path, you can run "make qemu".