内核配置

您可以将以下配置设置用作 Android 内核配置的基础。设置会整理到 android-baseandroid-base-ARCHandroid-recommended .cfg 文件中:

  • android-base。这些选项可实现核心 Android 功能,并且应配置为所有设备指定的选项。
  • android-base-ARCH。这些选项可实现核心 Android 功能,并且应配置为架构 ARCH 的所有设备指定的选项。并非所有架构都具有相应的特定于架构的必需选项文件。如果您的架构没有相应文件,则它没有额外特定于架构的 Android 内核配置要求。
  • android-recommended。这些选项可实现高级 Android 功能,设备可选择性启用。

这些配置文件位于 kernel/configs repo 中。使用一组对应您正在使用的内核版本的配置文件。

如需详细了解已用于加强设备内核的控件,请参阅系统和内核安全。如需详细了解必需的设置,请参阅 Android 兼容性定义文档 (CDD)

生成内核配置

对于具有极简 defconfig 的设备,您可以在内核树中使用 merge_config.sh 脚本来启用选项:

ARCH=ARCH scripts/kconfig/merge_config.sh <...>/device_defconfig <...>/android-base.cfg <...>/android-base-ARCH.cfg <...>/android-recommended.cfg

这会生成一个 .config 文件,您可以使用该文件来保存新的 defconfig 或编译一个启用 Android 功能的新内核。

其他内核配置要求

在某些情况下,平台维护人员可以从多项内核功能中进行选择以满足 Android 依赖项的要求。此类依赖项不能在内核配置片段文件(如上所述)中表示,因为这些文件的格式不支持逻辑表达式。在 Android 9 中,兼容性测试套件 (CTS)供应商测试套件 (VTS) 会验证是否满足以下要求:

  • CONFIG_OF=yCONFIG_ACPI=y
  • 4.4 和 4.9 内核具有 CONFIG_ANDROID_LOW_MEMORY_KILLER=y,或同时具有 CONFIG_MEMCG=yCONFIG_MEMCG_SWAP=y
  • CONFIG_DEBUG_RODATA=yCONFIG_STRICT_KERNEL_RWX=y
  • CONFIG_DEBUG_SET_MODULE_RONX=yCONFIG_STRICT_MODULE_RWX=y
  • 仅适用于 ARM64:CONFIG_ARM64_SW_TTBR0_PAN=yCONFIG_ARM64_PAN=y

此外,对于 Android 9 中的 4.9 内核,必须将 CONFIG_INET_UDP_DIAG 选项设置为 y

启用 USB 主机模式选项

对于 USB 主机模式音频,请启用以下选项:

CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=y
# CONFIG_USB_AUDIO is for a peripheral mode (gadget) driver

对于 USB 主机模式 MIDI,请启用以下选项:

CONFIG_SND_USB_MIDI=y

Seccomp-BPF 与 TSYNC

Seccomp-BPF 是一种内核安全技术,支持创建沙盒来限制进程可以进行的系统调用。TSYNC 功能可以实现从多线程程序中使用 Seccomp-BPF。这种能力仅限由上游提供 seccomp 支持的架构(ARM、ARM64、x86 和 x86_64)。

用于 ARM-32、X86、X86_64 的内核 3.10 向后移植

确保已在 Kconfig 中启用 CONFIG_SECCOMP_FILTER=y(截至 Android 5.0 CTS 已验证),然后择优挑选来自 AOSP kernel/common:android-3.10 代码库的以下变更:

用于 ARM-64 的内核 3.10 向后移植

确保已在 Kconfig 中启用 CONFIG_SECCOMP_FILTER=y(截至 Android 5.0 CTS 已验证),然后择优挑选来自 AOSP kernel/common:android-3.10 代码库的以下变更: