
Learn how Yocto enables building embedded Linux images by combining toolchain, bootloader, kernel, and root file system, plus applications for tasks like media playback or robotics.
Create your own custom Linux distributions for any hardware architecture using the Yocto Project's open source infrastructure and tools, a Linux Foundation collaboration founded in 2010.
Explore how Yocto project turns inputs like kernel configuration, version, hardware, packages, and binaries into a Linux-based embedded product, delivering kernel image, root file system, bootloader, device tree, and toolchain.
Set up a Yocto build machine by meeting prerequisites: 50 gb disk space and a Linux distribution. Install git, tar, and python, then follow linked guide for Ubuntu 18.04 packages.
Poky is a reference distribution of the Yocto project, an example to build a custom Linux distribution from source, combining Bitbake, Openembedded core, and Yocto BSP documentation, with no binaries.
Metadata in Yocto provides the build instructions for kernel versions, sources, patches, and packages through configuration files and recipes, guiding the creation of a custom linux image.
Explore oe-core, the common metadata shared by the OpenEmbedded and Yocto projects for building embedded systems. OpenEmbedded provides metadata foundations while Yocto offers powerful tools and board support packages.
Schedule tasks in the Yocto project with bitbake, a core task scheduler that parses Python and shell scripts, sequences fetch, extract, configure, and patch steps, and speeds builds.
Understand meta-yocto-bsp as a board support package defining hardware support, kernel configuration, drivers, and software components. Poky supports Beaglebone, and x86, and you can add a BSP for Raspberry Pi.
Explore the other Poky repositories, including Openembedded core, Bitbake, Meta Poky metadata, and meta octo BSP, plus documentation, helper scripts, and a QEMU test image.
Download the Poky Yocto source, set up the openembedded build environment, source the setup script, and use Bitbake to build a minimal core image for qemu x86_64.
Run a Yocto generated image in qemu using the run-chemo script, selecting the chemo x86_64 machine and core-image-minimal, and verify kernel version, rootfs, and basic console access.
Configure local.conf for the chemo arm, run bitbake image minimal, and boot a qemu arm image to verify kernel, rootfs, and armv7 with busybox utilities.
Run QEMU in nographic mode to launch the emulator without graphics, using the serial console for all interactions.
Add USB utils to a Yocto image by using image install or image append, verify the image install, and build a minimal rootfs with custom layers and recipes.
Build and run a core image with Yocto, generating a shadow image and a splash screen for a graphical desktop environment with an Xserver and file manager.
Tackle the end-of-lecture challenge by generating a qemu mips image, applying the necessary modifications, and validating it in an emulator by running proc cpuinfo.
Explore metadata in Yocto by detailing how bitbake acts as a task parser and scheduler, and how metadata comprises configuration files, recipes, classes, and includes.
Explain that in Yocto, a recipe is a Bitbake processed set of instructions for obtaining sources, applying patches, configuring, compiling with GCC and cross compilation, and installing the software component.
Learn how configuration files, including local.conf and various machine, distro, and user configs, guide the Yocto build to generate a target image with the right rootfs and bootloader.
Yocto class files in the meta/classes folder abstract shared functionality and let recipes inherit features like cmake, kernel builds, and kernel module builds to avoid duplication.
Layers are containers that store related recipes in the Yocto project, following the meta-<layer-name> naming convention and organizing components into connectivity, graphics, multimedia, kernel, and BSP categories.
Layers isolate metadata by functionality, enabling bsp, distribution, configuration, and middleware layers; they let you add, replace, or append metadata on top of core meta like meta key.
Learn how to identify the layers used by the bitbake build system by inspecting the generated layers file after sourcing the init script and running bitbake - layers show layers.
Fetch Yocto layers from layers.openembedded.org, explore meta layers like BeagleBoard and Raspberry Pi, search recipes, machines, classes, and distros, and publish your own layer for reuse.
Discover Yocto project compatible layers, fully tested and compatible with the Yocto project, and compare them with the less validated layers from the open embedded layer index.
Understand image as a top level recipe that inherits the core image class and defines the root filesystem and included packages in a layer's images folder.
Explain that a package is a wrapped group of objects, and in Yocto a package is a binary file produced by a recipe, with packages listed in the packages variable.
Explore the Poky source tree, including bitbake, meta folders, and BSP machines, and learn how build environment scripts and local conf enable image creation and Yocto project documentation.
Explore the build folder generated by the Yocto setup, focusing on local.conf to configure machine, downloads, and build paths, and learn to extend with layers.
Configure the bb_number_threads variable to control how many Bitbake tasks run in parallel, defaulting to the system CPUs and overridable in local.conf.
Discover how parallel make uses the -j option and an environment variable to set the number of make processes, defaulting to the system CPU count, with Bitbake and make commands.
Move the contents of local.conf into your distro configuration. During builds, only set the distro variable, since local.conf isn’t under source control.
Explore the Yocto build directories, including downloads, git repositories, and the shared state cache used by Bitbake. Inspect temp deploy images and caches that hold build outputs and actual images.
Explore the Yocto build workflow from architecture and machine selection to fetching sources, applying patches, configuring, compiling, and generating packages and the final root file system image.
Explore how the poky build generates images stored in temp deploy images for each target, including kernel images, root filesystem images, and kernel modules, with symbolic links to latest files.
Bitbake's _work option deletes source code and temporary build files after each recipe, saving disk space; use _work_exclude to protect specific recipes, though debugging becomes harder.
Explore why embedded Linux uses ecpg, Debian, and rpm, and clarify what rpm and Debian are, including their differences.
Beaglebone black specs and building a yocto image for it. Features am335x cortex-a8, 4 gigabytes of emmc storage, sd card support, usb, ethernet, hdmi, 2x46 pin headers, cables; peripherals present.
Source the init build environment, set the machine to Beaglebone Yocto, and run bitbake core image minimal to produce a Yocto image.
Explore the Beaglebone Black booting process on the Am335x, where limited internal RAM requires multiple bootloader stages—from ROM (secondary program loader) to U-Boot—before the kernel image initializes.
Explain how the ROM code, a vendor-flashed, hardcoded first-stage bootloader, initializes peripherals and loads the next boot stage from emmc, microSD, or USB.
Load a cut-down U-boot SPL on Beaglebone Black to boot the full U-boot; the ROM searches the first FAT32/16 partition for MLO, starting the boot process.
Learn how u-boot, the third stage bootloader, controls the kernel boot environment. Configure boot arguments and the device tree, leveraging dhcp and nfs for network boot via env.txt.
Identify the four booting stages on beaglebone black: primary program loader (rom code), secondary program loader (first stage boot loader), second stage boot loader (u-boot), and kernel.
Partition and format the sd card with fdisk: create a 32 mb fat32 boot partition and a second ext3 root file system partition, after unmounting and labeling the boot partition.
Copy the u-boot boot loader, kernel image, and device tree blob to the boot partition, extract the rootfs to the root partition, then run sync for the Beaglebone sd card.
Use gparted to create and format partitions on an sd card for a Beaglebone Black, including a 32 MB fat32 boot partition with boot flags and an ext4 root partition.
Connect a serial port for debugging via a USB-to-serial converter to BeagleBone Black with an SD card image, then configure Minicom to usb0 at 115200 baud with no flow control.
Flash a Yocto image to a BeagleBone Black and observe the boot sequence from ROM to kernel, including U-boot, ext4 rootfs, BusyBox, and first boot configuration.
Erase the emmc from the u-boot prompt to boot from the micro sd card, using the s2 switch or renaming the emmc file.
Investigate alternative bootloaders to u-boot for the Beaglebone Black by researching grub and barebox online. Confirm which bootloaders are supported and email the findings.
Yocto project releases use a major.minor.patch naming scheme, with major changes affecting compatibility, minor changes signaling updates, and patch updates for bug fixes; Poky releases add a code name.
Understand why Poky codenames matter in the Yocto project, where major releases occur every April and October, and codename-based layers ensure compatibility while mixing codenames causes errors.
Explore how embedded Linux Yocto releases are structured: major releases every six months, milestone checkpoints, and point releases that address build and security issues.
After release, you choose stable for seven months or pre-announced LTS for two years, then it moves to community support with a six-week maintainer call, or ends life if unmaintained.
Learn how to manage layers and branches in embedded linux with yocto, ensuring compatible core branches across distribution, bsp, and openembedded layers to avoid conflicts and ensure host distribution compatibility.
Explore the bsp layer as a metadata set that defines support for a hardware platform, detailing bootloader, device tree, kernel version and configuration, patches, and building embedded Linux images.
Explore the BSP layer naming convention meta-<bsp-name> and learn how to identify supported hardware by inspecting the machine folder and .conf files in a BSP layer, with examples.
Learn how the meta-ti BSP layer enables Texas instrument hardware support, including Beaglebone Black, Beagleboard, Pandaboard, and Omap, by cloning the meta repository, verifying branches, and aligning dependencies with OpenEmbedded.
Add a new layer to the Yocto build by editing the layers file. Or use bitbake layers add layer with the full path, then verify with bitbake layers show layers.
Build a Beaglebone image with Yocto using meta-ti by adding the layer and setting MACHINE=Beaglebone, then flash the SD with boot, kernel, device tree, and rootfs.
Flash a Yocto-built embedded Linux image to an SD card using wick images and the WIC utility, create partitions, and boot a Beaglebone Black with a minimal core image.
Tackle the challenge of removing the meta octo BSP and generating an image for meta on the Beaglebone black, leveraging four layers in Yocto.
Generate a Raspberry Pi image with the meta raspberry pi layer, which provides hardware-specific bsp for all Raspberry Pi devices and supports pokey distro, distroless images, and angstrom distros.
Learn how to add layers in Yocto for a Raspberry Pi build, including BSP layer and meta openembedded dependencies, set the machine to Raspberry Pi 3, and review available images.
Build a Raspberry Pi 3 Yocto image by selecting core image variants, enabling uart in local.conf, and ensuring all layers share the same branch to generate the hardware image.
Powering on the Raspberry Pi's gpu activates while the cpu stays reset; the on-chip boot rom loads bootcode.bin from the sd card into cache to start the first stage.
Explore the Raspberry Pi 3 boot sequence: rom loads boot_code.bin to enable sdram, then loads start.elf (Videocore OS) from sdram, reads config.txt and commandline.txt, loads the kernel, and enables cpu.
Flash a Yocto-built Raspberry Pi 3 image onto an sd card, inspecting deploy/images, modifying config.txt for GPU and the kernel command line, and updating cmdline.txt.
Flash the SD card and connect it to the Raspberry Pi with a USB-to-serial adapter and power supply. Configure Minicom on USB0 at 115200 baud to establish serial communication.
Include dropbear ssh server in the basic Yocto image for the Raspberry Pi, flash the sd card, and connect remotely via ssh over the ip, verifying partitions.
learn how to extend the root filesystem in a Yocto build by configuring image_extra_space, generating a larger image, flashing it to the SD card, and verifying the four-gigabyte root partition.
Become a Yocto developer and create a custom embedded Linux image for your custom board
With over 2000 students enrolled,50+ 5 star reviews, these comprehensive Yocto tutorials will cover everything you'll need in your profession.
With over 80 lectures , this comprehensive course will take you step-by-step through engaging video tutorials and teach you all the essential concepts and topics you need to get started with Yocto. There are challenges in the course, which will help you verify your learning
What will you learn in this course
We will start with the basic concepts and terminology of Yocto
Set up our development PC for building Yocto
Build and Run generated Yocto Image on QEMUX86-64 and QEMUARM
Build various images provided by Poky (Minimal, sato etc)
Add packages to the generated image
Exploring Build and source directories
Understand the booting process of Raspberry Pi3 and Beaglebone black
Adding custom layers to the build
Generate and Flash Yocto images for Raspberry Pi3 with meta-raspberrypi layer
Generate and Flash Yocto Images for Beaglebone black with and without meta-ti layer
Adding ssh support
Yocto Release Process: Frequency of releases, Types of Releases and Release lifecylce
What if I have questions?
You can ask questions anytime using the Q/A section. We love to answer your questions. You also get access to existing Questing and Answers
Don't just take my word for it, checkout what existing students have to say about the course:
"I learned lot of with this about Yocto project" by Somesh Raturi
"A good course to get first hand insight into yocto" by Remya Reveendran
"Very clear, systematic and to the point explanation" by Prakash Nair
There's no risk either !
This course comes with a 30 day money back guaranteed!. If you are not satisfied with the course, you'll get your money back
So what are you waiting for, enroll now and take the next step in mastering Yocto Project