1. Article purpose[edit source]
This article is intended for Distribution Package users (see Which Package better suits your needs for more information).
The Android Linux Common kernel is used in the STM32MPU distribution for Android™.
The STM32MPU distribution for Android™ includes prebuilt kernel binaries used to generate the partition images (boot
, dt
and vendor
). These binaries are available in the device/stm/<SocId>-kernel/prebuilt
directory.
This page explains how to rebuild the kernel binaries.
2. Prerequisites[edit source]
The environment must be installed using the Distribution Package adapted to your selected microprocessor device, STM32MP1 Distribution Package for Android.
To be able to execute following instruction you need to work from your distribution root directory STM32MP1 Distribution Package for Android, initialise your environment and then launch:
source build/envsetup.sh
bspsetup
lunch aosp-<BoardId>-userdebug
3. Partition layout[edit source]
The Linux kernel binary is part of the boot
partition.
The Linux kernel drivers built as loadable modules (.ko
files) are part of the vendor
partition.
The device tree binary file is part of the dt
partition.
For the compelete partition layout please see STM32MP15 Flash mapping for Android.
4. Loading the kernel sources[edit source]
By default, the kernel sources are not part of the STM32MPU distribution for Android. To load the sources, execute the following command:
load_kernel
This will load the Android™ Linux common kernel sources. These can then be found in the device/stm/<SocId>-kernel/linux-<SocId>
directory.
5. Building the kernel[edit source]
After retrieving the kernel sources you can build it using:
build_kernel
The output can be found in: out-bsp/<SocId>/KERNEL_OBJ
This command generate kernel, DT and gpu module. It is possible to generate them one by one:
build_kernel dtb build_kernel gpu build_kernel vmlinux
For more details please check the command helper:
build_kernel --help
Usage: build_kernel [Options] [Command] This script allows building the Linux kernel source Options: -h/--help: print this message -i/--install: update prebuilt images -v/--version: get script version --verbose: enable verbosity Command: only one command at a time supported dtb: build only device-tree binaries gpu: build only gpu module (kernel is build if not already performed) defaultconfig: build only .config based on default defconfig files and fragments menuconfig: display standard Linux kernel menuconfig interface modules: build only kernel modules binaries (kernel is build if not already performed) mrproper: execute make mrproper on targeted kernel vmlinux: build only kernel vmlinux binary
6. Generating kernel prebuilt images[edit source]
When you have compiled your new kernel and or other modules you need to generate prebuilt images.
build_kernel -i
or
build_kernel -i dtb build_kernel -i gpu build_kernel -i vmlinux
And then build the distribution to generate output images.
make -j
7. Kernel configuration[edit source]
The kernel configuration file used is merged between the following files (this operation is performed at the beginning of the kernel build process):
- The Android configuration files named
android-base.config
andandroid-recommended.config
files available in thedevice/stm/<SocId>-kernel/source/kconfig/<kernel version>/
directory. - The
android-soc.config
file available in thedevice/stm/<SocId>-kernel/source/kconfig/<kernel version>/
directory.
The kernel device tree used is set in the dt.mk
file available in the device/stm/<SocId>/build/tasks/
directory. For more information please see Device tree.
For more details information on kernel configuration, please see How to customize the Linux kernel for Android