В этом руководстве представлены пошаговые инструкции о том, как загрузить, скомпилировать и прошить собственное ядро Pixel для разработки. Благодаря GKI теперь можно обновлять ядро независимо от сборки платформы Android. Эти шаги применимы только для устройств Pixel 6 и более поздних версий. Это связано с тем, что устройства Pixel 5 и более ранние версии требуют обновления модулей ядра в разделе vendor
, который зависит от сборки платформы Android для этих устройств. Таблица ветвей ядра Pixel, поддерживаемых GKI, включает ветку манифеста репозитория ядра для каждого устройства Pixel, поддерживаемого GKI. Информацию о ветвях манифеста ядра Pixel 5 и более ранних версий см. в разделе «Ядра устаревших пикселей» .
GKI поддерживает ветки ядра Pixel.
Устройство | Двоичный путь в дереве AOSP | Филиалы репозитория | Ядро ГКИ |
---|---|---|---|
Pixel 9 Pro Fold (комета) | устройство/google/comet-kernels/6.1 | Android-gs-comet-6.1-android15-qpr1 | андроид15-6.1 |
Пиксель 9 (сегодня) Pixel 9 Pro (кайман) Pixel 9 Pro XL (Комодо) | устройство/google/caimito-kernels/6.1 | Android-gs-caimito-6.1-android15-qpr1 | андроид15-6.1 |
Пиксель 8а (акита) | устройство/google/akita-kernels/5.15 | Android-gs-akita-5.15-android15-qpr1 | андроид15-5.15 |
Пиксель 8 (сиба) Pixel 8 Pro (хаски) | устройство/google/shusky-kernels/5.15 | android-gs-shusky-5.15-android15-qpr1 | андроид15-5.15 |
Пиксель Фолд (Феликс) | устройство/google/felix-kernels/5.10 | android-gs-felix-5.10-android15-qpr1 | андроид15-5.10 |
Пиксельный планшет (тангорпро) | устройство/google/tangorpro-kernels/5.10 | Android-gs-tangorpro-5.10-android15-qpr1 | андроид15-5.10 |
Пиксель 7а (рысь) | устройство/google/lynx-kernels/5.10 | Android-gs-lynx-5.10-android15-qpr1 | андроид15-5.10 |
Пиксель 7 (пантера) Pixel 7 Pro (гепард) | устройство/google/pantah-kernels/5.10 | Android-gs-pantah-5.10-android15-qpr1 | андроид15-5.10 |
Пиксель 6а (блюджей) | устройство/google/bluejay-kernels/5.10 | Android-GS-bluejay-5.10-android15-qpr1 | андроид15-5.10 |
Пиксель 6 (иволга) Pixel 6 Pro (ворон) | устройство/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | андроид15-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.12 ) | БП11.241025.006 (12620009) | Да |
android-gs-raviole-6.1-android15-qpr2-beta | андроид14-6.1 | БП11.241025.006 (12620009) | Да |
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, установленной на устройстве. Есть несколько вариантов обновления 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
. Загрузите и извлекитеsdk-repo- HOST_OS -platform-tools-12583183.zip
из артефактов v35.0.2-12583183 в среду вашего хост-компьютера для дальнейшего использования.Следуйте инструкциям по прошивке 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.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
Скомпилировать ядро (Kleaf)
В Android 13 скрипт build.sh
был заменен новой системой сборки ядра под названием Kleaf . Для устройств, использующих android13-5.15
и более поздние версии, ядро должно быть собрано с использованием Kleaf.
Для 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
. В большинстве случаев DEVICE
должно быть кодовым именем, совпадающим с кодовым именем, используемым в столбце «Двоичный путь в дереве AOSP» таблицы «Ветви ядра пикселей, поддерживаемые GKI» . Это может быть кодовое имя одного устройства, например «akita» (Pixel 8a), или кодовое имя, обозначающее группу связанных устройств с общим ядром, например «caimito», что означает Pixel 9 (токай), Pixel 9 Pro (кайман) и Pixel 9 Pro XL (комодо). Для 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 — Создание ядер 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/6 Pro/6a, если вы пропустили загрузку vendor_ramdisk
в разделе «Обновление виртуального диска поставщика» , используйте следующую команду для обновления виртуального диска DTB и DLKM вместо прошивки vendor_boot.img
:
fastboot flash --dtb out/DEVICE/dist/dtb.img vendor_boot:dlkm out/slider/dist/initramfs.img
Вот команды прошивки для 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 |