- Embedded Linux Development Using Yocto Project Cookbook(Second Edition)
- Alex González
- 255字
- 2021-06-30 19:21:30
Adding a custom kernel and bootloader
The BSP that encapsulates the hardware modifications for a given platform is mostly located in the bootloader, usually U-Boot (Das U-Boot) for ARM devices, and the Linux kernel. Both U-Boot and the Linux kernel have upstream development trees, at git.denx.de and kernel.org respectively, but it is very common for manufacturers of embedded hardware to provide their own trees for both bootloader and kernel.
Development in U-Boot and the Linux kernel is usually done externally to Yocto, as they are easy and quicker to build using a cross-compilation toolchain, like the one provided by Yocto's SDK.
The development work is then integrated into Yocto in one of two ways:
- With patches added to the kernel and U-Boot bbappend files. This method will build the same source as the reference design board we are using as a base, and apply our changes over it. This is what we have seen in the previous recipe.
- Using a different Git repository, forked from the Linux kernel and U-Boot Git repositories being used by the reference design, and using a bbappend file to point the recipe to it. This way, we can directly commit the changes to the repository and the Yocto build system will build them.
Usually, a forked Git repository is only needed when the hardware changes are substantial and the work in the Linux kernel and bootloader is going to be extensive. The recommendation is to start with patches, and only use a forked repository when they become difficult to manage.