EECS Account

I checked with EECS IT, and they said that everyone should have an account on the T-Lab machines. If you don't have access to your EECS account (i.e. you haven't set your password, or you forgot it), email root at eecs dot northwestern dot edu, provide your netid and student ID number, and say you want to set your account password for your account on the T-Lab for your EECS 343 OS class.

T-Lab Machines

T-Lab is physically located on the Tech side of the bridge between Ford and Tech. All machines, tlab-{01...18} are setup for dual boot to Windows XP and Red Hat Linux. Customarily, tlab-{11...18} are booted to Linux. When physically working at the T-Lab, you should be using one of these. T-Lab machine status is here (CS account login required).

Physical access to the T-Lab machines is restricted by a Wildcard scanner. I have verified with EECS IT that you should all have access to the T-Lab. Please let me know if you have problems.

SSH/SFTP

The best way to work on these projects if you're used to a GUI interface is to develop physically in front of the T-Lab machines. However, being comfortable working at the command line is a powerful skill, and the best (arguably! :) ) programming tools that are available are all usable from a terminal.

You can connect to any of the T-Lab machines via SSH, and access your home directory over SFTP.

Bash Shell Crash Course

Bash is the default shell for your CS account. When you connect to a machine via SSH or open a terminal from the GUI, you get a window with a prompt showing your current directory. It's a command line where you can run programs and work with files.

Some commands to know:

Also, you can use the tab key to auto-complete commands and filenames.

To check the usage of any command you can execute `man [command]` to see the manual page. Type 'q' to quit.

Newsgroup Access

The cs.343 newsgroup is a great resource for finding out what questions other students are currently having about the homework or projects. We will be making announcements and answering questions over the newsgroup. In addition, the group includes all messages archived back to the Fall '05 iteration of this class, so even if nobody's posted about a problem yet this year, it's likely that somebody has run into it in the previous 4 years!

There is no authentication on the CS news server, but access is restricted to IP addresses within Northwestern. To access the newsgroup from outside NU, you can connect to the VPN. Instructions are here.

Please configure your news client to use your real name and email address so we can contact you off-group if necessary.

uwhich Project

Project Goals:

Getting started:

  1. Download the handout and skeleton here (NU netid/password required).
  2. Move the skeleton to your home directory on the T-Lab machines. (You have a shared home directory across all the T-Lab machines.)
  3. Get in a shell, and extract the tarball: `tar xvzf uwhich.tar.gz`
  4. Change directory to the uwhich skeleton: `cd skeleton`
  5. Compile the project: `make`
  6. Open a file for editing: `emacs uwhich.c`

Suggested plan of attack:

  1. Observe the bug: `./uwhich ls`
  2. Use gdb to see where uwhich is crashing
  3. Fix the bug, recompile, and test that `./uwhich ls` no longer causes a segmentation fault
  4. Get the PATH string from the environment
  5. ...

Editing with Emacs

Emacs is a really powerful text editor. Among a plethora of other things, it does code highlighting and indentation, and it integrates with gdb to show you the source code that you're stepping through as you debug.

Here are some of the basic keyboard shortcuts you'll need to work in Emacs. There are plenty of others--see here for a quick reference guide. Google for a full manual. When you see "C-x", that means you hold control and press 'x'. The 'M' in "M-x" stands for 'meta', and is commonly mapped to the "Alt" key. Many of the Emacs commands have multiple steps; for example, "C-x C-f" is two separate commands strung together.

You interact with Emacs in the minibuffer--the line at the bottom of the screen. It will show commands as you type them, and ask questions (e.g. 'really quit without saving buffers?').

Basic keyboard shortcuts: