To install Nachos you need to:

1. download Nachos sources

2. unpack. (suppose you saved the source in file "nachos.tar.gz")

   % gunzip -c nachos.new.tar.gz | tar xvf -

the output should look like:

-----------
x Nachos/Makefile, 1167 bytes, 3 tape blocks
x Nachos/Makefile.common, 3977 bytes, 8 tape blocks

...

x Nachos/machine/translate.cc, 8253 bytes, 17 tape blocks
x Nachos/machine/sysdep.cc.orig, 14239 bytes, 28 tape blocks
----------

3. compile.
 

  % cd Nachos
  % make

if the compilation is successful the output looks like:

----------------
        cd threads; /local/opt/gcc/bin/make depend
g++ -I../threads -I../machine -DTHREADS -DHOST_SNAKE -DHOST_IS_BIG_ENDIAN -DCHANGED -M ../threads/main.cc ../threads/list.cc ../threads/scheduler.cc ../threads/synch.cc ../threads/synchlist.cc ../threads/system.cc ../threads/thread.cc ../threads/utility.cc ../threads/threadtest.cc ../machine/interrupt.cc ../machine/sysdep.cc ../machine/stats.cc ../machine/timer.cc > makedep
echo '/^# DO NOT DELETE THIS LINE/+2,$d' >eddep
echo '$r makedep' >>eddep
echo 'w' >>eddep
ed - Makefile < eddep
rm eddep makedep
echo '# DEPENDENCIES MUST END AT END OF FILE' >> Makefile
echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY' >> Makefile
echo '# see make depend above' >> Makefile
        cd threads; /local/opt/gcc/bin/make nachos
g++ -g -Wall -Wshadow -fwritable-strings -I../threads -I../machine -DTHREADS -DHOST_SNAKE -DHOST_IS_BIG_ENDIAN -DCHANGED -c ../threads/main.cc

...

g++ -g -Wall -Wshadow -fwritable-strings -I../threads -I../machine -DTHREADS -DHOST_SNAKE -DHOST_IS_BIG_ENDIAN -DCHANGED -c ../machine/interrupt.cc
g++ -g -Wall -Wshadow -fwritable-strings -I../threads -I../machine -DTHREADS -DHOSas -o switch.o swtch.s
as: "swtch.s", line 150: warning 44: Value for ACCESS was not specified for this new .SUBSPA directive.
g++ main.o list.o scheduler.o synch.o synchlist.o system.o thread.o utility.o threadtest.o interrupt.o stats.o sysdep.o timer.o switch.o  -o nachos
----------------

4. test

   % cd threads
   % ./nachos

which should produce the following output
----------------
*** thread 0 looped 0 times
*** thread 1 looped 0 times
*** thread 0 looped 1 times
*** thread 1 looped 1 times
*** thread 0 looped 2 times
*** thread 1 looped 2 times
*** thread 0 looped 3 times
*** thread 1 looped 3 times
*** thread 0 looped 4 times
*** thread 1 looped 4 times
No threads ready or runnable, and no pending interrupts.
Assuming the program completed.
Machine halting!

Ticks: total 130, idle 0, system 130, user 0
Disk I/O: reads 0, writes 0
Console I/O: reads 0, writes 0
Paging: faults 0
Network I/O: packets received 0, sent 0

Cleaning up...
----------------

5. read the code

There are two subdirectories of the Nachos directory:
   * machine - implements the machine on which the OS is supposed
               to run (a variant of MIPS)
   * threads - implements Kernel threads.

The first project would involve reading and modifying the threads
code. Therefore it is helpful to gain some understanding of it.
Use Nachos links from the course's webpage to help you. In particular
"Reading Nachos Source Code" by Michael O'Donnell should be helpful