Tools Used in 6.828
If you use the MIT Athena machines that run Linux, then all the
software tools you will need for this course are located in the 6.828
locker: just type 'add -f 6.828' to get access to them. If
you would like to compile and run the tools on your own machine,
however, here is the information you need. We cannot
guarantee that these tools will run on your computer,
but they should run on recent versions of Linux.
It should be possible to get this development environment running
under windows with the help of
Cygwin. Install cygwin, and be
sure to install the flex and bison packages
(they are under the development header).
Most modern Linuxes and BSDs have an ELF toolchain compatible with
the 6.828 labs. That is, the system-standard gcc,
as, ld and objdump should just work. The
6.828 lab makefile should automatically detect this. However, if your
machine is in this camp and the makefile fails to detect this, you can
override it by adding the following line to conf/env.mk:
If you are using something other than standard x86
Linux or BSD, you will need the GNU C compiler toolchain, configured
and built as a cross-compiler for the target
'i386-jos-elf', as well as the GNU debugger, configured
for the i386-jos-elf toolchain. You can download the
specific versions we used via these links, although more recent
versions of gcc, binutils, and GDB should work too:
Once you've unpacked these archives, run the following commands as root:
# cd binutils-2.19
# ./configure --target=i386-jos-elf --disable-nls
# make install
# cd ../gcc-4.1.2
# ./configure --target=i386-jos-elf --disable-nls --without-headers \
--with-newlib --disable-threads --disable-shared \
# make install
# cd ../gdb-6.8
# ./configure --target=i386-jos-elf --program-prefix=i386-jos-elf- \
# make install
Then you'll have in /usr/local/bin a bunch of binaries
with names like i386-jos-elf-gcc. The lab makefile
should detect this toolchain and use it in preference to your
machine's default toolchain. If this doesn't work, there are
instructions on how to override the toolchain inside the GNUmakefile
in the labs.
QEMU is a modern and fast
PC emulator. QEMU version 0.10.6 is set up on Athena for x86 machines
in the 6.828 locker.
Unfortunately, QEMU's debugging facilities, while powerful, are
somewhat immature, so we highly recommend you use our patched version
of QEMU instead of the stock version that may come with your
distribution. The version installed on Athena is already patched.
To build your own patched version of QEMU:
- Download and unpack the pre-patched 0.10.6 source tarball.
- On Linux, you may need to install the SDL development libraries
to get a graphical VGA window. On Debian/Ubuntu, this is the
- Configure the source code
./configure [--prefix=PFX] [--target-list="i386-softmmu x86_64-softmmu"]
./configure --disable-sdl [--prefix=PFX] [--target-list="i386-softmmu x86_64-softmmu"]
prefix argument specifies where to install QEMU;
without it QEMU will install to /usr/local by default. The
target-list argument simply slims down the
architectures QEMU will build support for.
make && make install
Alternatively, you can download the official 0.10.6 source tarball
from the QEMU homepage and apply the following patches:
||Use DS-relative virtual addresses instead of linear addresses in the GDB stub.
||Fix "info mem" in the QEMU monitor to not skip the last mapped memory range.
||Add "info pg" to the QEMU monitor that prints the page table.
||Fixes bugs in QEMU's simulated E100 and adds E100 debugging.
||Adds packet capture support.
||Adds the -pcap and -debug-e100 command line options used by e100 and pcap.