TipsAndTricks/KernelDevelopmentWithEsdk
Overview
This manual describes the Linux kernel development process with Yocto and devtool.
Setup your bitbake build environment
Open a new terminal window and navigat to your poky directory. We'll refer to this terminal as your 'bitbake terminal'.
The following command will configure the Yocto build environment
source poky/oe-init-build-env kernel-dev
Build Extensible SDK (bitbake terminal)
bitbake -c populate_sdk_ext core-image-minimal
Alternatively, if you are based on a poky derivative for a particular release, you can download the minimal esdk and install it. For example, the pyro core-image-minimal esdk release for x86-64 is located [here].
Install Extensible SDK (bitbake terminal)
The ESDK installer can be found in /path_to_build_directory/kernel-dev/tmp/deploy/sdk/
./tmp/deploy/sdk/poky-glibc-x86_64-core-image-minimal-corei7-64-toolchain-ext-2.3.sh
Follow the installer instructions and provide a target directory for your ESDK installation e.g /path_to_esdk/
Checkout the kernel source tree and construct .config (bitbake terminal)
Check out the Linux kernel source and construct a .config from the Yocto kernel configuration segments. The sources can be found in /path_to_build_directory/kernel-dev/workspace/sources/linux-yocto.
devtool modify linux-yocto
Setup your ESDK build environment (ESDK terminal)
Open a new terminal and setup your build environment. We'll refer to this terminal as your 'ESDK terminal'
. /path_to_esdk/environment-setup-corei7-64-poky-linux
NOTE: If you see the message below you will really need to open a new terminal :).
"SDK environment now set up; additionally you may now run devtool to perform development tasks. Run devtool --help for further details. WARNING: attempting to use the extensible SDK in an environment set up to run bitbake - this may lead to unexpected results. Please source this script in a new shell session instead."
Build your kernel (ESDK terminal)
Navigate to your workspace directory e.g /path_to_build_directory/kernel-dev/workspace/sources/linux-yocto and build the kernel
make
Modify your kernel and commit your changes (ESDK terminal)
You can navigate to the Linux source directory (/path_to_build_directory/kernel-dev/workspace/sources/linux-yocto) and modify the kernel. Commit your kernel changes.
Build an image with your kernel changes (optional) (bitbake terminal)
devtool build-image core-image-minimal
Export patches and create a bbappend file (bitbake terminal)
To export your commits to patches and a bbappend file use the following command.
devtool finish linux-yocto /path_to_poky_directory/meta-yocto-bsp/
The patches and the bbappend can be found in /path_to_poky_directory/meta-yocto-bsp/recipes-kernel/linux.
Build image with your modified kernel (bitbake terminal)
You can now build an image which will include your kernel patches.
Execute the following command from your build directory ( e.g /path_to_build_directory/kernel-dev/)
bitbake core-image-minimal