Yocto Project Development Tasks Manual
Table of Contents
- 1 The Yocto Project Development Tasks Manual
 - 2 Setting Up to Use the Yocto Project
 - 3 Common Tasks
- 3.1 Understanding and Creating Layers
- 3.1.1 Creating Your Own Layer
 - 3.1.2 Following Best Practices When Creating Layers
 - 3.1.3 Making Sure Your Layer is Compatible With Yocto Project
 - 3.1.4 Enabling Your Layer
 - 3.1.5 Appending Other Layers Metadata With Your Layer
 - 3.1.6 Prioritizing Your Layer
 - 3.1.7 Managing Layers
 - 3.1.8 Creating a General Layer Using the 
bitbake-layersScript - 3.1.9 Adding a Layer Using the 
bitbake-layersScript 
 - 3.2 Customizing Images
 - 3.3 Writing a New Recipe
- 3.3.1 Overview
 - 3.3.2 Locate or Automatically Create a Base Recipe
 - 3.3.3 Storing and Naming the Recipe
 - 3.3.4 Running a Build on the Recipe
 - 3.3.5 Fetching Code
 - 3.3.6 Unpacking Code
 - 3.3.7 Patching Code
 - 3.3.8 Licensing
 - 3.3.9 Dependencies
 - 3.3.10 Configuring the Recipe
 - 3.3.11 Using Headers to Interface with Devices
 - 3.3.12 Compilation
 - 3.3.13 Installing
 - 3.3.14 Enabling System Services
 - 3.3.15 Packaging
 - 3.3.16 Sharing Files Between Recipes
 - 3.3.17 Using Virtual Providers
 - 3.3.18 Properly Versioning Pre-Release Recipes
 - 3.3.19 Post-Installation Scripts
 - 3.3.20 Testing
 - 3.3.21 Examples
 - 3.3.22 Following Recipe Style Guidelines
 - 3.3.23 Recipe Syntax
 
 - 3.4 Adding a New Machine
 - 3.5 Upgrading Recipes
 - 3.6 Finding Temporary Source Code
 - 3.7 Using Quilt in Your Workflow
 - 3.8 Using a Development Shell
 - 3.9 Using a Python Development Shell
 - 3.10 Building
- 3.10.1 Building a Simple Image
 - 3.10.2 Building Images for Multiple Targets Using Multiple Configurations
 - 3.10.3 Building an Initial RAM Filesystem (initramfs) Image
 - 3.10.4 Building a Tiny System
- 3.10.4.1 Tiny System Overview
 - 3.10.4.2 Goals and Guiding Principles
 - 3.10.4.3 Understand What Contributes to Your Image Size
 - 3.10.4.4 Trim the Root Filesystem
 - 3.10.4.5 Trim the Kernel
 - 3.10.4.6 Remove Package Management Requirements
 - 3.10.4.7 Look for Other Ways to Minimize Size
 - 3.10.4.8 Iterate on the Process
 
 - 3.10.5 Building Images for More than One Machine
 - 3.10.6 Building Software from an External Source
 - 3.10.7 Replicating a Build Offline
 
 - 3.11 Speeding Up a Build
 - 3.12 Working With Libraries
 - 3.13 Working with Pre-Built Libraries
 - 3.14 Using x32 psABI
 - 3.15 Enabling GObject Introspection Support
 - 3.16 Optionally Using an External Toolchain
 - 3.17 Creating Partitioned Images Using Wic
 - 3.18 Flashing Images Using 
bmaptool - 3.19 Making Images More Secure
 - 3.20 Creating Your Own Distribution
 - 3.21 Creating a Custom Template Configuration Directory
 - 3.22 Conserving Disk Space
 - 3.23 Working with Packages
- 3.23.1 Excluding Packages from an Image
 - 3.23.2 Incrementing a Package Version
 - 3.23.3 Handling Optional Module Packaging
 - 3.23.4 Using Runtime Package Management
 - 3.23.5 Generating and Using Signed Packages
 - 3.23.6 Testing Packages With ptest
 - 3.23.7 Creating Node Package Manager (NPM) Packages
 - 3.23.8 Adding custom metadata to packages
 
 - 3.24 Efficiently Fetching Source Files During a Build
 - 3.25 Selecting an Initialization Manager
 - 3.26 Selecting a Device Manager
 - 3.27 Using an External SCM
 - 3.28 Creating a Read-Only Root Filesystem
 - 3.29 Maintaining Build Output Quality
 - 3.30 Performing Automated Runtime Testing
 - 3.31 Debugging Tools and Techniques
- 3.31.1 Viewing Logs from Failed Tasks
 - 3.31.2 Viewing Variable Values
 - 3.31.3 Viewing Package Information with 
oe-pkgdata-util - 3.31.4 Viewing Dependencies Between Recipes and Tasks
 - 3.31.5 Viewing Task Variable Dependencies
 - 3.31.6 Viewing Metadata Used to Create the Input Signature of a Shared State Task
 - 3.31.7 Invalidating Shared State to Force a Task to Run
 - 3.31.8 Running Specific Tasks
 - 3.31.9 General BitBake Problems
 - 3.31.10 Building with No Dependencies
 - 3.31.11 Recipe Logging Mechanisms
 - 3.31.12 Debugging Parallel Make Races
 - 3.31.13 Debugging With the GNU Project Debugger (GDB) Remotely
 - 3.31.14 Debugging with the GNU Project Debugger (GDB) on the Target
 - 3.31.15 Other Debugging Tips
 
 - 3.32 Making Changes to the Yocto Project
 - 3.33 Working With Licenses
 - 3.34 Checking for Vulnerabilities
 - 3.35 Creating a Software Bill of Materials
 - 3.36 Using the Error Reporting Tool
 - 3.37 Using Wayland and Weston
 
 - 3.1 Understanding and Creating Layers
 - 4 Using the Quick EMUlator (QEMU)
 
The Yocto Project ®
Permission is granted to copy, distribute and/or modify this document under the terms of the Creative Commons Attribution-Share Alike 2.0 UK: England & Wales as published by Creative Commons.
To report any inaccuracies or problems with this (or any other Yocto Project)
manual, or to send additions or changes, please send email/patches to the Yocto
Project documentation mailing list at docs@lists.yoctoproject.org or
log into the Libera Chat #yocto channel.