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 5*2e898063SkaashoekACKNOWLEDGEMENTS 6*2e898063Skaashoek 782537b71Srtmxv6 is inspired by John Lions' Commentary on UNIX 6th Edition (Peer 882537b71Srtmto Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14, 982537b71Srtm2000)). See also http://pdos.csail.mit.edu/6.828/2006/v6.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) 14801affcdSkaashoek Plan 9 (bootother.S, mp.h, mp.c, ioapic.h, lapic.c) 15801affcdSkaashoek FreeBSD (ioapic.c) 1682537b71Srtm NetBSD (console.c) 17801affcdSkaashoek 18801affcdSkaashoekThe following people made contributions: 19801affcdSkaashoek Russ Cox (context switching, locking) 20801affcdSkaashoek Cliff Frey (MP) 21801affcdSkaashoek Xiao Yu (MP) 22801affcdSkaashoek 23*2e898063SkaashoekThe code in the files that constitute xv6 are 24*2e898063SkaashoekCopyright 2006 Frans Kaashoek, Robert Morris, and Russ Cox. 25*2e898063Skaashoek 26*2e898063SkaashoekERROR REPORTS 27*2e898063Skaashoek 28801affcdSkaashoekIf you spot errors or have suggestions for improvement, please send 29801affcdSkaashoekemail to Frans Kaashoek and Robert Morris 30801affcdSkaashoek({kaashoek,rtm}@csail.mit.edu). This version is the very first one, 31801affcdSkaashoekso don't be surprised if there are errors or the code is unclear. 32641e29c5Skaashoek 33*2e898063SkaashoekBUIDLING AND RUNNING XV6 344d33ef86Srsc 354d33ef86SrscTo build xv6 on an x86 ELF machine (like Linux or FreeBSD), run "make". 364d33ef86SrscOn non-x86 or non-ELF machines (like OS X, even on x86), you will 374d33ef86Srscneed to install a cross-compiler gcc suite capable of producing x86 ELF 384d33ef86Srscbinaries. See http://pdos.csail.mit.edu/6.828/2006/tools.html. 394d33ef86SrscThen run "make TOOLPREFIX=i386-jos-elf-". 404d33ef86Srsc 414d33ef86SrscTo run xv6, you can use Bochs or QEMU, both PC simulators. Bochs makes 424d33ef86Srscdebugging easier, but QEMU is much faster. 434d33ef86SrscTo run in Bochs, run "make bochs" and then type "c" at the bochs prompt. 444d33ef86SrscTo run in QEMU, run "make qemu". Both log the xv6 screen output to 454d33ef86Srscstandard output. 464d33ef86Srsc 474d33ef86SrscTo create a typeset version of the code, run "make xv6.pdf". 484d33ef86SrscThis requires the "mpage" text formatting utility. 494d33ef86SrscSee http://www.mesa.nl/pub/mpage/. 504d33ef86Srsc 514d33ef86SrscHave fun! 52