/Determinator

Experimental operating system for deterministic parallel computing

Primary LanguageC

Determinator Source Tree


Introduction
~~~~~~~~~~~~
This README contains basic information about configuring, building, and running
Determinator.  For more information about the design of the Determinator OS,
please see the Determinator home page:

	http://dedis.cs.yale.edu/2010/det/

The current version of Determinator runs on the x86-64 architecture only,
and is intended to be a research prototype for ongoing experimentation.

Determinator is derived from PIOS (http://zoo.cs.yale.edu/classes/cs422/pios),
an instructional operating system for the x86-32 architecture.
If you are an OS instructor and would like to get the "instructor's edition"
of the smaller and simpler, original 32-bit version of PIOS
for use in a course, please contact Bryan Ford (bryan.ford@yale.edu).


Prerequisite Tools
~~~~~~~~~~~~~~~~~~
If you're running on an x86-based Linux system (either 32- or 64-bit),
then just make sure you have the standard GCC and QEMU packages installed
and you should have all the tools you need.

If you're running on another OS whose native object format is not ELF
(e.g., on a Mac), then you'll need to download GNU binutils and gcc,
and build and install them as a cross-compiler configured for the
target 'i386-elf'.  See the section later in this README for details.


Cross-Compiler Tools
~~~~~~~~~~~~~~~~~~~~
If your OS's native version of GCC doesn't support the i386_elf target,
you'll need to build a cross-compiler toolchain.  To do this, download
a recent version of the GNU binutils and gcc distributions from
http://ftp.gnu.org/, and configure, build, and install them for the
target 'i386-elf'.  You only need the C compiler from the GCC
distribution; you can specify '--enable-languages=c' to the configure
command to avoid building everything else.  Also, note that recent
versions of GCC require the GMP and MPFR libraries, which come with
typical Linux distributions or Mac Ports, for example.

As one specific procedure, the following commands seem to work on
Mac OS X 10.6.4, though your mileage may vary.

(Install prerequisite packages using Mac Ports)
$ sudo port install gmp mpfr

(Install binutils)
$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2
$ tar xvjf binutils-2.20.1.tar.bz2
$ cd binutils-2.20.1
$ ./configure --target=i386-elf --disable-werror
$ make
$ sudo make install
$ cd ..

(Install GCC)
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-core-4.5.1.tar.bz2
$ tar xvjf gcc-core-4.5.1.tar.bz2
$ cd gcc-4.5.1
$ ./configure --target=i386-elf --enable-languages=c \
	--with-mpfr=/opt/local --with-gmp=/opt/local
$ make
$ sudo make install
$ cd ..