Kubos uses BuildRoot as its main Linux build tool. This repo contains the configuration and patch files required by BuildRoot to build Linux for each of the OBCs that Kubos supports.
This file contains the name and description for the kubos-linux-build folder. BuildRoot will use it to create a link between the main BuildRoot folder and the kubos-linux-build folder.
Currently (intentionally) empty. This file is required by BuildRoot when creating the external link to the kubos-linux-build folder, but no content is actually required.
Currently empty. Same as the external.mk file, BuildRoot requires that this file exist, but not that it have any content.
Inside of each of these folders are the patches and configuration files for each of the components required to build Linux for a particular board.
This folder contains the BuildRoot configuration files needed to build each OBC supported by Kubos.
Create new folder
$ mkdir kubos-linux
Enter the new folder
$ cd kubos-linux
Download BuildRoot-2016.11 (more current versions of BuildRoot may work as well, but all testing has been done against 2016.11)
$ wget https://buildroot.uclibc.org/downloads/buildroot-2016.11.tar.gz && tar xvzf buildroot-2016.11.tar.gz && rm buildroot-2016.11.tar.gz
Pull the kubos-linux-build repo
$ git clone http://github.com/kubostech/kubos-linux-build
Move into the buildroot directory
$ cd buildroot-2016.11
Point BuildRoot to the external kubos-linux-build folder and tell it which configuration you want to run (config files are located in kubos-linux-build/configs)
$ make BR2_EXTERNAL=../kubos-linux-build {board}_defconfig
Build everything
$ make
The full build process will take a while. Running on a Linux VM, it took about an hour. Running in native Linux, it took about twenty minutes. Once this build process has completed once, you can run other BuildRoot commands to rebuild only certain sections and it will go much more quickly (<5 min).
BuildRoot documentation can be found here
The generated files will be located in buildroot-2016.11/output/images. They are:
- uboot.bin - The U-Boot binary
- zImage - The compressed Linux kernel file
- {board}.dtb - The Device Tree Binary that Linux uses to configure itself for your board
- rootfs.tar - The root file system. Contains BusyBox and other libraries