Skip to content

1 Getting Started

Cameron Durham edited this page May 22, 2020 · 1 revision

Welcome to the cs350-docker wiki!

System Requirements

Below are the system requirements for Docker Desktop:

Windows host:

  • Windows 10 64-bit: Pro, Enterprise, or Education (Build 15063 or later).
  • Hyper-V and Containers Windows features must be enabled.

If you are using Windows 10 Home, you can obtain a "free" license for Windows 10 Education here.

Mac host:

  • Mac hardware must be a 2010 or newer model
  • macOS must be version 10.13 or newer
  • 4 GB RAM minimum

Getting Started

First, install Docker desktop from the website. Once done, clone this repository.

Building the Image

Building the image should require two steps.

  1. specify your desired mount location (i.e. your xv6 project folder)
  2. build the image

Unix-based Users:

  1. Modify the run.sh file's work variable at the top of the file to be your project folder. For example:
work=~/projects/cs350/xv6-public-master/
  1. Run the run.sh script will check if you've built an image yet, then either build and start or just start the container:
./run.sh start

This script is only a wrapper for some simple Docker commands.

Windows Users: I need to still write some support for volume mounting. For now, please follow these steps:

  1. In docker-compose.yml, change line below the volumes rule to mount your desired project folder.

For example, change this:

    volumes:
        - ${work}:/xv6_docker/

to this:

    volumes:
        - C:\Username\xv6-public-master:/xv6_docker/
  1. Run this command to build the environment:
docker-compose up -d

Image Contents

You can test and build xv6 code in either a 32-bit or 64-bit environment. The docker-compose.yml builds from the Dockerfile build file, that uses a 64-bit Ubuntu as a base image.

  • qemu open source machine emulator and virtualizer for OS debugging
  • build-essential for C support
  • gdb for debugging, obviously
  • gcc-multilib for 32-bit library support
  • xv6-public a slimmed-down, simplified operating system based on UNIX v6
  • gcc since we need C support, of course!
  • rsync and openssh-server to sync with IDE's like CLion and easily connect to the environment
  • cmake for configurable makefile support
Clone this wiki locally