TS-4900 - Build Yocto Distribution: Difference between revisions

From embeddedTS Manuals
No edit summary
No edit summary
Line 18: Line 18:
mkdir ts-bsp
mkdir ts-bsp
cd ts-bsp
cd ts-bsp
repo init -u https://github.com/embeddedarm/ts-oe-bsp.git -b dizzy
repo init -u https://github.com/embeddedarm/ts-oe-bsp.git -b fido
repo sync # This will take a while while it downloads around 10 git repos
repo sync # This will take a while while it downloads around 10 git repos
</source>
</source>
Line 29: Line 29:
#export SDKMACHINE="i686"
#export SDKMACHINE="i686"
# Generate the image based on quad or solo
# Generate the image based on quad or solo
#export MACHINE="ts4900-quad"
export MACHINE="tsimx6"
#export MACHINE="ts4900-solo"
## The SDK and MACHINE can be changed later by modifying build/conf/local.conf
## The SDK and MACHINE can be changed later by modifying build/conf/local.conf


source ./setup-environment build
source ./setup-environment build
</source>
Next replace the newly generated contents of conf/bblayers.conf with this:
<pre>
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-mono \
  ${BSPDIR}/sources/meta-qt5 \
  ${BSPDIR}/sources/meta-browser \
"
</pre>
Edit the file conf/local.conf.  To match our image, add these lines:
<pre>
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"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
</pre>


#Install our BB layers file.  This includes a set of common layers used
#in our images.
cp ../.repo/manifests/bblayers.conf conf/bblayers.conf
</source>


Edit the file conf/local.conf.  To build our default distribution, change
  DISTRO ?= 'poky'
to
  DISTRO ?= 'poky-systemd'


Also to match our image add these options to the QT build and whitelist commercial licenses for the gstreamer playback.
  PACKAGECONFIG_append_pn-qtbase = " icu accessibility"
  LICENSE_FLAGS_WHITELIST = "commercial_libav commercial"


You will need to select which image to build.  Our default image is ts-x11-image.  You can view the images we provide with:
You will need to select which image to build.  Our default image is ts-x11-image.  You can view the images we provide with:
Line 61: Line 92:
#bitbake ts-headless-image
#bitbake ts-headless-image


After the build has finished, it will be available in
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
<source lang=bash>
# for the quad build
cd tmp/deploy/images/ts4900-quad
# for the solo build
cd tmp/deploy/images/ts4900-solo
</source>
 
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
<source lang=bash>
<source lang=bash>
mkdir /mnt/sd
mkdir /mnt/sd
sudo mount /dev/sdc1 /mnt/sd
sudo mount /dev/sdc1 /mnt/sd
sudo mkfs.ext4 /dev/sdc1
sudo mkfs.ext4 /dev/sdc1
sudo tar -xf ts-x11-image-ts4900-quad.tar.bz2 -C /mnt/sd
sudo tar -xf ts-x11-image-tsimx6.tar.bz2 -C /mnt/sd
sudo umount /mnt/sd/
sudo umount /mnt/sd/
sync
sync

Revision as of 14:40, 27 August 2015

Recommended reading

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
repo init -u https://github.com/embeddedarm/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-mono \
  ${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"
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.

  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/
sync

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.