Generating disk images
The operating system images for the Raspberry Pis and the cloud application are automatically generated using vmdb2. To install it and other build requirements run:
$ sudo apt install make vmdb2 qemu-system qemu-user-static openssl debian-keyring
We will be using the official Debian repositories instead of Raspbian on the Raspberry Pis, this means that first-generation Raspberry Pis, which use an older CPU, will not work with the generated image file.
The cloud image is also based on Debian and is expected to run in a virtual machine in the same network as the Raspberry Pis, or at least be reachable by them.
To generate the image file change into the directory containing
the image descriptions and run
make to generate the image
$ cd ~/Downloads/nota-lab/disk_images $ make
Note: On a computer with a spinning harddrive (e.g.: not an SSD) this process can take hours, and you will have to check then and now if you have to enter your password.
You may need to enter a password multiple times as parts of the build
sudo to gain root priviliges.
While the Raspberry Pi image is building you can follow the status using the following command:
$ sudo tail -n 1000 -f ~/Downloads/nota-lab/disk_images/rpi_student.img.log
While the Cloud image is building you can follow the status using this command instead:
$ sudo tail -n 1000 -f ~/Downloads/nota-lab/disk_images/vm_server.img.log
If everything goes well you should, after some minutes,
end up with a file called
rpi_student.img and another
The server setup should be performed first as the Raspberry Pi setup instructions expect the server to be available.
The cloud image can be set as the harddisk image in your virtualization environment of choice. You may also have some luck with writing the image to an USB drive like you would write the Raspberry Pi image to an SD card and boot from that drive.
To simplify the setup the network should be setup to be bridged to the ethernet interface of the server.
To test the image without the necessary network setup you can also try running:
$ make run_server
Server first boot
On the first start the image will ask some
questions and setup a
tutor account with
a provided password.
Raspberry Pi setup
You can flash the Raspberry Pi images on an SD-Card with a
command like the following:
$ sudo dd if=~/Downloads/nota-lab/disk_images/rpi_student.img bs=8M of=/dev/sd_
Where you replace
/dev/sd_ by the drive name of your SD-Card
as discovered by e.g.
dmesg -w or
The Raspberry Pi file will be 7Gb large, so that it will fit safely
on an 8Gb SD-Card. If you need more storage space you may
resize2fs on the running Raspberry Pi,
if you need the image to fit on smaller cards you can change
the first lines of
rpi_student.vmdb to generate a different
Raspberry Pi first boot
Upon first boot the Raspberry Pis will ask some questions regarding the keyboard layout and timezone.
For most questions you can go with whatever
the example says, note however that the
keyboard layout is not set before the first reboot,
so you will have to deal with an american keyboard layout
/ character is left of the right shift key.
The ids you give the setup script have to be unique in the lab as the hostname and WiFi SSID will be derived from them. You can however use characters or numbers or whatever suits you best.
When you are done answering questions
the Pi will reboot and you can log in using
student account and the password you provided.
When asked about the xfce4-panel configuration answer “Use defaults”.
Finally we have to work around a quirk in the firefox
version used that makes it difficult for image builders
to install custom certificates and easy for enduser, which
totally stupid their design decision.
With the cloud server running in the same network perform the following steps in the webbrowser to install the certificate:
You can also perform this step on other computers in the network in order to access the lab materials from them.
You should run the image creation process each year before the lab takes place to stay on top of security updates.
Even if you do not generate a new image you should at least re-flash the image to the SD-Cards to make sure the students work in a fresh environment.