{"id":78,"date":"2017-08-30T17:49:44","date_gmt":"2017-08-30T16:49:44","guid":{"rendered":"https:\/\/computenodes.net\/?p=78"},"modified":"2025-01-17T16:04:39","modified_gmt":"2025-01-17T16:04:39","slug":"bundling-singularity-within-a-yocto-image-for-the-raspberry-pi","status":"publish","type":"post","link":"https:\/\/computenodes.net\/2017\/08\/30\/bundling-singularity-within-a-yocto-image-for-the-raspberry-pi\/","title":{"rendered":"Bundling Singularity within a Yocto image for the Raspberry Pi"},"content":{"rendered":"

This guide serves as a basic introduction to using the Yocto project for building a custom Linux image for the Raspberry Pi. The Singularity containerisation engine is bundled within this image as an example, and because it is a nifty piece of software.<\/p>\n

In writing this, I assume the reader has some working knowledge of using the Linux command-line. I strongly recommend keeping your work inside a git repository: being able to revert back to a known-working version was a lifesaver on multiple occasions.<\/p>\n

What is Singularity?<\/h2>\n

In a nutshell, Singularity is a container platform built on the principle of mobility of compute. It is designed to be used on HPC clusters and, unlike Docker, it does not require root access to mount an image. In addition, it can use Docker images out-of-the-box and it can pull them from the Docker Hub. For more information, see the Singularity website<\/a>.<\/p>\n

Containers are a solution to the ever-present dependency problem: how do you make sure that the user has all of the software needed to run the program you are shipping? In general terms, containers work by bundling a specific operating system, alongside other necessary software, and running the target program using them.<\/p>\n

While Docker has become the most-used containerisation platform, Singularity is interesting for a couple of reasons:<\/p>\n