OPERATING SYSTEMS ICOMS W4118, Dept of Computer Science, Columbia University
Home | Announcements | Lectures | Homeworks | Grades | Discussion | Resources

OS RESOURCES
This page is designed to provide resources that will facilitate the programming assignments. There is information about C (the language in which most of the Linux kernel is written), a variety of links about Linux, information about the development environment and how to connect to it, and finally some tools for collaborating with your fellow group members.
LINUX RESOURCES
There are a huge number of linux resources available on the web that come from a large community of people who have worked with the linux kernel.
VMWARE RESOURCES
VMware is a virtual computer that emulates the hardware of a machine so that you can run an entirely different operating on top of one that is already running. This is ideal for operating system development because if something goes wrong with the system that is running on the virtual machine, the entire computer does not crash. VMWare will be installed on the machines in the CLIC Lab with linux already installed and ready to go. To use VMware on the CLIC machines, you will need to create a .vmware directory in your home directory and copy the vmware license file from ~w4118/.vmware/license to ~username/.vmware/license.
  • Using VMWare On Linux:
  • Connecting to the VM via telnet:
    VMWare allows the user to telnet into the virtual machine from the host machine. When the virtual machine is installed on the host machine, it is assigned an unused IP address. The best way to find out the IP address of the VM is on your machine is to boot up the virtual machine (using X or VNC) and type 'ifconfig' to get the IP information.
    Then you can use the IP address to FTP or Telnet into the machine from the host machine. This is only a local IP address, so you cannot telnet directly into the VM.
  • General VMWare Documentation:

C PROGRAMMING RESOURCES
The linux kernel is written almost entirely in C, so for those unfamiliar with C, here are some links that provide some explanations.
REMOTE ACCESS INFORMATION
The virtual machines on which you will need to do the kernel modifications required for the assignments are located in the CLIC Lab. VMWare requires X to run, so if you cannot work in the Clic Lab, you will need to connect to the VM remotely using one of the following methods.
  • X Client
    If you are running a Unix-based operating system or have an X Client running on your local computer, you can use X to access your virtual machine. X-Win32 is available for running X on Windows PCs. This is probably the easiest way to use VMWare, but you may run into firewall problems if you are off campus.
    To do this:
    1. On your local machine set your X Client to accept connections from the computer that you want to connect to. In Linux or Unix, type at the prompt ('mymachine' is the machine name ):
      $xhost +mymachine.clic.cs.columbia.edu
    2. Telnet into your machine in the CLIC lab
    3. If xxx.xxx.xxx.xxx is the IP address of your home computer, type:
      $ export DISPLAY=xxx.xxx.xxx.xxx:0.0
    4. From here you can run VMWare, Emacs, or any other application that requires X with no Problem.
  • VNC
    According to the VNC website: "VNC stands for Virtual Network Computing. It is, in essence, a remote display system which allows you to view a computing 'desktop' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures."
    There is a free client available for VNC, so it is very easy to access. It is also extremely lightweight and can save your session on the server in between logins. However, it can be slower over the network.
  • Terminal Services
    Microsoft Terminal Services client allows you to connect to a Microsoft Windows 2000 Server machine in much the same way as VNC, but with better performance over low-bandwidth networks. For CVN students only, we have four Windows 2000 Server machines which you can use with a CS account:
    • os1.clic.cs.columbia.edu
    • os2.clic.cs.columbia.edu
    • os3.clic.cs.columbia.edu
    From there, you can use VNC to connect to the Linux machine running your VM.
  • Telnet
    Once a virtual machine is up and running, you can telnet into it from the machine on which the VM is running. This requires that the VM be started either locally on the machine itself, or from a VNC or X session. Once this is done, the IP address can be used to connect to the VM after telnetting into the local machine. (See VMWare Info for info on how this works)

COLLABORATION TOOLS
All major programming projects will be done in groups of three. To facilitate collaboration among group members (some of whom may not be on campus), there are some resources available to help out. CVS and RCS are popular methods of retaining source code integrity. Also, Instant Messaging allows for quick communication, whether it be a commercial product or using the 'talk' command on the cunix or cs machines.
  • Source Code Management
    • CVS us a version control system that enables you to log all changes made to a body of source code. It also makes patches and does lots of cool stuff to keep track of your source code: CVS Manual
    • RCS is another version control system, but a little more lightweight. It allows files to be stored in a directory without downloading them to another directory: RCS Mini-HowTo
  • Instant Messenging


Jason Nieh, nieh@cs.columbia.edu