TS-4900 - Build Yocto Distribution
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:
LCONF_VERSION = "6" BBPATH = "${TOPDIR}" BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}" BBFILES ?= "" BBLAYERS = " \ ${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" DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
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.
- Build our common image with X11/QT support
bitbake ts-x11-image
- Alternatively, this is a smaller image with X11/QT omitted
- 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/
sync
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.