Before you begin...
(15-410 Software Setup Guide)
The "gold standard" software environment for working on projects for
this class is the Linux installed on cluster machines in Gates-Hillman,
Wean Hall, West Wing, and various other places
This is the environment we will use to grade your work, so it is important
that you develop and test your code in that environment.
In the past some students spent substantial energy on attempting to replicate
randomly-selected parts of that environment (compiler/linker/debugger toolchain,
libraries, assorted utilities, and a Simics installation) on personal machines.
This often spilled over to involve members of the course staff, and it was
frequently the case that a student would set up an environment that would work
in many situations but mysteriously fail late in the semester.
We recommend that students use Linux machines in on-campus clusters,
augmented by remotely accessing campus Linux machines via SSH,
or else run a copy of Andrew Linux in a virtual machine.
Cluster Linux Machines
If you are using a Linux machine in a cluster supported by SCS/Computing Services,
and have followed the Project Zero directions for ensuring that
/afs/cs.cmu.edu/academic/class/15410-f17/bin is on your $PATH.
you should be able to launch Simics from a terminal window via the appropriate
shell script, e.g., simics46.
SSH into LINUX.ANDREW from a Linux or OS X machine
If you are on campus, or "near" campus (in a network-latency sense),
you can probably work reasonably effectively over an SSH connection to
a machine in the LINUX.ANDREW.CMU.EDU pool of cycle servers.
Please don't run Simics on more than one LINUX.ANDREW machine at a time,
or run multiple copies on a single machine.
To use Simics via SSH, you will need to invoke ssh with the -X
and/or -Y flags (consult the SSH documentation).
If you are SSH'ing into an Andrew Linux machine with X forwarding,
you should be aware that recent versions of SSH will shut down the
remote machine's access to your X display after a very brief period of
inactivity. In some sense this increases security, but not all that much,
and it definitely reduces usability. You may wish to specify a longer
inactivity timeout when you connect. There are two ways you can do this:
- You can specify a longer timeout on the command line every time you
ssh -X -o 'ForwardX11Timeout 20m' LINUX.ANDREW.CMU.EDU
(for a 20-minute timeout), or
- You can make an entry in your $HOME/.ssh/config file on the machine you are connecting from:
SSH into LINUX.ANDREW from a non-Unix machine
To make this work you will need an SSH client and also an X Windows
package. Consult local enthusiast users of the OS of your choice for advice.