Yocto Project Development Tasks Manual
Table of Contents
- 1 The Yocto Project Development Tasks Manual
 - 2 Setting Up to Use the Yocto Project
 - 3 Understanding and Creating Layers
- 3.1 Creating Your Own Layer
 - 3.2 Following Best Practices When Creating Layers
 - 3.3 Making Sure Your Layer is Compatible With Yocto Project
 - 3.4 Enabling Your Layer
 - 3.5 Appending Other Layers Metadata With Your Layer
 - 3.6 Prioritizing Your Layer
 - 3.7 Managing Layers
 - 3.8 Creating a General Layer Using the 
bitbake-layersScript - 3.9 Adding a Layer Using the 
bitbake-layersScript - 3.10 Saving and restoring the layers setup
 
 - 4 Customizing Images
 - 5 Writing a New Recipe
- 5.1 Overview
 - 5.2 Locate or Automatically Create a Base Recipe
 - 5.3 Storing and Naming the Recipe
 - 5.4 Running a Build on the Recipe
 - 5.5 Fetching Code
 - 5.6 Unpacking Code
 - 5.7 Patching Code
 - 5.8 Licensing
 - 5.9 Dependencies
 - 5.10 Configuring the Recipe
 - 5.11 Using Headers to Interface with Devices
 - 5.12 Compilation
 - 5.13 Installing
 - 5.14 Enabling System Services
 - 5.15 Packaging
 - 5.16 Sharing Files Between Recipes
 - 5.17 Using Virtual Providers
 - 5.18 Properly Versioning Pre-Release Recipes
 - 5.19 Post-Installation Scripts
 - 5.20 Testing
 - 5.21 Examples
 - 5.22 Following Recipe Style Guidelines
 - 5.23 Recipe Syntax
 
 - 6 Adding a New Machine
 - 7 Upgrading Recipes
 - 8 Finding Temporary Source Code
 - 9 Using Quilt in Your Workflow
 - 10 Using a Development Shell
 - 11 Using a Python Development Shell
 - 12 Building
- 12.1 Building a Simple Image
 - 12.2 Building Images for Multiple Targets Using Multiple Configurations
 - 12.3 Building an Initial RAM Filesystem (Initramfs) Image
 - 12.4 Building a Tiny System
 - 12.5 Building Images for More than One Machine
 - 12.6 Building Software from an External Source
 - 12.7 Replicating a Build Offline
 
 - 13 Speeding Up a Build
 - 14 Working With Libraries
 - 15 Working with Pre-Built Libraries
 - 16 Using x32 psABI
 - 17 Enabling GObject Introspection Support
 - 18 Optionally Using an External Toolchain
 - 19 Creating Partitioned Images Using Wic
 - 20 Flashing Images Using bmaptool
 - 21 Making Images More Secure
 - 22 Creating Your Own Distribution
 - 23 Creating a Custom Template Configuration Directory
 - 24 Conserving Disk Space
 - 25 Working with Packages
- 25.1 Excluding Packages from an Image
 - 25.2 Incrementing a Package Version
 - 25.3 Handling Optional Module Packaging
 - 25.4 Using Runtime Package Management
 - 25.5 Generating and Using Signed Packages
 - 25.6 Testing Packages With ptest
 - 25.7 Creating Node Package Manager (NPM) Packages
 - 25.8 Adding custom metadata to packages
 
 - 26 Efficiently Fetching Source Files During a Build
 - 27 Selecting an Initialization Manager
 - 28 Selecting a Device Manager
 - 29 Using an External SCM
 - 30 Creating a Read-Only Root Filesystem
 - 31 Maintaining Build Output Quality
 - 32 Debugging Tools and Techniques
- 32.1 Viewing Logs from Failed Tasks
 - 32.2 Viewing Variable Values
 - 32.3 Viewing Package Information with 
oe-pkgdata-util - 32.4 Viewing Dependencies Between Recipes and Tasks
 - 32.5 Viewing Task Variable Dependencies
 - 32.6 Debugging signature construction and unexpected task executions
 - 32.7 Viewing Metadata Used to Create the Input Signature of a Shared State Task
 - 32.8 Invalidating Shared State to Force a Task to Run
 - 32.9 Running Specific Tasks
 - 32.10 General BitBake Problems
 - 32.11 Building with No Dependencies
 - 32.12 Recipe Logging Mechanisms
 - 32.13 Debugging Parallel Make Races
 - 32.14 Debugging With the GNU Project Debugger (GDB) Remotely
 - 32.15 Debugging with the GNU Project Debugger (GDB) on the Target
 - 32.16 Enabling Minidebuginfo
 - 32.17 Other Debugging Tips
 
 - 33 Working With Licenses
 - 34 Dealing with Vulnerability Reports
 - 35 Checking for Vulnerabilities
 - 36 Creating a Software Bill of Materials
 - 37 Using the Error Reporting Tool
 - 38 Using Wayland and Weston
 - 39 Using the Quick EMUlator (QEMU)
- 39.1 Overview
 - 39.2 Running QEMU
 - 39.3 Switching Between Consoles
 - 39.4 Removing the Splash Screen
 - 39.5 Disabling the Cursor Grab
 - 39.6 Running Under a Network File System (NFS) Server
 - 39.7 QEMU CPU Compatibility Under KVM
 - 39.8 QEMU Performance
 - 39.9 QEMU Command-Line Syntax
 - 39.10 
runqemuCommand-Line Options 
 - 40 Locking and Unlocking Recipes Using 
bblock 
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.