builder is based on Raspbian and
allows the user to develop and tailor their own custom Raspberry Pi images.
The script will modify the latest Raspbian image by installing packages,
purging packages and executing custom commands, and then finally
creates a bootable .img file that can be burned to the microSD card.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Operating System - Debian/Ubuntu
- microSD card reader
- class10 microSD card (minimum 8 Gb)
- Packages - kpartx wget gpg parted qemu-arm-static
To install the required packages, run the following command in Debian/Ubuntu:
sudo apt-get install kpartx wget gpg parted qemu-arm-static.
For other operating systems like MacOS or Windows, check out the
Vagrantfile inside the repository.
git clone https://github.com/treehouses/builder.git cd builder ./builder --chroot
You should be in a chrooted environment when it is completed.
You can access the RPi images' files and folders or carry on with any extra modifications.
To exit the chrooted environment just type
then you should be back in your own shell again.
The image in this stage is now ready to write to the microSD card.
Add gpg key
sudo bash -c 'wget -O - https://packagecloud.io/gpg.key | apt-key add -'
INSTALL_PACKAGES- Install packages found in the APT repositories.
- To add a custom package not found in the default APT repositories:
add the package name into
INSTALL_PACKAGES, then add the custom repository to
- To add a custom package not found in the default APT repositories: add the package name into
PURGE_PACKAGES- Remove packages already installed on the default Raspbian image.
CUSTOM_COMMANDS- Add extra commands to execute upon the completion of the
builder, which is run under a chroot environment.
- For instance, to enable ssh on boot for the RPi,
sudo touch /boot/sshis included in
CUSTOM_COMMANDS. The semi-colon is there to separate the commands and will execute regardless whether or not the previous command is successful.
- For instance, to enable ssh on boot for the RPi, the command
After exiting from the chroot environment, successful builds
are found in the
There should be a few files in that directory.
The .zip file is the unmodified base image,
which is downloaded by the script when executed.
The .img file is the new customized image and
is now ready to be burned onto the microSD card.
To remove unwanted modifications otherwise
Write to microSD card and try out the image
We will need a few hardware and software:
- Raspberry Pi 3/4 (or Zero W)
- 5V 2.4A/3A (1.2A for Pi Zero) power supply with microUSB connector
- A microSD card reader
- A Class 10 microSD card (minimal 8GB, but we strongly recommend 16GB or greater)
- Software for burning OS image to microSD card. We recommend Etcher, but there are many from which to choose
Open Etcher, select the location of the .img file, the destination drive of the microSD card, then press the flash button to write the image onto the microSD card. Remember that this process will wipe out everything on the selected drive, so make sure to select the right one.
This project use Travis CI to automatically build and upload new treehouse image
.travis.yml configuration file
tells Travis CI to run the deployment script at
if a tag is applied to the commit.
- New image's name will be
treehouse-followed by whatever is after
release-in the tag
- New image's SHA-1 checksum will be calculated and uploaded as
- If the tag is formated like
release-followed by only numbers,
latest.img.gz.sha1would be a symbolic link of the newly uploaded image and its SHA-1 checksum
- At this time, both
branch.img.gzon http://dev.ole.org are manually linked to their specific image