Skip to content
Mostly just a mirror of xv6 releases. The "fixes" branch has some minor improvements. THIS REPOSITORY IS VERY MUCH OUT OF DATE!
C Perl
Latest commit 8f49197 Mar 1, 2011 @phf Import of UPDATED xv6-rev5.tar.gz
5b7f926f18c0d7ba4d5152c6f0aff12e  xv6-rev5.tar.gz
Failed to load latest commit information.
.gdbinit.tmpl Import of xv6-rev4.tar.gz Feb 24, 2011
Makefile Import of xv6-rev5.tar.gz Feb 24, 2011
README Import of xv6-rev4.tar.gz Feb 25, 2011
asm.h Import of xv6-rev4.tar.gz Feb 25, 2011
bio.c Import of xv6-rev3.tar.gz Feb 24, 2011
bootasm.S Import of UPDATED xv6-rev5.tar.gz Mar 1, 2011
bootmain.c Import of xv6-rev5.tar.gz Feb 25, 2011
bootother.S Import of xv6-rev5.tar.gz Feb 25, 2011
buf.h Import of xv6-rev1.tar.gz Feb 24, 2011
cat.c Import of xv6-rev1.tar.gz Feb 25, 2011
console.c Import of UPDATED xv6-rev5.tar.gz Mar 1, 2011
data.S Import of xv6-rev5.tar.gz Feb 25, 2011
defs.h Import of xv6-rev5.tar.gz Feb 25, 2011
dot-bochsrc Import of xv6-rev3.tar.gz Feb 25, 2011
echo.c Import of xv6-rev1.tar.gz Feb 25, 2011
elf.h Import of xv6-rev3.tar.gz Feb 25, 2011
exec.c Import of xv6-rev5.tar.gz Feb 25, 2011
fcntl.h Import of xv6-rev1.tar.gz Feb 25, 2011
file.c Import of xv6-rev3.tar.gz Feb 25, 2011
file.h Import of xv6-rev3.tar.gz Feb 25, 2011
forktest.c Import of xv6-rev4.tar.gz Feb 25, 2011
fs.c Import of xv6-rev4.tar.gz Feb 25, 2011
fs.h Import of xv6-rev3.tar.gz Feb 25, 2011
gdbutil Import of xv6-rev4.tar.gz Feb 25, 2011
grep.c Import of xv6-rev1.tar.gz Feb 25, 2011
ide.c Import of xv6-rev5.tar.gz Feb 25, 2011
init.c Import of xv6-rev3.tar.gz Feb 25, 2011
initcode.S Import of xv6-rev3.tar.gz Feb 25, 2011
ioapic.c Import of xv6-rev3.tar.gz Feb 25, 2011
kalloc.c Import of xv6-rev5.tar.gz Feb 25, 2011
kbd.c Import of xv6-rev3.tar.gz Feb 25, 2011
kbd.h Import of xv6-rev1.tar.gz Feb 25, 2011
kill.c Import of xv6-rev3.tar.gz Feb 25, 2011
lapic.c Import of xv6-rev4.tar.gz Feb 25, 2011
ln.c Import of xv6-rev1.tar.gz Feb 25, 2011
ls.c Import of xv6-rev1.tar.gz Feb 25, 2011
main.c Import of xv6-rev5.tar.gz Feb 25, 2011
mkdir.c Import of xv6-rev1.tar.gz Feb 25, 2011
mkfs.c Import of UPDATED xv6-rev5.tar.gz Mar 1, 2011
mmu.h Import of xv6-rev5.tar.gz Feb 25, 2011
mp.c Import of xv6-rev5.tar.gz Feb 25, 2011
mp.h Import of xv6-rev1.tar.gz Feb 25, 2011
multiboot.S Import of xv6-rev5.tar.gz Feb 25, 2011
param.h Import of xv6-rev5.tar.gz Feb 25, 2011
picirq.c Import of xv6-rev4.tar.gz Feb 25, 2011
pipe.c Import of xv6-rev5.tar.gz Feb 25, 2011
pr.pl Import of xv6-rev3.tar.gz Feb 25, 2011
printf.c Import of xv6-rev1.tar.gz Feb 25, 2011
proc.c Import of xv6-rev5.tar.gz Feb 25, 2011
proc.h Import of xv6-rev5.tar.gz Feb 25, 2011
rm.c Import of xv6-rev1.tar.gz Feb 25, 2011
runoff Import of xv6-rev4.tar.gz Feb 25, 2011
runoff.list Import of xv6-rev5.tar.gz Feb 25, 2011
runoff.spec Import of xv6-rev1.tar.gz Feb 25, 2011
runoff1 Import of xv6-rev5.tar.gz Feb 25, 2011
sh.c Import of xv6-rev4.tar.gz Feb 25, 2011
sign.pl Import of xv6-rev0.tar.gz Feb 24, 2011
spinlock.c Import of xv6-rev5.tar.gz Feb 25, 2011
spinlock.h Import of xv6-rev3.tar.gz Feb 25, 2011
stat.h Import of xv6-rev3.tar.gz Feb 25, 2011
stressfs.c Import of xv6-rev5.tar.gz Feb 25, 2011
string.c Import of xv6-rev4.tar.gz Feb 25, 2011
swtch.S Import of xv6-rev3.tar.gz Feb 25, 2011
syscall.c Import of UPDATED xv6-rev5.tar.gz Mar 1, 2011
syscall.h Import of xv6-rev4.tar.gz Feb 25, 2011
sysfile.c Import of xv6-rev5.tar.gz Feb 25, 2011
sysproc.c Import of xv6-rev4.tar.gz Feb 25, 2011
timer.c Import of xv6-rev3.tar.gz Feb 25, 2011
toc.ftr Import of xv6-rev5.tar.gz Feb 25, 2011
toc.hdr Import of xv6-rev1.tar.gz Feb 25, 2011
trap.c Import of xv6-rev5.tar.gz Feb 25, 2011
trapasm.S Import of xv6-rev3.tar.gz Feb 25, 2011
traps.h Import of xv6-rev4.tar.gz Feb 25, 2011
types.h Import of xv6-rev4.tar.gz Feb 25, 2011
uart.c Import of xv6-rev3.tar.gz Feb 25, 2011
ulib.c Import of xv6-rev5.tar.gz Feb 25, 2011
umalloc.c Import of xv6-rev5.tar.gz Feb 25, 2011
user.h Import of xv6-rev5.tar.gz Feb 25, 2011
usertests.c Import of xv6-rev5.tar.gz Feb 25, 2011
usys.S Import of xv6-rev4.tar.gz Feb 25, 2011
vectors.pl Import of xv6-rev3.tar.gz Feb 25, 2011
vm.c Import of xv6-rev5.tar.gz Feb 25, 2011
wc.c Import of xv6-rev1.tar.gz Feb 25, 2011
x86.h Import of xv6-rev4.tar.gz Feb 25, 2011
zombie.c Import of xv6-rev1.tar.gz Feb 25, 2011

