Computer Science

Faculty of Engineering, LTH

Denna sida på svenska This page in English


If you have questions, please ask them during the alloted office hours, lectures, lab sessions or via mail. The office hours dedicated to the course are shown in the Time Schedule, during which time you will find me in the Zoom room for the EDAF35 course.

How to Save Lab Assignment Progress with Docker?

First, note that even if you exit a container, it usually still hangs around until you actually prune it! You can list all your containers with docker ps -a. You can restart a container you exit with docker container restart ID. To clear the space of all the containers not running, you can use docker container prune. To get a console to a running container use docker attach ID.

At any point, using git to manage your source code is a very good idea!

  1. Inside the Docker container, inside the ~/pintos directory, run git init
    This should return "Reinitializing the git repository"
  2. Set your personal repository using git remote add <name> <URL>
  3. If there is already something on that remote repository, you will need to git fetch and git merge them.
  4. This first time you merge, you may need to set the --allow-unrelated-histories flag to allow the unrelated Git histories to merge together.
  5. Push your changes to the remote repo you set with git push <name>
  6. This will push all of the pintos code, documentation, etc. up to Git.
  7. Then you should be able to commit just your changes and push up.
These are not necessarily complete, as I don't remember exactly what I did.
I also already had a history in the remote repo, so I had to merge the histories during the first merge.
This has a problem where if the container crashes anyways, the work is lost.
Also, every time the container is started, the remote git repository will need to be reconnected to the container by a adding the <name> remote repository again, fetching changes, and merging them in.

Karl Hallsby
BS Computer Engineering 2022
MS Computer Engineering 2022
Illinois Institute of Technology

A. You can also modify the Dockerfile used to build the labs container and add your own git setup, so that everytime you start the container it will have the right version of your code. You may also want to customize this as you see fit. Please keep this private.

B. Alternatively (to changing the Dockerfile and rebuilding the container), you can also create a snapshot of your container, after you set up the remote repo and pushed your changes (see how in Lab 0 hints). You can now continue working, commiting and pushing to the remote as you see fit. Once you exit the container, to start working next time, use the snapshot to start from and git pull from your repo.

C. Probably the easiest way to work on your code is to use a Docker volume to store your files. The simplest way to do this is to start your container with a volume pointing to a local directory: docker run -it -v /path-on-your-host/my-pintos-src:/home/pintos/work edaf35/edaf35-2020 This will share the 'my-pintos-src' directory from your host and mount it as the 'work' directory in the container. You should be able to change the contents of this directory in both the host and your container. You can then clone the git repository here and use version control in this directory. Once you are done with the container, the directory will remain on the host.

What is Zoom?

Zoom is a video conferencing service where you login with your StiL identity.

You can now create a Zoom account by clicking on "Login" on the University Zoom page, here:

Please note that you should NOT register directly via, but via the link above. This way, activate your StiL identity in Zoom.

The software needed is normally downloaded automatically in your first meeting. If this still does not work, use after download link and seller "Zoom client for meetings":

Try to book yourself in a meeting with one or more friends, so you can see how it works. It is an advantage if you are familiar with Zoom when you connect. At the same time, of course, we are prepared for some technical hassle, especially now at the start. It's okay if not everything gets right from the start.