Project 1b: Warm-up Project (xv6)

Important Dates and Other Stuff

Due: Monday, 9/26 by midnight.

This project is to be done by yourself.


Post questions to Piazza or ask in person during lab help hours or office hours. If the question is about your code, copy all of of your code into your handin directory (details below) and include your login in your email (you are free to modify the contents of your handin directory prior to the due date). Also include all other relevant information, such as cutting and pasting what you typed and the results from the screen. In general, the more information you give, the more we can help. If you use Piazza for questions, don't include code unless you are sure you are making the post private.


The project is found here. Please read this carefully in order to understand exactly what to do.

This project is to be done on the lab machines (listed here ), so you can learn more about programming in C on a typical UNIX-based platform (Linux).


This project should be done alone. Copying code (from others) is considered cheating. Read this for more info on what is OK and what is not. Please help us all have a good semester by not doing this.

The Code

The source code for xv6 (and associated README) can be found in ~cs537-1/public/xv6.tgz . Everything you need to build and run and even debug the kernel is in there. The way to make your own version is to do the following:

prompt> mkdir xv6
prompt> cd xv6
prompt> tar xvzf ~cs537-1/public/xv6.tgz

This will create an xv6-public directory in the xv6 directory. You can then cd into that and begin working.


We will make tests available as usual.

Handing It In

Put your entire xv6 source tree into your handin directory, under directory p1b . Then, change directories into the handin and make sure the tests still work. Finally, type 'make clean' so that the built kernel isn't left in place there.

When we cd into your p1b directory, we shouldn't see just an xv6/ directory; rather, we should see the xv6 source code (including the main Makefile, and all the .c, .h., .s files, etc.). For example:

prompt> cd ~cs537-1/handin/remzi/p1b
prompt> ls
asm.h elf.h init.c main.c printf.c sysfile.c usertests.c

Note: your results for ls don't have to look exactly like this, but should be similar and contain the import directories and makefiles.