README

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 x86-based multiprocessor using ANSI C.

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 http://pdos.csail.mit.edu/6.828/2007/v6.html, which
provides pointers to on-line resources for v6.

xv6 borrows code from the following sources:
    JOS (asm.h, elf.h, mmu.h, bootasm.S, ide.c, console.c, and others)
    Plan 9 (bootother.S, mp.h, mp.c, lapic.c)
    FreeBSD (ioapic.c)
    NetBSD (console.c)

The following people made contributions:
    Russ Cox (context switching, locking)
    Cliff Frey (MP)
    Xiao Yu (MP)
    Nickolai Zeldovich
    Austin Clements

In addition, we are grateful for the patches contributed by Greg
Price, Yandong Mao, and Hitoshi Mitake.

The code in the files that constitute xv6 is
Copyright 2006-2007 Frans Kaashoek, Robert Morris, and Russ Cox.

ERROR REPORTS

If you spot errors or have suggestions for improvement, please send
email to Frans Kaashoek and Robert Morris (kaashoek,rtm@csail.mit.edu). 

BUILDING AND RUNNING XV6

To build xv6 on an x86 ELF machine (like Linux or FreeBSD), run "make".
On non-x86 or non-ELF machines (like OS X, even on x86), you will
need to install a cross-compiler gcc suite capable of producing x86 ELF
binaries.  See http://pdos.csail.mit.edu/6.828/2007/tools.html.
Then run "make TOOLPREFIX=i386-jos-elf-".

To run xv6, you can use Bochs or QEMU, both PC simulators.
Bochs makes debugging easier, but QEMU is much faster. 
To run in Bochs, run "make bochs" and then type "c" at the bochs prompt.
To run in QEMU, run "make qemu".

To create a typeset version of the code, run "make xv6.pdf".  This
requires the "mpage" utility.  See http://www.mesa.nl/pub/mpage/.
Something went wrong with that request. Please try again.