This repository contains scripts used to build a customised EV3 image containing Sling and Sinter.
If you want to know exactly how the build process works, read the GitHub workflow.
In a nutshell:
build_control_panel.sh
: Cross-compiles theservice_control
binary to manage Source-Academy related services and settings directly from the EV3build_sling.sh
: Cross-compiles Sling and Sinter for ARM using ev3dev's cross-compilation Docker imageev3dev/debian-stretch-cross
, with some additional dependencies added inDockerfile.sling
build_qrcode.sh
: Cross-compiles theshow_qrcode
binary to display the QR code of the device secret on the EV3 screenbuild_uuidtob62.sh
: Cross-compiles theuuidtob62
CLI utility to represent the device secret in a more compact formatbuild_image.sh
: Builds the EV3 root filesystem usingimage/Dockerfile
andimage/bootstrap.sh
, and then uses Brickstrap to build the final image
To run this locally:
- You must be on Linux.
- You need a static build of QEMU configured for user-mode ARM emulation. It must be registered to handle ARM ELF files using
binfmt_misc
. - You need libguestfs tools.
- To satisfy the above dependencies:
- On Ubuntu, install
libguestfs-tools qemu-user-static binfmt-support
. - On Arch, install
binfmt-qemu-static qemu-user-static-bin libguestfs
. (Note, the first two are AUR packages.)
- On Ubuntu, install
- Download
brickstrap.sh
to the current directory.
To build the image from the source code, make sure you are the the root of the repository, then run the following commands in order:
wget https://raw.githubusercontent.com/ev3dev/brickstrap/master/src/brickstrap.sh
./build_control_panel.sh
./build_sling.sh
./build_qrcode.sh
./build_uuidtob62.sh
./build_image.sh