Ядро Android: часто задаваемые вопросы

Этот документ содержит часто задаваемые вопросы о ядре Android, известном также как ядро ​​Generic Kernel Image (GKI). Если вы не знакомы с GKI и терминологией ядра GKI, обратитесь к обзору ядра .

Можно ли изменить списки символов интерфейса модуля ядра (KMI) в стабильном ядре?

Изменения, не затрагивающие существующий KMI, можно добавлять в замороженные ядра. Эти изменения включают новые экспортированные функции и записи списка символов. Подробности см. в разделе «Управление списками символов ».

Могу ли я изменить структуры, используемые модулями поставщика в стабильном ядре?

Структуры, являющиеся частью интерфейса KMI, не могут быть изменены в ядрах с замороженным KMI. До заморозки KMI эти структуры можно изменить.

Могу ли я изменить ядро, если не нарушу совместимость двоичных файлов и исходных кодов?

Изменения, не затрагивающие KMI, можно внести, как описано в патчах для Android .

Как GKI обрабатывает конфигурацию ядра?

Информацию о конфигурации ядра см. в разделе «Изменения в gki_defconfig» .

Как мне обрабатывать исправления ошибок исходной версии для перезаписи существующих модулей GKI?

Если вы создаете модуль поставщика на основе драйвера в Android Common Kernel (ACK) , вы должны обеспечить распространение исправлений ошибок из исходного кода и ACK на ваш модуль. Как правило, в ваших интересах использовать ядро ​​GKI и модули GKI без изменений, чтобы Google постоянно предоставлял эти обновления.

Существуют ли специальные тесты GKI?

Существуют тесты Vendor Test Suite (VTS) , которые проверяют, что установлена ​​сертифицированная сборка GKI, а также обеспечивают соблюдение требований GKI для каждой версии. Например, существуют тесты VTS Android 12 для загрузочного заголовка v3 и для проверки наличия необходимых разделов на устройстве с ядром 5.10.

Как создать файл фрагмента defconfig проекта для сборок устройств?

Многие GKI-совместимые устройства используют фрагмент конфигурации для описания параметров конфигурации, необходимых в дополнение к gki_defconfig для сборки модулей поставщика. Примеры, являющиеся частью базы кода ACK, включают Cuttlefish и DB845c. Невозможно избежать ручной проверки параметров конфигурации для оптимизации фрагмента, но scripts/diffconfig из исходных кодов ядра полезны для сравнения результатов gki_defconfig и gki_defconfig+device.fragment .

Есть ли обходной путь для обработки modprobe - и _ как эквивалента?

На странице руководства modprobe содержится следующее описание: « modprobe разумно добавляет или удаляет модуль из ядра Linux: обратите внимание, что для удобства нет разницы между _ и - в именах модулей (выполняется автоматическое преобразование подчеркивания)». Команда GKI придерживается стандартного соглашения восходящего потока, поэтому инструменты поставщиков или соглашения об именовании модулей должны учитывать это соблюдение.

Как включить debugfs для внутреннего использования?

Подробности о включении debugfs см. в разделе «Интрузивные функции отладки нисходящего потока ».

Как я могу устранить несовпадающие ABI между ядром GKI с включенной конкретной конфигурацией модуля?

Несовпадающие ABI между ядром GKI и конфигурацией модуля представляют собой неявную зависимость конфигурации модуля, при которой включение модуля приводит к встроению двоичной конфигурации в результирующий образ ядра. Обратитесь к команде разработчиков ядра Android ( kernel-team@android.com ), чтобы определить дальнейший путь. После определения списка символов создайте ошибку в системе отслеживания ошибок и загрузите изменение в список символов.

У меня есть устройства, совместимые с GKI 1.0, на которых установлено ядро ​​5.4, выпущенное с Android 11 и 12. Какие варианты обновления ядра доступны и как я могу протестировать эти устройства при обновлении до Android 12 и 13?

Обратитесь к матрице совместимости для получения списка поддерживаемых версий ядра для версий запуска и обновления. Вот два примера обновления.

Пример 1. Пользователь устройства, которое запускается под управлением Android 11 с ядром android11-5.4 ( GKI 1.0 ), может выбрать любой из этих вариантов при обновлении до Android 12:

  • Обновите ядро android12-5.10 GKI 2.0 (настоятельно рекомендуется).

  • Сохраните ядро android11-5.4 .

  • Обновите ядро ​​до android12-5.4 .

Пример 2. Пользователь устройства, которое запускается под управлением Android 12 с ядром android12-5.4 или android12-5.10 , может выбрать любой из этих вариантов при обновлении до Android 13:

  • Обновите ядро ​​до android13-5.10 или android13-5.15 GKI 2.0 (настоятельно рекомендуется).

  • Сохраните ядро android12-5.4 GKI 1.0 .

  • Сохраните ядро android12-5.10 GKI 2.0 .

Специально для тестирования соответствия Treble мы рекомендуем вам выполнить одно из следующих действий:

  • Замените партнерское ядро ​​сертифицированным ядром GKI 1.0 ( android11-5.4 или android12-5.4 ).

  • Поставляется с сертифицированным ядром GKI 2.0 ( android12-5.10 , android13-5.10 или android13-5.15 ) в зависимости от вашего выбора.

Вы можете загрузить сборки GKI 2.0 из сборок выпуска Generic Kernel Image (GKI) .