Articles
Yocto Quick Start
A Quick Guide to Getting Started With The Yocto Project
I really like the Yocto Project. As someone who builds Embedded Linux distributions, it makes my life so much easier.
However, if you are just coming into the world of Yocto it is very easy to get overwhelmed with the sheer quantity of things that it seems like you need to know about.
The truth is – you don’t!
You can actually start very small and then grow your project as you learn more.
Eating The Elephant
Q: How do you eat an elephant?
A: One bite at a time!
When you have something as big and complex as the Yocto Project, it is just too big to grasp in one sitting. I have been using it for many years now and I am still discovering brilliant new features.
Start Small
The first thing to do is create your project. I have based this on my standard template for a new project – How to layout the structure of a Yocto Project.
You will need to be on a relatively up to date version of one of the main Linux distributions i.e. Ubuntu, Debian, Fedora. Other distributions like Mint may work but they have not been explicitly tested by the Yocto Project team.
You will also need at least 50Gb of free disk space – thought I would recommend nearer 100Gb to be comfortable.
Install the Tools
For a Ubuntu/Debian system
sudo apt install bc gawk wget git diffstat unzip texinfo gcc \
build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \
libsdl1.2-dev python3-subunit mesa-common-dev zstd liblz4-tool file \
locales libacl1 libncurses-dev libssl-dev git
sudo locale-gen en_US.UTF-8
Create your Project Working Directory
mkdir –p ~/wip/my_project
cd ~/wip/my_project
git init
Create the directories to hold your layers
mkdir -p layers/project
mkdir layers/third-party
Clone The Layers
BitBake – The Build Tool
This was separated out from the ‘Poky’ layer in 2025. Previous to that, it was included in the layer https://git.yoctoproject.org/git/poky
git clone https://git.openembedded.org/bitbake layers/third-party/bitbake
meta-openembedded-core Core system
This provides the base system
- General
MACHINEdefinitions - Simple Image configurations
git clone -b whinlatter git://git.openembedded.org/openembedded-core \
layers/third-party/meta-openembedded-core
Create a Start Script
Being lazy – I do not want to have to type longs commands to start my build system, so I create a little start script.
In ~/wip/my_project (where you should be if you are following the instructions), create a script start-yocto.sh
#!/bin/bash --init-file
source ./layers/third-party/meta-openembedded-core/oe-init-build-env \
./build
Make sure it is executable!
Run this script each time you want to build anything, as it will initialise your environment correctly and put you into the correct build directory.
Run the script now and you will be able to start your first build.
Build your First Image
Create a minimal image with the command
bitbake core-image-minimal
Wait…
This is where many people think that building a Yocto Project is slow. The first time you build an image, BitBake has a lot of work to do:
- Download the source for every package you are using (this is why you need a lot of storage space)
- Configure each package
- Compile all the packages – including the native toolchain that will be used to compile everything for your target
- Create a Image file
- Install of the packages into the image.
However, the next time you run a build, BitBake only has to do that for anything that has changed. It takes about 2 hours for the first build on my system, but then about 25 seconds for the next run (assuming I have not changed too much)
Test the Image
At this point, you have built an image for a QEMU (Quick Emulator) x86-64 target. You can run your image with the command
runqemu qemux86-64
Login as root with no password.
If you want to learn more about running QEMU, see the Using the Quick EMUlator (QEMU) chapter in the Yocto Project Development Tasks Manual.
Exit QEMU by either clicking on the shutdown icon or by typing Ctrl-C in the QEMU transcript window from
which you evoked QEMU.
Next Steps
The next things you are going to want to do are find out about
- Adding additional layers
- Creating your own layer
- Creating your own image
- Adding your own recipe
- Appending an existing recipe
- Creating your own distribution