В этом руководстве представлены пошаговые инструкции по загрузке, компиляции и прошивке пользовательского ядра Pixel для разработки. Благодаря GKI теперь можно обновлять ядро независимо от сборки платформы Android. Эти шаги применимы только для устройств Pixel 6 и более поздних моделей. Это связано с тем, что для устройств Pixel 5 и более ранних моделей требуется обновление модулей ядра в разделе vendor , которое зависит от сборки платформы Android для этих устройств. Таблица поддерживаемых GKI ветвей ядра Pixel включает ветку манифеста репозитория ядра для каждого поддерживаемого GKI устройства Pixel. См. раздел «Устаревшие ядра Pixel» для получения информации о ветвях манифеста ядра Pixel 5 и более ранних моделей.
Pixel 6 и Pixel 6 Pro также поддерживаются в ядре Linux, разработанном разработчиками, и могут загружаться в командную строку устройства только с драйверами из этого ядра. Более подробную информацию см. в разделе «Сборка и прошивка ядра Pixel из этого ядра» .
Соберите и прошейте ядра GKI Pixel.
В этом разделе описаны шаги по синхронизации, сборке и прошивке поддерживаемых GKI веток ядра. В следующей таблице приведено соответствие поддерживаемых устройств Pixel и соответствующих им веток репозитория ядра, используемых в производственной среде.
Ветви ядра Pixel, поддерживаемые GKI
| Устройство | Отделения хранилища | Ядро GKI |
|---|---|---|
| Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
| Pixel 9 Pro Fold (Comet) | android-gs-comet-6.1-android16 | android14-6.1 |
| Pixel 9 (tokay) Pixel 9 Pro (кайман) Pixel 9 Pro XL (komodo) | Android-GS-caimito-6.1-android16 | android14-6.1 |
| Pixel 8a (Akita) | android-gs-akita-6.1-android16 | android14-6.1 |
| Pixel 8 (shiba) Pixel 8 Pro (husky) | android-gs-shusky-6.1-android16 | android14-6.1 |
| Pixel Fold (felix) | android-gs-felix-6.1-android16 | android14-6.1 |
| Планшет Pixel (Tangorpro) | android-gs-tangorpro-6.1-android16 | android14-6.1 |
| Pixel 7a (lynx) | android-gs-lynx-6.1-android16 | android14-6.1 |
| Pixel 7 (пантера) Pixel 7 Pro (гепард) | Android-GS-Pantah-6.1-android16 | android14-6.1 |
| Pixel 6a (bluejay) | android-gs-bluejay-6.1-android16 | android14-6.1 |
| Pixel 6 (oriole) Pixel 6 Pro (Raven) | Android-GS-равиоле-6.1-android16 | android14-6.1 |
Помимо поддерживаемых производителем ядер, устройства Pixel 6 и 6 Pro поддерживаются для целей разработки GKI только на общих ветвях ядра Android, указанных в таблице « Поддерживаемые комбинации платформы и ядра Android для Pixel 6 и Pixel 6 Pro» . Из-за различий в UAPI между HAL платформы Android и драйверами ядра Pixel, в таблице указаны поддерживаемые комбинации сборок.
Поддерживаемые комбинации платформы Android и ядра для Pixel 6 и Pixel 6 Pro.
| Ветка манифеста пиксельного ядра | Филиал ГКИ | Сборка платформы Android |
|---|---|---|
| gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
| gs-android16-6.12-gs101 | android16-6.12 | android-latest-release |
| gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
Подготовьте ваше устройство Pixel
Следующая блок-схема описывает процесс обновления ядра на устройствах Pixel 6 и более поздних моделей:

Прошейте устройство с помощью flash.android.com
- Перейдите на сайт flash.android.com .
- Выберите сборку Android в зависимости от поддерживаемых комбинаций платформы и ядра Android .
- Для версии
android-latest-releaseвыберите один из вариантов: "Вернуться к публичной версии", "Canary" или "Beta".
- Для версии
- Выберите следующие варианты:
- Устройство для протирки
- Принудительное обновление всех разделов
- Отключить проверку
- Нажмите кнопку «Установить сборку» , чтобы прошить устройство.

