xref: /xv6-public/README (revision 5bf3fbee)
182537b71Srtmxv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix
282537b71SrtmVersion 6 (v6).  xv6 loosely follows the structure and style of v6,
382537b71Srtmbut is implemented for a modern x86-based multiprocessor using ANSI C.
4b52151e0Skaashoek
5bc54fa39SrtmACKNOWLEDGMENTS
62e898063Skaashoek
7f0400600Srscxv6 is inspired by John Lions's Commentary on UNIX 6th Edition (Peer
882537b71Srtmto Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14,
90f3d9d9dSFrans Kaashoek2000)). See also http://pdos.csail.mit.edu/6.828/2016/xv6.html, which
1082537b71Srtmprovides pointers to on-line resources for v6.
11b52151e0Skaashoek
1282537b71Srtmxv6 borrows code from the following sources:
1382537b71Srtm    JOS (asm.h, elf.h, mmu.h, bootasm.S, ide.c, console.c, and others)
1482bb0b56SAustin Clements    Plan 9 (entryother.S, mp.h, mp.c, lapic.c)
15801affcdSkaashoek    FreeBSD (ioapic.c)
1682537b71Srtm    NetBSD (console.c)
17801affcdSkaashoek
18*5bf3fbeeSFrans KaashoekThe following people have made contributions: Russ Cox (context switching,
19*5bf3fbeeSFrans Kaashoeklocking), Cliff Frey (MP), Xiao Yu (MP), Nickolai Zeldovich, and Austin
20*5bf3fbeeSFrans KaashoekClements.
21801affcdSkaashoek
22*5bf3fbeeSFrans KaashoekWe are also grateful for the bug reports and patches contributed by Silas
23*5bf3fbeeSFrans KaashoekBoyd-Wickizer, Mike CAT, Nelson Elhage, Nathaniel Filardo, Peter Froehlich,
24*5bf3fbeeSFrans KaashoekYakir Goaran, Shivam Handa, Bryan Henry, Jim Huang, Anders Kaseorg, kehao95,
25*5bf3fbeeSFrans KaashoekEddie Kohler, Imbar Marinescu, Yandong Mao, Hitoshi Mitake, Carmi Merimovich,
26*5bf3fbeeSFrans KaashoekJoel Nider, Greg Price, Ayan Shafqat, Eldar Sehayek, Yongming Shen, Cam Tenny,
27*5bf3fbeeSFrans KaashoekRafael Ubal, Warren Toomey, Stephen Tu, Pablo Ventura, Xi Wang, Keiichi
28*5bf3fbeeSFrans KaashoekWatanabe, Nicolas Wolovick, Jindong Zhang, and Zou Chang Wei.
297b814133SAustin Clements
30fa1b3410SrscThe code in the files that constitute xv6 is
310f3d9d9dSFrans KaashoekCopyright 2006-2016 Frans Kaashoek, Robert Morris, and Russ Cox.
322e898063Skaashoek
332e898063SkaashoekERROR REPORTS
342e898063Skaashoek
35801affcdSkaashoekIf you spot errors or have suggestions for improvement, please send
36bc54fa39Srtmemail to Frans Kaashoek and Robert Morris (kaashoek,rtm@csail.mit.edu).
37641e29c5Skaashoek
38bc54fa39SrtmBUILDING AND RUNNING XV6
394d33ef86Srsc
404d33ef86SrscTo build xv6 on an x86 ELF machine (like Linux or FreeBSD), run "make".
414d33ef86SrscOn non-x86 or non-ELF machines (like OS X, even on x86), you will
424d33ef86Srscneed to install a cross-compiler gcc suite capable of producing x86 ELF
43*5bf3fbeeSFrans Kaashoekbinaries.  See http://pdos.csail.mit.edu/6.828/2016/tools.html.
444d33ef86SrscThen run "make TOOLPREFIX=i386-jos-elf-".
454d33ef86Srsc
46698b8fb5SFrans KaashoekTo run xv6, install the QEMU PC simulators.  To run in QEMU, run "make qemu".
474d33ef86Srsc
484d245c79SAustin ClementsTo create a typeset version of the code, run "make xv6.pdf".  This
494d245c79SAustin Clementsrequires the "mpage" utility.  See http://www.mesa.nl/pub/mpage/.
50