Buildroot is a collection of scripts that simplify the process of generating an embedded Linux system from source code.  It is based on the makefile build system, and includes a menuconfig system similar to the one Linux uses.  The makefiles contain instructions on how to download and build a wide variety of tools and packages that may either be used by the host as part of the build process, or used on an embedded device as part of its run-time operation.  Buildroot also includes a number of pre-made configurations for common boards such as Raspberry PI and Beaglebone.

Buildroot can be obtained from the project’s GitHub page.  It should be copied to a Linux system with a few prerequisite packages already installed.  (The prerequisites are listed in the buildroot documentation.)  The next step is to choose a configuration from the ‘configs’ subfolder.  There are a number of pre-made configurations to choose from, or to use as a starting point for a custom configuration.  The configuration is applied by typing ‘make <config>’ where ‘<config>’ is the name of one of the files in the ‘configs’ subfolder.  After the configuration is applied, it can be modified by typing ‘make menuconfig’.  Once the configuration is all set, the whole system can be built by typing ‘make’.  This command does all of the downloading and building required to generate a bootable image file.  This image file can be copied onto media that is readable by the embedded device, and the embedded device should be able to boot and run from it.

linux buildroot block diagram