CSE logo University of Washington Computer Science & Engineering
 CSE 374 Programming Concepts and Tools - Getting Started with Linux - Winter 2012
  CSE Home   About Us    Search    Contact Info 

This document gives some basic information about getting started with Linux. Please let us know what we need to change or add as you discover what works, what doesn't, and (even better) what could be improved.

The good news is that there are many, many ways to get access to a usable Linux system. The bad news is that there are many, many ways to get access to a usable Linux system. That means you may run into problems that are due to your individual setup and it may be hard for us to help you diagnose exactly what is going on, particularly if it involves a remote connection from home. The UW CSE virtual machines are an attempt to solve this problem and give everyone a standard workable configuration.

The bottom line is actually pretty simple. You need to be able to open a window that runs bash, the standard Linux shell, and has editors, compilers, and other tools that allow you to create and run shell scripts and C/C++ programs. Almost any relatively recent Linux distribution will be fine for almost all projects, and there are easy ways to set up your personal machine to run the necessary tools even if your own computer is not a Linux machine. (However, see below for more about the CSE virtual machines, which we will use as the reference system for this course.)

UW CSE Home Virtual Machines

CSE provides a Linux virtual machine image (a set of files) that you can run on your computer. See the UW CSE Home Virtual Machines web pages for details, specifically the ones describing the Linux VMs. The files are quite large (6 to 8 GB) so you will probably want to download them on campus and put them on your laptop or a thumb drive to carry home. You will need either VMware player (free download) for Windows or VMware Fusion ($50 at the bookstore) for Mac OS X to run the VM image. Details are on the CSE VM web pages.

The CSE Linux VM is a recent version of 64-bit Fedora Linux, configured roughly the same as the Linux machines in the CSE department labs. We encourage you to use the CSE VM since it provides a standardized environment that we are more likely to be able to help you with problems. The 64-bit Linux VM does require a moderately recent processor with 64-bit capabilities, but any computer with an Intel Core 2 Duo or more recent processor, or equivalent from other manufacturers, should work fine. For almost all assignments you can also use a 32-bit version of Linux on an older processor (and an older 32-bit CSE Linux VM is still available if you want to use it), but there will be at least one assignment where 64-bit code will be needed because of some low-level memory management details.

Once you have the VM running you can do your development there just as you can on a dedicated Linux machine. You can either copy files over the network (scp), use Firefox or another web browser to submit assignments from inside the VM, or drag-and-drop files between the virtual Linux desktop and the desktop on your host machine.

We will use the CSE Linux VM as the reference system for developing and grading projects, so even if you don't use this system routinely for your development work, you should check that your assignments run properly on it before you turn them in.

Access to Campus Linux Machines

All students traditionally have accounts on the central UW machine dante.u.washington.edu. This machine is running Red Hat Linux. Once you've connected and see the logon screen, enter s to get a shell window. (This may be phased out at some point, but probably still works this year - let us know if that has changed.)

Many students in CSE 374 are EE majors. The EE department maintains a collection of Linux workstations known as linux01.ee.washington.edu through linux17.ee.washington.edu. Several of these are in the EE computing lab and all can be accessed remotely via a ssh login if you have an EE account.

Depending on your setup, you may be able to run X-windows remotely on the EE and some other machines (but not dante). That gives you the ability to open multiple windows and other conveniences, but is not necessary for this class.

We have not checked any of these systems recently to verify whether they are running 32- or 64-bit Linux systems. You will need to check that on your own, but please help each other out by posting any discoveries (pleasant or otherwise) on the course discussion board.

Getting a Linux Shell on Windows

We recommend using the CSE Linux VM. There are other ways to get a running shell on a Windows machine either locally or by remotely logging in to other machines but these tend to be harder to configure. However, if you insist, here are some ways to do it. If you run into problems you are mostly on your own.

The cygwin package (http://www.cygwin.com/) installs on Windows and provides bash, gcc, and all of the other tools we need. You will have to explicitly select some packages in the installer, since not everything we use is part of a default installation, but if you later discover you need something you didn't include previously you can rerun the installer and add it. Cygwin also includes ssh (select the openssh package), so you can use it for remote login and file transfer to the campus machines without installing other communications programs.

If you want to run a full Linux distribution without using the VM, you can always set up your computer as a dual-boot machine, where you can select Linux or Windows each time you restart.

Getting a Linux Shell on a Mac

The CSE Linux VM works well on a Mac using VMware Fusion. But also, underneath the spiffy graphical user interface, OS X is a Unix machine and most of the work for this class can be done directly in a terminal window on the Mac.

Install the optional Xcode development tools. If you are running OS X 10.6 or earlier, either install the version that came with your mac, or, better, download the most recent version for your version of OS X from http://developer.apple.com/resources/ (click on Mac OS X Downloads; free signup required). If you're running OS X 10.7 Lion, the most recent version of the developer tools is a free download from the App Store. (Warning: the Xcode installer is a couple of GB in size so you'll want to have access to a high-speed net connection when you download it.) Once you've installed Xcode you're all set. Open the Mac terminal application to get a shell window and you can use the same command line tools (gcc, gdb, make, etc.) found on Linux systems.

Copying Files Across the Network

You may find that you want to move files from one machine (say at home) to another (say in the lab). While you can mail the files as attachments or use other schemes, a more direct way is to use the scp command. This command uses the same remote login authentication as ssh, and allows you to copy files to or from any remote machine where you would have permission to copy if you were logged in to that machine directly.


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to Hal Perkins]