Yocto Project Linux Kernel Development Manual

Scott Rifenbark

Scotty's Documentation Services, INC

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.

Manual Notes

  • This version of the Yocto Project Linux Kernel Development Manual is for the 2.6 release of the Yocto Project. To be sure you have the latest version of the manual for this release, go to the Yocto Project documentation page and select the manual from that site. Manuals from the site are more up-to-date than manuals derived from the Yocto Project released TAR files.

  • If you located this manual through a web search, the version of the manual might not be the one you want (e.g. the search might have returned a manual much older than the Yocto Project version with which you are working). You can see all Yocto Project major releases by visiting the Releases page. If you need a version of this manual for a different Yocto Project release, visit the Yocto Project documentation page and select the manual set by using the "ACTIVE RELEASES DOCUMENTATION" or "DOCUMENTS ARCHIVE" pull-down menus.

  • To report any inaccuracies or problems with this manual, send an email to the Yocto Project discussion group at yocto@yoctoproject.com or log into the freenode #yocto channel.

Revision History
Revision 1.4 April 2013
Released with the Yocto Project 1.4 Release.
Revision 1.5 October 2013
Released with the Yocto Project 1.5 Release.
Revision 1.5.1 January 2014
Released with the Yocto Project 1.5.1 Release.
Revision 1.6 April 2014
Released with the Yocto Project 1.6 Release.
Revision 1.7 October 2014
Released with the Yocto Project 1.7 Release.
Revision 1.8 April 2015
Released with the Yocto Project 1.8 Release.
Revision 2.0 October 2015
Released with the Yocto Project 2.0 Release.
Revision 2.1 April 2016
Released with the Yocto Project 2.1 Release.
Revision 2.2 October 2016
Released with the Yocto Project 2.2 Release.
Revision 2.3 May 2017
Released with the Yocto Project 2.3 Release.
Revision 2.4 October 2017
Released with the Yocto Project 2.4 Release.
Revision 2.5 May 2018
Released with the Yocto Project 2.5 Release.
Revision 2.6 TBD
Released with the Yocto Project 2.6 Release.

Table of Contents

1. Introduction
1.1. Overview
1.2. Kernel Modification Workflow
2. Common Tasks
2.1. Preparing the Build Host to Work on the Kernel
2.1.1. Getting Ready to Develop Using devtool
2.1.2. Getting Ready for Traditional Kernel Development
2.2. Creating and Preparing a Layer
2.3. Modifying an Existing Recipe
2.3.1. Creating the Append File
2.3.2. Applying Patches
2.3.3. Changing the Configuration
2.3.4. Using an "In-Tree"  defconfig File
2.4. Using devtool to Patch the Kernel
2.5. Using Traditional Kernel Development to Patch the Kernel
2.6. Configuring the Kernel
2.6.1. Using  menuconfig
2.6.2. Creating a  defconfig File
2.6.3. Creating Configuration Fragments
2.6.4. Validating Configuration
2.6.5. Fine-Tuning the Kernel Configuration File
2.7. Expanding Variables
2.8. Working with a "Dirty" Kernel Version String
2.9. Working With Your Own Sources
2.10. Working with Out-of-Tree Modules
2.10.1. Building Out-of-Tree Modules on the Target
2.10.2. Incorporating Out-of-Tree Modules
2.11. Inspecting Changes and Commits
2.11.1. What Changed in a Kernel?
2.11.2. Showing a Particular Feature or Branch Change
2.12. Adding Recipe-Space Kernel Features
3. Working with Advanced Metadata (yocto-kernel-cache)
3.1. Overview
3.2. Using Kernel Metadata in a Recipe
3.3. Kernel Metadata Syntax
3.3.1. Configuration
3.3.2. Patches
3.3.3. Features
3.3.4. Kernel Types
3.3.5. BSP Descriptions
3.4. Kernel Metadata Location
3.4.1. Recipe-Space Metadata
3.4.2. Metadata Outside the Recipe-Space
3.5. Organizing Your Source
3.5.1. Encapsulating Patches
3.5.2. Machine Branches
3.5.3. Feature Branches
3.6. SCC Description File Reference
A. Advanced Kernel Concepts
A.1. Yocto Project Kernel Development and Maintenance
A.2. Yocto Linux Kernel Architecture and Branching Strategies
A.3. Kernel Build File Hierarchy
A.4. Determining Hardware and Non-Hardware Features for the Kernel Configuration Audit Phase
B. Kernel Maintenance
B.1. Tree Construction
B.2. Build Strategy
C. Kernel Development FAQ
C.1. Common Questions and Solutions