Building the radio

DragonRadio is developed under Ubuntu 16.04, the distribution used to the Colosseum. Running the top-level build.sh script in a base Ubuntu 16.04 installation installs all necessary prerequisites and builds DragonRadio.

Building a container

It is relatively painless to build an lxc image that can run directly on the Colosseum using the steps below.

  1. Install lxc and ansible.

    Install lxc and ansible on the system where you are building the image. On Ubuntu, both can be installed as follows:

    sudo apt install -y ansible lxd
    lxd init
    

    You will also need to edit /etc/subuid and /etc/subgid. The Colosseum instructions on how to prepare a container will be helpful.

  2. Obtain the Colosseum base image

    Follow the Colosseum instructions to obtain the base image, base-1604-nocuda.tar.gz, and import it. The --alias argument is important!

    lxc import base-1604-nocuda.tar.gz --alias base-1604-nocuda
    
  3. Build base DragonRadio image

    The image built in this step serves as the base image for all DragonRadio builds. It includes generally useful tools, the Colosseum CLI, and additional software, like gpsd, that are necessary to run the radio in batch mode in the Colosseum. The build is automated using ansible:

    cd ansible && ansible-playbook -i inventory playbooks/dragonradio.yml
    

    This will result in a dragonradio-1604-base image in the top-level images directory. The password for the root and srn-user users in this image is dragonradio.

  4. Build a DragonRadio image

    The build-image.sh takes a git reference (tag, hash, etc.) and builds an image based on the given version of the radio. For example, an image based on the master branch can be built as follows:

    ./bin/build-image.sh master
    

    The image wil be placed in the images directory and have a name of the form REF-DATE-HASH, where REF is a git reference, DATE is the build date, and HASH is the git hash of the version of the radio use to build the image.

    The build-image.sh script takes one optional flag, -s, which will install the dragonradio service in the generated image. This service automatically starts the radio on boot, making the image ready-to-run in batch mode in the Colosseum.

Building the documentation

The documentation can be built as follows:

cd docs
pip install -Ur requirements.txt
make html