Yocto Project Introduction

Building Embedded Linux system is a complex task, you need to choose a toolchain, configure and build bootloader, kernel, file system and applications. It becomes more complex to maintain the process over more many products.

To build a system, you can use some tools like buildroot, crosstool, busybox and more

Yocto project helps to solve the problem

downloading the sources:

# git clone http://git.yoctoproject.org/git/poky


# cd poky
# source ./oe-init-build-env
# bitbake core-image-minimal

Test your system

# runqemu qemux86


Configuring the kernel

# bitbake -c menuconfig virtual/kernel
# bitbake virtual/kernel


Building Packages

To see a list of available tasks for recipe run:

# bitbake -c listtasks virtual/kernel


Adding a new packages to the images

Edit the poky/build/conf/local.conf and add the following:

IMAGE_INSTALL_append = " dropbear python"


To see the available packages run:

# bitbake -s


Creating a new recipe


Create a new directory in /meta/recipes-extended


Add files folder and put source file hello.c in that folder


Create a file hello_1.0.bb with the following content


DESCRIPTION = "Hello world program"
HOMEPAGE = "http://example.net/helloworld/"
PRIORITY = "optional"
SECTION = "examples"
SRC_URI = "file://hello.c"


do_compile() {
    ${CC} ${CFLAGS} ${LDFLAGS} -o hello ${WORKDIR}/hello.c

do_install() {
    install -d ${D}${bindir}
    install -m 0755 hello ${D}${bindir}


To see the available images run:

# find ./meta*/recipes*/images -name "*.bb"


create a standalone toolchain

# bitbake meta-toolchain


after the build is finished find it in [build dir]/tmp/deploy/sdk

run the script: poky-glibc-x86_64-meta-toolchain-aarch64-toolchain-2.3.sh to install the toolchain