В этом руководстве представлены пошаговые инструкции о том, как загрузить, скомпилировать и прошить собственное ядро Pixel для разработки. Благодаря GKI теперь можно обновлять ядро независимо от сборки платформы Android. Эти шаги применимы только для устройств Pixel 6 и более поздних версий. Это связано с тем, что устройства Pixel 5 и более ранние версии требуют обновления модулей ядра в разделе vendor
, который зависит от сборки платформы Android для этих устройств. Таблица ветвей ядра пикселей, поддерживаемых GKI, включает ветку манифеста репозитория ядра для каждого устройства Pixel, поддерживаемого GKI. Информацию о ветвях манифеста ядра Pixel 5 и более ранних версий см. в разделе « Ядра устаревших пикселей» .
GKI поддерживает ветки ядра Pixel.
Устройство | Двоичный путь в дереве AOSP | Филиалы репозитория | Ядро ГКИ |
---|---|---|---|
Pixel 9 Pro Fold (комета) | устройство/google/comet-kernel | android-gs-comet-6.1-android14-qpr3-d1 | андроид14-6.1 |
Пиксель 9 (сегодня) Pixel 9 Pro (кайман) Pixel 9 Pro XL (Комодо) | устройство/google/caimito-kernel | Android-gs-caimito-6.1-android14-qpr3-d1 | андроид14-6.1 |
Пиксель 8а (акита) | устройство/Google/akita-kernel | Android-gs-akita-5.15-android14-qpr3 | андроид14-5.15 |
Пиксель 8 (сиба) Pixel 8 Pro (хаски) | устройство/Google/шуски-ядро | android-gs-shusky-5.15-android14-qpr3 | андроид14-5.15 |
Пиксель Фолд (Феликс) | устройство/google/felix-kernel | android-gs-felix-5.10-android14-qpr3 | андроид13-5.10 |
Пиксельный планшет (тангорпро) | устройство/google/tangorpro-kernel | Android-gs-tangorpro-5.10-android14-qpr3 | андроид13-5.10 |
Пиксель 7а (рысь) | устройство/google/lynx-kernel | Android-gs-lynx-5.10-android14-qpr3 | андроид13-5.10 |
Пиксель 7 (пантера) Pixel 7 Pro (гепард) | устройство/google/pantah-kernel | Android-gs-pantah-5.10-android14-qpr3 | андроид13-5.10 |
Пиксель 6а (блюджей) | устройство/Google/bluejay-kernel | Android-GS-bluejay-5.10-android14-qpr3 | андроид13-5.10 |
Пиксель 6 (иволга) Pixel 6 Pro (ворон) | устройство/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | андроид13-5.10 |
Помимо ядер, поддерживаемых заводом-изготовителем, устройства Pixel 6 и 6 Pro поддерживаются для целей разработки GKI только в общих ветвях ядра Android, включенных в таблицу поддерживаемых платформ Android Pixel 6/6 Pro и комбинаций ядер . Из-за различий в UAPI поставщиков между HAL платформы Android и драйверами ядра Pixel в таблице представлены поддерживаемые комбинации сборок.
Поддерживаемые комбинации платформ Android и ядер Pixel 6/6 Pro
Ветка манифеста ядра пикселя | Филиал ГКИ | Сборка платформы Android | aosp-main поддержка? |
---|---|---|---|
gs-android-gs-raviole-mainline | Android-основная линия ( v6.8 ) | АП1А.240505.004 (11583682) | Да |
android14-gs-pixel-6.1 | андроид14-6.1 | АП1А.240505.004 (11583682) | Да |
gs-android13-gs-равиоль-5.15 | андроид13-5.15 | TQ1A.230205.002 (9471150) | Нет |
Подготовьте устройство Pixel
В следующей блок-схеме описан процесс обновления ядра на устройствах Pixel 6 и более поздних версий:
Прошить устройство с помощью flash.android.com.
- Перейдите на flash.android.com.
- Выберите сборку Android на основе поддерживаемых комбинаций платформы Android и ядра .
- Выберите следующие параметры:
- Очистить устройство
- Принудительная прошивка всех разделов
- Отключить проверку
- Нажмите кнопку Установить сборку, чтобы прошить устройство.
Загрузите и скомпилируйте ядро
Синхронизировать репозиторий ядра
Выполните следующие команды, чтобы загрузить исходный код ядра. См. таблицу поддерживаемых платформ Android Pixel 6/6 Pro и комбинаций ядер для Pixel KERNEL_MANIFEST_BRANCH .
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Обновите виртуальный диск поставщика
Обновите vendor_ramdisk- DEVICE .img
в репозитории ядра, чтобы он соответствовал сборке платформы Android, установленной на устройстве. Есть несколько вариантов, которым вы можете следовать.
Вариант 1) Извлечь образ виртуального диска поставщика из заводского образа Pixel .
Загрузите поддерживаемый заводской образ для вашего устройства с https://developers.google.com/android/images .
Извлеките
vendor_boot.img
:- В следующих командах в качестве примера используется Pixel 6 Pro AP1A.240505.004 . Замените имя zip-файла именем загруженного вами заводского образа.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip 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 Пиксель 6 (иволга)
Pixel 6 Pro (ворон)пребилды/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img Пиксель 6а (блюджей) Private/devices/google/bluejay/vendor_ramdisk- bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
Вариант 2) Скопируйте vendor_ramdisk
из локального репозитория платформы Android.
Устройство | DEVICE_RAMDISK_PATH |
---|---|
Пиксель 6 (иволга) Pixel 6 Pro (ворон) | пребилды/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img |
Пиксель 6а (блюджей) | Private/devices/google/bluejay/vendor_ramdisk- bluejay.img |
cp ANDROID_ROOT/out/target/product/DEVICE/vendor_ramdisk-debug.img \
KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH/vendor_ramdisk-DEVICE.img
Скомпилировать ядро (Kleaf)
В Android 13 скрипт build.sh
был заменен новой системой сборки ядра под названием Kleaf . Для устройств, использующих android13-5.15
и более поздние версии, ядро должно быть собрано с использованием Kleaf.
Для Pixel 6 и 6 Pro с ядром android14
и более поздних версий запустите команду сборки Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Для Pixel 6 и 6 Pro с ядрами android13-5.15
запустите команду сборки Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Для всех остальных ядер Pixel запустите скрипт build_ DEVICE.sh
расположенный в KERNEL_REPO_ROOT . Например, чтобы собрать ядро для Pixel 6 на ветке android-gs-raviole-5.10-android14
, вам нужно выполнить команду:
build_slider.sh
По умолчанию сценарии build_ DEVICE .sh
используют предварительно созданное ядро GKI для ускорения процесса сборки. Если вы хотите изменить ядро ядра, установите переменную среды BUILD_AOSP_KERNEL=1
чтобы вместо этого собрать ядро из локальных источников.
Более подробную информацию о системе сборки ядра и о том, как настроить сборку, можно найти в документе Kleaf — Создание ядер Android с помощью Bazel .
Прошить образы ядра
Примечание. Если вы не отключили проверку, это необходимо сделать перед прошивкой кастомного ядра. Вот команда для этого:fastboot oem disable-verification
ВНИМАНИЕ: Если вы прошиваете собственное ядро поверх сборки платформы, вам может потребоваться стереть данные с устройства, если с новым ядром связано понижение уровня исправлений безопасности (SPL). Этот процесс удаляет все ваши личные данные. Обязательно сделайте резервную копию данных перед удалением.fastboot -w
Чтобы прошить образы ядра, запустите команду fastboot flash
для каждого раздела ядра, указанного для вашего устройства. Для динамических разделов перед прошивкой необходимо перезагрузиться в режим fastbootd
.
Устройство | Разделы ядра |
---|---|
Пиксель 6 (иволга) Pixel 6 Pro (ворон) Пиксель 6а (блюджей) | ботинок дтбо vendor_boot vendor_dlkm (динамический раздел) |
Пиксель 8 (сиба) Pixel 8 Pro (хаски) Пиксель Фолд (Феликс) Пиксельный планшет (тангорпро) Пиксель 7а (рысь) Пиксель 7 (пантера) Pixel 7 Pro (гепард) | ботинок дтбо 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 vendor_boot out/slider/dist/vendor_boot.img
fastboot reboot fastboot
fastboot flash vendor_dlkm out/slider/dist/vendor_dlkm.img
Образы ядра можно найти в DIST_DIR .
Ветка ядра | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 и более поздние версии | out/ DEVICE /dist |
Примечание. Если у вас есть последовательный ключ и вы хотите включить последовательные журналы, введите команду:Пример команды для подключения с хоста: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Восстановить заводские образы
Чтобы восстановить заводские образы вашего устройства, вы можете использовать flash.android.com .
Устаревшие ядра пикселей
Для справки: таблица ветвей ядра устаревшей версии Pixel содержит ветки репозитория ядра для устройств Pixel 5 и более ранних версий. Это устройства, не поддерживающие GKI.
Устаревшие ветки ядра Pixel
Устройство | Двоичный путь в дереве AOSP | Филиалы репозитория |
---|---|---|
Пиксель 5а (барбет) Pixel 4a (5G) (ежевика) Пиксель 5 (красный плавник) | устройство/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Пиксель 4а (рыба-солнечник) | устройство/google/sunfish-kernel | Android-MSM-Sunfish-4.14-android13-qpr3 |
Пиксель 4 (пламя) Pixel 4 XL (коралловый) | устройство/Google/коралловое ядро | Android-MSM-коралл-4.14-android13 |
Пиксель 3а (Сарго) Pixel 3a XL (бонито) | устройство/google/bonito-kernel | Android-MSM-Bonito-4.9-android12L |
Пиксель 3 (синяя линия) Pixel 3 XL (штриховка) | устройство/google/crosshatch-kernel | Android-MSM-crosshatch-4.9-android12 |
Пиксель 2 (судак) Pixel 2 XL (таймень) | устройство/google/wahoo-kernel | Android-MSM-Wahoo-4.4-android10-qpr3 |
Пиксель (парусник) Пиксель XL (марлин) | устройство/google/marlin-kernel | Android-MSM-Marlin-3.18-pie-qpr2 |