This repository includes scripts used for building Linux images used on Shells™.
To run these scripts you need to have relevant packages installed on your machine:
sudo apt install git qemu qemu-utils qemu-system php8.1 debootstrap squashfs-tools jq
After which you clone this repo and run the build (and test scripts).
This script will build an image for a given distibution.
For example:
./build_image.sh ubuntu-focal-ubuntu-desktop
For list of currently available builds, take a look at official_images.txt.
This repository now includes experimental support for additional operating systems and specialized environments:
- Slackware Linux: Traditional Linux distribution templates (
slackware-*) - OpenCog Environment: AI/cognitive science optimized Ubuntu (
ubuntu-*-opencog-*)
- Docker Deployment Examples - Using Shells with containerized workflows
- Experimental Operating Systems - Research into unusual OS support
- Testing Experimental Images - How to test experimental configurations
- GitHub Repo Deployment Structure - Structure repos for Shell deployment
Note: Experimental configurations may have limitations and are primarily intended for educational and research purposes.
For detailed configuration information and templates, see the templates directory.
For comprehensive guidance on creating Shells images, see our detailed tutorial:
This tutorial covers:
- Creating images from existing Shells
- Moving from Virtual Machines
- Running your own kernel
- Available configurations and templates
Each supported image configuration has a detailed template with build instructions, requirements, and testing guidance. Templates are automatically generated and organized by distribution in the templates/ directory.
Shells wants to help Linux community as much as it can, so if you would like to see your own distribution on the list, submit PR with it and we will gladly merge it. Be sure to read about some simple rules around how to build images for Shells at os_requirements.md.
It is possible to test Shells images prior to shipping.
$ ./test-linux.sh generated-disk-image.qcow2
This will run the disk image inside qemu with a configuration similar to what is used on Shells. The machine will run with a special UUID recognized by first run that will create a "test" user with password "test".
During testing, an overlay with the name xxx_test.qcow2 will be generated and changes will be written there (the original .qcow2 file won't be modified in test mode). Erasing this file allows returning to the initial state.