Setup for the practical labs and project


Table of Contents


Latest update: November 10, 2025


Introduction

Please make sure to read these important guidelines below before the first lab session.

The first and main parts of the lab/project works for this course will be focused on studying virtual machines and hypervisors (as opposed to containers, which will be studied later in the semester).

These assignments on virtual machines are the ones with the most specific requirements in terms of lab testbed. In particular, we will work on Intel x86 hardware.

Notes:

The practical lab/project assignments about virtual machines and hypervisors will be based on Linux and its KVM kernel module. KVM allows using Linux as a hypervisor in order to execute guest virtual machines (in addition to native applications, as usual).

In principle, all recent major Linux distributions should provide the appropriate support for KVM (but it is not necessary pre-installed by default – so you may have to install it, as discussed below).

Notes:


Testbed: 3 main options

In terms of test setup, there are 3 main options to work on this lab:

Below, we discuss each of these options in turn.

Option 1: Using Linux running natively on your own laptop

This is the simplest setup, if you already have a Linux system installed natively on your machine (typically because you use Linux as your main OS or because you have a dual-boot setup).

Note that we will NOT modify the host Linux kernel during these labs. So choosing this setup should not introduce any stability/safety/security issue on your system.

Note: Given that KVM leverages hardware virtualization features, you will have to check in the BIOS/UEFI of your laptop that the hardware virtualization features are indeed enabled. (If you have already successfully used a virtualization solution on your laptop before, this verification step is of course not necessary.)

Option 2: Using Linux on a virtual machine running on your own laptop

In this setup, you will run Linux in a guest virtual machine (hereafter named “G1” for “Guest-Level1”) above your host operating system (Windows or MacOS). And the G1 virtual machine runs Linux with the KVM hypervisor that is itself used to launch and manage a virtual machine (hereafter called “G2”, for “Guest-Level2”). In other words, this setup will be based on a form of so-called “nested virtualization”.

This setup might be a more practical alternative to the previous one, especially if you do not have a native Linux installation and/or if you already have a Linux system installed in a virtual machine. However it introduces some specific requirements:

Note: Given that the virtualization software stack (including KVM and Virtualbox) leverages hardware virtualization features, you will have to check in the BIOS/UEFI of your laptop that the hardware virtualization features are indeed enabled. (If you have already successfully used a virtualization solution on your laptop, this step is not necessary.)

Option 3: Using Linux on another machine

In this option, you will use your own laptop (or a machine in a lab room of the University) to connect (via SSH) to a physical machine (a server) running Linux natively, on which you will use KVM to launch virtual machines.

This setup is a bit more complex to use but can be a fallback option if the two previous setups are not possible solutions in your situation.

We will provide you with an account on the “Grid'5000” testbed (also known as “G5k”). G5k is academic testbed for experiment-driven research in all areas of computer science, with a focus on parallel and distributed computing, including Cloud, HPC, Big Data and AI. This testbed can also be used for teaching purposes.

Using your G5k account, you will have the possibility to:

Note that:

The guidelines regarding your G5k account will be sent to you by email.

You will find below some useful resources about G5k:

Note: The BIOS/UEFI of the G5k machines is already configured to enable hardware virtualization support.


Required packages

In any case (for each of the 3 testbed options discussed above), it will be necessary to install several packages in order to complete the exercises of the labs.

KVM

The main dependency for the labs and project is the KVM kernel module for Linux. The precise steps and package names to be installed depend on the Linux distribution that you use. So we advise you to look for an appropriate tutorial (corresponding to your own Linux distribution). Among others, the tutorials below may be helpful.

Note that, in the labs, we will actually only use the KVM module itself (most of these tutorials also suggest you to install additional tools and libraries that facilitate the management and administration of virtual machines – we will not need them for our labs).

Other packages

In the context of the labs, beyond KVM, we will only use a small set of well-known packages:

You can use your usual/favourite package manager to install them.

Note: During some steps of the labs, a few other software components will be necessary. We will explain how to download and install them when necessary.