Carnegie Mellon
SCS logo
Computer Science Department

15-410 Software Setup Guide

Before you begin...

(15-410 Software Setup Guide)

This document describes the procedures you may follow to update your development environment for working on the projects in this course. Besides the tools described below, you will need access to the standard set of x86 C development tools (gcc, ld, etc.).

1. One-time Setup

A. Simics

Simics is the instruction set simulator inside which your projects will run. From your perspective, it is a full-fledged x86 machine whose display appears as an X application on your desktop. Although Simics runs on a variety of platforms, we recommend you work with it on Linux.

Simics is a commercial product with special license restrictions. CMU has obtained a number of academic licenses which allow hosts with 128.2/128.237/... IP addresses to run the simulator. If you have a non-128.2 IP address (e.g., Comcast), you will need to use the Computing Services VPN.

If you will be developing on a

  • AFS-connected Andrew Linux machine (dorms, clusters, etc.), no special steps are necessary. Simics is already fully set up on AFS and will run smoothly on Linux via a simple script we will provide in 410/bin.
  • Non-AFS-connected machine, you will need to get our Simics tarball (simics.tar.gz) from /afs/ or by downloading it here and untar (tar -zxvf) it on your own linux machine. No compilation is necessary -- the tarball contains a good-to-go binary. The Simics installation contained in it is fully self-contained; if you wish to uninstall it at any time, simply remove the entire directory. However, since every Linux machine is different, getting this to work on your machine will require some poking around and experimentation. The course staff may or may not be able to provide you with enough hints or suggestions to get this working; if you are not comfortable with installing software on your machine, reading and understanding linker error messages, etc., then you may need to use an officially-supported machine.

NOTE: Simics appears to perform very poorly on slow (less than campus Ethernet) links. If you experience this, you may want to consider installing Simics locally (refer to the instructions above for Non-AFS-connected machines).

B. Mtools

Simics simulates a real IDE hard drive using a disk image (.img) file. It will boot and run your kernel off a FAT-formatted "disk" represented by such a file. We will provide you with a raw disk image, but to test your code, your compiled kernel will need to be copied onto it using a utility called mcopy that is provided by the Mtools package. This copying process is automated in the Makefile provided to you in the project tarball.

If you do not have mtools installed, source and binaries are available here.

NOTE: Mtools is installed on most Linux machines, but if it is not present on yours, you will need to obtain it. Follow the link above.

2. For each project

You will probably need to edit UPDATE_METHOD in the to use "web" instead of "afs".

3. Other Important Information

A. gcc

Since we will be running and testing your code on Andrew Linux machines, you may wish to install the versions of the compiler and linker on your machine (run "gcc --version" and "ld --version"). Regardless, you are strongly advised to run your code on an Andrew Linux machine at least once a day.

4. Questions?

staff-410 at the CS domain

[Last modified Wednesday January 29, 2014]