Lab Setup Guide

Table of contents

Overview

In CS 3210, you will be hacking on the xv6 kernel, a teaching operating system. Every student will be provided with a fork of xv6 on their gatech GitHub accounts. Each lab will be implemented on a separate branch of the fork. It is highly recommended that you are comfortable with using git.

Environment Setup

You may use any of the following development environments.

Using docker

Follow the instructions described in the Lab 0 spec. We recommend this method.

Using a VM

As an alternative to using docker, you can use vagrant to set up your VM. Please note that this is more involved, so our recommendation is to use the docker method.

  • Install vagrant
  • Create a directory for your CS 3210 labs and cd into it. For demonstration purposes, we will be calling it cs3210-labs

      mkdir cs3210-labs
      cd cs3210-labs
    

    Inside this directory, download the Vagrantfile we provide.

  • Download the Ubuntu image

      vagrant init ubuntu/bionic64
      Boot up your vm
      vagrant up
      vagrant ssh
    

    This will boot you into an Ubuntu bash shell. Your local files (i.e., the files on your host machine) are located under /vagrant. You can now develop on your host machine and run commands inside the VM. To boot another terminal session, you can either run vagrant ssh in a separate terminal (pretty straightforward) or use tmux or screen within the Ubuntu shell (slightly more involved).

  • Install build dependencies
      sudo apt-get update \
      && sudo apt-get install -y --no-install-recommends \
              ca-certificates \
              sudo \
              git \
              build-essential \
              gcc-multilib \
              qemu \
              libvirt-bin \
              cmake \
              gdb
    

    apt-get is the package manager for Ubuntu.

    You can also use VirtualBox or VMWare to setup and boot your VM.

Local development

For Linux users, you shouldn’t face any troubles getting xv6 to build.

For MacOS users, we recommend that you do not develop locally.

For Windows users, you may use WSL.

Note about “How does this all work?”

This is slightly outside the scope of the course, but is nonetheless interesting. Feel free to stop by office hours. The TAs are more than happy to talk about it with you.

GitHub Setup

We will be using the Georgia Tech Enterprise GitHub for this course. You can clone repos using HTTPS or SSH keys.

  • Using HTTPS
    • git clone https://github.gatech.edu/cs3210-fall2024/
  • Using SSH
    • Add an SSH key to your GitHub account. Follow these steps
    • In the GitHub UI, select the Clone with SSH option (you can find this by clicking the green Code button and selecting SSH)
    • git clone