Синхронизировать репозиторий ядра
Выполните следующие команды, чтобы загрузить исходный код ядра. Для получения информации о ветке Pixel KERNEL_MANIFEST_BRANCH обратитесь к таблице «Поддерживаемые комбинации платформ Android и ядер для Pixel 6 и Pixel 6 Pro» .
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Обновите образ оперативной памяти поставщика.
Обновите файл vendor_ramdisk- DEVICE .img в репозитории ядра, чтобы он соответствовал сборке платформы Android, установленной на устройстве. Существует несколько вариантов обновления файла vendor_ramdisk- DEVICE .img . Используйте вариант (1), если вы используете Android 15 QPR2 (BP11.241025.006) или более позднюю версию. В противном случае используйте вариант (2).
Вариант 1) Обновить только биты DTB и DLKM оперативной памяти раздела vendor_boot.
Начиная с версии fastboot 35.0.2-12583183 , вы можете напрямую прошивать образы DTB и DLKM в оперативной памяти на раздел
vendor_boot. Для использования этой опции обновите ваши инструменты платформы Android до версии 36.0.0 или новее . Для этого выполните следующую команду:$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"Следуйте инструкциям по прошивке DTB и
vendor_boot:dlkmв разделе «Прошивка образов ядра» .Вариант 2) Извлечь образ оперативной памяти производителя из заводского образа Pixel .
Загрузите поддерживаемый заводской образ для вашего устройства по ссылке https://developers.google.com/android/images .
Распакуйте файл
vendor_boot.img:В приведенных ниже командах в качестве примера используется Pixel 6 Pro AP1A.240505.004 . Замените имя zip-файла на имя файла загруженного вами заводского образа.
unzip raven-ap1a.240505.004-factory-9d783215.zipcd raven-ap1a.240505.004unzip image-raven-ap1a.240505.004.zip vendor_boot.imgРаспакуйте файл
vendor_boot.img, чтобы получить образ оперативной памяти поставщика.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_outСкопируйте извлеченный файл
vendor-ramdisk-by-name/ramdisk_в репозиторий ядра Pixel.Устройство DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (Raven)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img Pixel 6a (bluejay) private/devices/google/bluejay/vendor_ramdisk- bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
Скомпилируйте ядро.
В Android 13 скрипт build.sh был заменен новой системой сборки ядра под названием Kleaf . Для устройств, использующих android13-5.15 и более поздние версии, ядро следует собирать с помощью Kleaf.
Для удобства можно запустить скрипт build_ DEVICE .sh расположенный в репозитории KERNEL_REPO_ROOT . В большинстве случаев DEVICE должен быть кодовым именем, которое может обозначать одно устройство, например, "akita" (Pixel 8a), или группу связанных устройств, использующих одно ядро, например, "caimito", что означает Pixel 9 (tokay), Pixel 9 Pro (caiman) и Pixel 9 Pro XL (komodo). Для android14 и более ранних версий используйте build_slider.sh для Pixel 6 и Pixel 6 Pro и build_cloudripper.sh для Pixel 7 и Pixel 7 Pro.
Например, чтобы собрать ядро для Pixel 6 из ветки android-gs-raviole-5.10-android14 , вам нужно будет выполнить следующую команду:
build_slider.sh
По умолчанию в производственных ветках ядра скрипты build_ DEVICE .sh используют предварительно собранное ядро GKI для ускорения процесса сборки. Если вы хотите изменить ядро ядра, установите переменную среды BUILD_AOSP_KERNEL=1 чтобы собрать ядро из локальных исходных кодов. В ветках ядра для разработки исходный код ядра собирается напрямую по умолчанию.
Для получения более подробной информации о системе сборки ядра и способах ее настройки обратитесь к статье Kleaf - Building Android Kernels with Bazel .
Прошейте образы ядра
Примечание: Если вы не отключили проверку, вам необходимо сделать это перед прошивкой пользовательского ядра. Вот команда для этого:fastboot oem disable-verification
ВНИМАНИЕ: Если вы устанавливаете пользовательское ядро поверх существующей сборки платформы, вам может потребоваться стереть данные с устройства, если с новым ядром связано понижение уровня патча безопасности (SPL). Этот процесс удалит все ваши личные данные. Обязательно сделайте резервную копию данных перед очисткой.fastboot -w
Для прошивки образов ядра выполните команду fastboot flash для каждого раздела ядра, указанного для вашего устройства. Для динамических разделов перед прошивкой необходимо перезагрузиться в режим fastbootd .
| Устройство | Разделы ядра |
|---|---|
| Pixel 6 (oriole) Pixel 6 Pro (Raven) Pixel 6a (bluejay) | ботинок dtbo vendor_boot или vendor_boot:dlkm vendor_dlkm (динамический раздел) |
| Пиксель 9 (тегу) Pixel 9 Pro Fold (Comet) Pixel 9 (tokay) Pixel 9 Pro (кайман) Pixel 9 Pro XL (komodo) Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (felix) Планшет Pixel (Tangorpro) Pixel 7a (lynx) Pixel 7 (пантера) Pixel 7 Pro (гепард) | ботинок dtbo vendor_kernel_boot vendor_dlkm (динамический раздел) system_dlkm (динамический раздел) |
Вот команды прошивки для Pixel 6 в android-mainline :
fastboot flash boot out/slider/dist/boot.img
fastboot flash dtbo out/slider/dist/dtbo.img
fastboot flash --dtb out/slider/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Для Pixel 6, Pixel 6 Pro и Pixel 6a, если вы обновляли раздел vendor_ramdisk в разделе «Обновление раздела vendor_ramdisk» , то вместо этого используйте следующую команду для обновления раздела vendor_boot :
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
Образы ядра можно найти в каталоге DIST_DIR .
| Ветвь ядра | DIST_DIR |
|---|---|
| v5.10 | out/mixed/dist |
| версия 5.15 и более поздние | out/ DEVICE /dist |
Примечание: Если у вас есть последовательный адаптер и вы хотите включить запись логов в последовательный порт, используйте следующую команду:Пример команды для подключения с хоста: fastboot oem uart enablefastboot oem uart config 3000000screen -fn /dev/ttyUSB* 3000000
Восстановите заводские образы.
Для восстановления заводских настроек устройства можно использовать flash.android.com .
Соберите и прошейте ядро Pixel из основного репозитория.
Поскольку Pixel 6 и Pixel 6 Pro поддерживаются в основном ядре Linux, вы можете использовать android-mainline только с драйверами из основного ядра для загрузки в командную строку устройства для разработки ядра. В этом разделе описаны шаги по синхронизации, сборке и прошивке ядра Pixel 6 и Pixel 6 Pro из android-mainline .
Для начала выполните следующие шаги.
- Подготовьте устройство, следуя инструкциям в разделе «Подготовка устройства Pixel».
- Синхронизируйте ветку манифеста ядра
common-android-mainline, выполнив действия, описанные в разделе «Синхронизация репозитория ядра» . Конфигурация целевой задачи сборки Kleaf определяется по пути
KERNEL_REPO_ROOT /devices/google/raviole. Для компиляции целевой задачи сборкиraviole_upstreamвыполните команду Kleaf:tools/bazel run //devices/google/raviole:raviole_upstream_distАналогично серийным ядрам, при прошивке пользовательского ядра поверх заводских образов Android отключите проверку и очистите устройство. Более подробную информацию см. в примечаниях к разделу «Прошивка образов ядра» .
В режиме fastboot выполните следующие команды для прошивки образов ядра:
fastboot flash boot out/raviole_upstream/dist/boot.img fastboot flash dtbo out/raviole_upstream/dist/dtbo.img fastboot flash --dtb out/raviole_upstream/dist/dtb.img \ vendor_boot:dlkm out/raviole_upstream/dist/initramfs.imgДля доступа к командной строке устройства можно перезагрузиться в режим восстановления, выполнив команду:
fastboot reboot recoveryОткройте оболочку устройства, выполнив команду
adb shell. Также можно использовать root-доступ, выполнив командуadb root.
Устаревшие ядра Pixel
Для справки, таблица ветвей ядра Legacy Pixel содержит информацию о ветвях репозитория ядра для устройств Pixel 5 и более ранних моделей. Это устройства, не поддерживающие GKI.
Устаревшие ветви ядра Pixel
| Устройство | Бинарные пути в дереве AOSP | Отделения хранилища |
|---|---|---|
| Пиксель 5a (барбет) Pixel 4a (5G) (bramble) Pixel 5 (redfin) | device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
| Pixel 4a (рыбий глаз) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
| Пиксель 4 (пламя) Pixel 4 XL (коралловый) | device/google/coral-kernel | android-msm-coral-4.14-android13 |
| Pixel 3a (sargo) Pixel 3a XL (bonito) | device/google/bonito-kernel | android-msm-bonito-4.9-android12L |
| Pixel 3 (blueline) Pixel 3 XL (штриховка) | device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
| Пиксель 2 (судак) Pixel 2 XL (Таймэнь) | device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
| Пиксель (парусник) Pixel XL (marlin) | device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |