Training > IoT & Embedded Development > Embedded Linux Platform Development with Yocto Project (LFD460)
INSTRUCTOR-LED COURSE

Embedded Linux Platform Development with Yocto Project (LFD460)

In this instructor-led course, you’ll obtain a solid understanding of how to build a repeatable embedded Linux target using the Yocto Project. In addition to learning the build system, you will learn about more advanced tools like toaster, devtool, wic, eSDK, and eclipse IDE integration. This course builds on the Embedded Linux topics learned in the LFD450 class.

Who Is It For

This course is primarily intended for experienced embedded Linux engineers who are interested in learning how to repeatably build an embedded Linux system. This course assumes you have basic knowledge of Embedded Linux systems such as building and install boot loaders, kernels and user space software. You should also be familiar with building code from the command line, basic Linux utilities and text editors. Some experience with Python is helpful but not required.
read less read more
What You’ll Learn

In this Yocto training course you will learn how to use the Poky and Bitbake build process, with its recipes and layers to customize Linux kernel and packages for a custom embedded application, how to build Linux on an embedded board, how to use emulators for verification, how to create board support packages (BSP) for target hardware, and more.
read less read more
What It Prepares You For

This course prepares you to take advantage of the Yocto Project – the open source collaboration effort that provides templates, tools and methods to help you create and maintain custom Linux-based systems for embedded products regardless of the specific hardware architecture.
read less read more
Course Outline
Expand All
Collapse All
Introduction
- Objectives
- Goals
- Audience
- Who You Are
- The Linux Foundation
- Copyright and No Confidential Information
- Linux Foundation Training
- Certification Programs and Digital Badging
- Linux Distributions
- Platforms
- Preparing Your System
- Things Change in Linux and Open Source Projects
- Documentation and Links
Preliminaries
- Linux Distributions
- Procedures
- Labs
How to Work in OSS Projects **
- Overview on How to Contribute Properly
- Know Where the Code is Coming From: DCO and CLA
- Stay Close to Mainline for Security and Quality
- Study and Understand the Project DNA
- Figure Out What Itch You Want to Scratch
- Identify Maintainers and Their Work Flows and Methods
- Get Early Input and Work in the Open
- Contribute Incremental Bits, Not Large Code Dumps
- Leave Your Ego at the Door: Don’t Be Thin-Skinned
- Be Patient, Develop Long Term Relationships, Be Helpful
The Yocto Project and OpenEmbedded
- What is the Yocto Project?
- What is OpenEmbedded?
- The Yocto Project Family
- Yocto Project Terms
- Yocto Project Releases
- Resources
Poky
- Pronouncing Poky
- Poky and BitBake Concepts
- Yocto/OE Architecture
Bitbake
- Obtaining and Installing
- Metadata
- Metadata Layers
- Metadata Syntax
- Events
- Variants
- File Downloads
- Fetchers
- Built-in Default Metadata
- Checksums
- Event Implementation
- Tasks
- Project Layout
- Provisioning and Dependency Handling
- BitBake Command Line
- Labs
Setting up the Yocto Project Build System
- The Yocto Project Reference System Structure
- A. Poky Core Components
- B. OpenEmbedded-Core Metadata Layer
- C. Poky Metadata Layer
- D. Yocto Board Support Package (BSP) Layer
- Labs
Building an x86 Emulation Image
- Build Environment Structure
- Labs
Troubleshooting Build Failures
- When Things Break
- Task Logs
- Running Specific Tasks
- Debug Statements
- Dependency Graphs
- Displaying Variables and Metadata
- Bitbake Debug Output
- Developer Shell
Customizing Images
- Extending a Pre-defined Image
- Inheriting from Core-Image
- Package Groups
- Using Image Features
- Labs
Toaster
- What is Toaster?
- Dependencies and Set Up of Toaster
- Running Toaster (local)
- Remote or hosted Setup
Adding Packages
- Recipe Conventions and Best Practices
- Single C-File Package
- Makefile-based Package
- Autotooled Package
- Labs
Layers
- Why Layers?
- Working with Layers
- Labs
Kernel Recipes
- Yocto Kernel Recipes
- Configuring the Yocto Project Kernel
- Building a Custom Kernel
- Extending the Yocto Project Kernel
- Labs
Introduction to selected BBCLASSes
- rm work.bbclass
- allarch.bbclass
- buildhistory and buildstats
- cve-check.bbclass
- archiver.bbclass
Development Tools
- devtool
- wic
Licensing and Compliance
- License Management with Yocto
- License Tracking
- Enabling Commercially Licensed Recipes
- Labs
Closing and Evaluation Survey
- Evaluation Survey
Kbuild System
- Introduction
- Kbuild Makefiles
- Kconfig Basics
- Searching Kconfig
Cross-Development Toolchain
- The Compiler Triplet
- Built-in Linux Distribution Cross Compiler
- Linaro
- CodeSourcery
- crosstool-ng
- Buildroot
- OpenEmbedded
- Yocto Project
- Labs
Booting a Target Development Board over Ethernet
- Using virtual Hardware
- An easier way to develop
- The Boot Sequence using TFTP and NFSroot
- Objectives of the Lab
- Labs
Target Filesystem Packaging
- Embedded Filesystem Goals
- Directories: a Survey
- Embedded Filesystem Types
Root Filesystem Choices
- SysV init vs. BusyBox init
- udev vs. BusyBox mdev
- Systemd
- C Library Choices
- Labs
Right-Sizing
- Oft-Needed Embedded Components
- Taking Inventory of Kernel Sizes

Prerequisites
This course is primarily intended for experienced embedded Linux engineers who are interested in learning how to repeatably build an embedded Linux system. This course assumes you have basic knowledge of Embedded Linux systems such as building and install boot loaders, kernels and user space software (the kinds of things you learn in LFD450: Embedded Linux Development). You should also be familiar with building code from the command line, basic Linux utilities and text editors. Some experience with Python is helpful but not required.
Reviews
Oct 2024
The course covered all topics and basics.
Oct 2024
I liked the hands-on labs, and the examples in the training manual.
Aug 2024
I liked the labs, that helped me better understand the build system, yocto/bitbake/poky and the structure of layers/configurations and recipes.
Jun 2024
John was a very good instructor, patient with the students' questions, able to help just about everyone with their problems, and he put everyone at ease.
Jun 2024
Starting out with no knowledge of Yocto environment, I can say I understand more of bitback, and am confident to build my own recipe.
Jun 2024
I think the labs, and having obtained the book, will be helpful. It was a lot of information, and I couldn't absorb it all, but with the material and the labs I can continue to learn on my own.
Jun 2024
I appreciated the detail devoted to all the different aspects of working with Yocto. I have used Yocto before, but even in the early part of the training going over the foundations, I found a lot of useful tips and tricks I didn't know about.
Jun 2024
That it was up-to-date with the most recent LTS release of yocto, even though that has only recently been released. That takes a lot of work, thank you for doing that.