We have intentionally tried to keep the documentation as lean as possible in order to avoid overwhelming users with the technical details. Now we have a little space, let’s get into some more specifics around what the Block does, and how.
At the base of our project is Balena, an open-source project and set of tools for building, deploying and managing fleets of Blocks. Each Block runs BalenaOS, based on Yocto Linux but heavily customised for reliability and low resource Blocks. It is a read-only OS to avoid risks of corrupting data on SD memory cards and to minimise writes to the Block. Within the OS is a bespoke variation of Docker to run required services in isolated containers. The result is an extremely stable and durable operating platform (so stable in fact, it is even used in space!).
Updates are installed automatically and in the background. Individual layers of each container are updated rather than the entire container in order to reduce data usage. Only after installations complete successfully are previous versions removed in order to ensure maximum uptime and to reduce risks of Blocks being corrupted if disconnected during updates.
Updates are triggered at key intervals such as when the Block loads. This ensures the data usage required during everyday operation of the Block is as low as possible.
This service is not required by your Blocks to operate, you can run entirely offline by not connecting to a nearby internet enabled WI-FI Network.
One of the core functions of the Learner’s Block is the ability to host your own website. Running on each Block is NGINX and PHP8-FPM ready to serve your files as soon as you drop them in the ‘website’ folder through the File Manager accessed in your browser.
Each Block type will use slightly different amounts of resources, although all hover around 2-3GB of storage and 250MB of RAM in order to run the base Learner’s Block platform. SWAP memory is disable in order to reduce memory card wear.