Build a kernel

From InCircuit
Revision as of 14:43, 31 January 2017 by CGruenig (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The Linux Kernel is the main part of the operating system, supplying interface to the hardware and for managing and using applications. To fulfill this task, the kernel is highly configurable and sometimes even has to be modified to work properly.

Menu based configuration

Using buildroot, a working kernel is built automaticly the first time, a image is created. If this default isn't configured as needed, buildroot provides the possibility to invoke make linux26-menuconfig or make linux-menuconfig in newer versions. Using this interface is preferred over calling the kernel's menuconfig directly, as certain parameters needed for cross compilation and configuration for a different architecture are set automatically. Additionally buildroot is informed about changes on the kernel configuration automatically and will rebuilt the kernel the next time an image is created.

Kernel menuconfig.png

Modifying drivers and other code

Some applications as well as a custom board design might require patching the kernel or modifying the source directly. As described in Buildroot directories you can find the sources of the linux kernel eg. at project_build_arm/adb1000g45/linux-2.6.33.2. These sources can be modified as needed.

To be able to decide which packages have been built already and which not, buildroot provides a set of so called stamp files. If these are present and untouched for a given package, it won't be built again, as it is assumed to be recent. This fasten up the whole process of creating a new image. But if there are some files in a specific package, eg. the kernel, are modified, buildroot won't built these automatically. To do so the file .stamp_configured has to be modified, eg by invoking

 touch .stamp_configured

within the kernel directory before executing make in the buildroot directory.

Personal tools