Android 8.0 and higher mandate a minimum kernel version and kernel
configuration, which are verified by the Vendor Test Suite (VTS) and over-the-air
(OTA) updates. Android device kernels must enable kernel .config
support and the option to read the kernel configuration at runtime through the
procfs
file system.
Kernel .config support
All device kernels must enable the entirety of android-base.cfg, which must include the following kernel-config options (or their kernel-version equivalent):
CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y
Kernel version
For Android 9, the minimum Long Term Support (LTS) kernel version requirements are 4.4.107, 4.9.84, and 4.14.42.
- All SoCs productized in 2018 must launch with kernel 4.9.84 or higher.
- All other SoCs launching Android devices running Android 9 must use kernel 4.4.107 or higher.
- Device kernels based on 4.14 must include the 4.14.42 or higher LTS release.
- Regardless of launch date, all SoCs with device launches on Android 8.0 and higher remain subject to the kernel changes required to enable Treble.
- Older Android devices upgrading to Android 8.0 or higher can continue to use their original base kernel version.
For details on LTS kernels, see Long-term stable kernels and Android Common Kernels
Devicetree support
If the platform doesn't support the Advanced Configuration and Power Interface (ACPI) specification,
devicetree support in the kernel must be enabled and bootloaders must pass the
hardware description in the form of a devicetree to the kernel. The devicetree
must also be available for Android to read, and it must be able to pass vendor-
and ODM-specific parameters to Android. CONFIG_OF
is mandatory,
along with all other device- and subsystem-specific CONFIG_OF_*
kernel config options.
Use DebugFS
The implementation of the vendor interface can't rely on the DebugFS
file system to access debug information.
That's because in Android 7.0 to 10, DebugFS
can be enabled,
but VTS testing might be done with DebugFS
unmounted.
In Android 11, DebugFS
can't be accessed or mounted on
production devices, so device manufacturers must remove it. Before Android 11,
dumpstate
accessed binder statistics from DebugFS
.
Because user builds launching with Android 11 or higher can't access
DebugFS
, dumpstate
accesses binder statistics from
binderfs
. To enable Binderfs
, enable the kernel
config CONFIG_ANDROID_BINDERFS
.
In Android 11, VTS enforces these two requirements:
CONFIG_DEBUG_FS
isn't enabled in the device's kernel config.DebugFS
isn't listed under/proc/filesystems
.
DebugFS in Android 11
The following table describes how each of these three categories is
supported in Android 11. Note that the
following only applies to userdebug builds since DebugFS
can't be
mounted in user builds. Never mount DebugFS
in user builds for devices
launching on Android 11.
Use case | Android 11 userdebug build |
---|---|
One-time DebugFS files initialization, during startup.
This access happens only once during boot time.
|
Vendor init does this. |
Bugreport generation: The dumpstate HAL reads
DebugFS files, which become part of the bug report.
|
Done by dumpstate HAL within DumpstateBoard() when invoked
by the dumpstate tool.
|
Device-specific testing and validation | Adb root and shell |