TS-4900 - Build Yocto Distribution

From embeddedTS Manuals

1 Recommended reading

2 Prerequisites

This will change depending on your system. Refer to the Yocto documentation for more information, but for building from Debian Jessie or Ubuntu Wily these are the required apt-get packages:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

If you plan on building our images we recommend using a 64-bit Linux distribution to build Yocto. Chromium will require a significant amount of RAM to link which is expected to fail on i686.

3 Build Yocto

To get started, install repo. This is a tool for downloading and updating a set of git repositories.

mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=${PATH}:~/bin

Check out our BSP:

mkdir ts-bsp
cd ts-bsp
# Fido is the most tested branch for the TS-4900.  We also have a Jethro and Fido branch
# TS-7970/TS-7990 should use at least Krogoth.
repo init -u https://github.com/embeddedTS/ts-oe-bsp.git -b fido 
repo sync # This will take a while while it downloads around 10 git repos

Once it is downloaded the environment needs to bet set up:

## The SDK will default to the architecture of the build system
## or you can override it with one of the following:
#export SDKMACHINE="x86_64"
#export SDKMACHINE="i686"
# Generate the image based on quad or solo
export MACHINE="tsimx6"
## The SDK and MACHINE can be changed later by modifying build/conf/local.conf

source ./setup-environment build

Next replace the newly generated contents of conf/bblayers.conf with this:


BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

  ${BSPDIR}/sources/poky/meta \
  ${BSPDIR}/sources/poky/meta-yocto \
  ${BSPDIR}/sources/poky/meta-yocto-bsp \
  ${BSPDIR}/sources/meta-openembedded/meta-oe \
  ${BSPDIR}/sources/meta-openembedded/meta-systemd \
  ${BSPDIR}/sources/meta-openembedded/meta-multimedia \
  ${BSPDIR}/sources/meta-openembedded/meta-networking \
  ${BSPDIR}/sources/meta-openembedded/meta-ruby \
  ${BSPDIR}/sources/meta-openembedded/meta-python \
  ${BSPDIR}/sources/meta-openembedded/meta-gnome \
  ${BSPDIR}/sources/meta-fsl-arm \
  ${BSPDIR}/sources/meta-fsl-arm-extra \
  ${BSPDIR}/sources/meta-fsl-demos \
  ${BSPDIR}/sources/meta-ts \
  ${BSPDIR}/sources/meta-qt5 \
  ${BSPDIR}/sources/meta-browser \

Edit the file conf/local.conf. To match our image, add these lines:

LICENSE_FLAGS_WHITELIST = "commercial_libav commercial"
PACKAGECONFIG_append_pn-qtbase = " icu accessibility"

# Skip these three if you do not want systemd
DISTRO_FEATURES_append = " systemd"
DISTRO_FEATURES_remove = " wayland"
VIRTUAL-RUNTIME_init_manager = "systemd"

You will need to select which image to build. Our default image is ts-x11-image. You can view the images we provide with:

ls -l ../sources/meta-ts/recipes-*/images/*

These images may change in the future, or more may be added. There are descriptions in the top comments of each file.

  1. Build our common image with X11/QT support

bitbake ts-x11-image

  1. Alternatively, this is a smaller image with X11/QT omitted
  2. bitbake ts-headless-image

After the build has finished, it will be available in "tmp/deploy/images/tsimx6". Use gparted or fdisk+mkfs to format an SD card with a single partition. From your pc, mount the SD card. Assuming /dev/sdc is the SD card

mkdir /mnt/sd
sudo mount /dev/sdc1 /mnt/sd
sudo mkfs.ext4 /dev/sdc1
sudo tar -xf ts-x11-image-tsimx6.tar.bz2 -C /mnt/sd
sudo umount /mnt/sd/

4 Updating the distribution

Occasionally we will make updates to Yocto. To pull these down:

export PATH=${PATH}:~/bin
cd ts-bsp
repo sync

source ./setup-environment build

From here, you can bitbake your desired image which will include any updates.