Это руководство содержит пошаговые инструкции по загрузке, компиляции и прошивке кастомного ядра Pixel для разработки. Благодаря GKI теперь можно обновлять ядро независимо от сборки платформы Android. Эти шаги применимы только для устройств Pixel 6 и более поздних моделей. Это связано с тем, что для устройств Pixel 5 и более ранних моделей требуется обновление модулей ядра в разделе vendor
, которое зависит от сборки платформы Android для этих устройств. Таблица ветвей ядра Pixel, поддерживаемых GKI, включает в себя ветвь манифеста репозитория ядра для каждого устройства Pixel, поддерживаемого GKI. Сведения о ветвях манифеста ядра для Pixel 5 и более ранних моделей см. в разделе «Устаревшие ядра Pixel» .
Поддерживаемые GKI ветви ядра Pixel
Устройство | Ветви репозитория | Ядро GKI |
---|---|---|
Пиксель 9а (тегу) | android-gs-tegu-6.1-android16 | андроид14-6.1 |
Pixel 9 Pro Fold (комета) | android-gs-comet-6.1-android16 | андроид14-6.1 |
Pixel 9 (токей) Pixel 9 Pro (кайман) Pixel 9 Pro XL (Комодо) | Android-GS-caimito-6.1-android16 | андроид14-6.1 |
Pixel 8a (акита) | android-gs-akita-6.1-android16 | андроид14-6.1 |
Pixel 8 (шиба) Pixel 8 Pro (хаски) | android-gs-shusky-6.1-android16 | андроид14-6.1 |
Pixel Fold (Феликс) | android-gs-felix-6.1-android16 | андроид14-6.1 |
Pixel Tablet (tangorpro) | android-gs-tangorpro-6.1-android16 | андроид14-6.1 |
Пиксель 7а (рысь) | android-gs-lynx-6.1-android16 | андроид14-6.1 |
Pixel 7 (пантера) Pixel 7 Pro (гепард) | Android-GS-Pantah-6.1-android16 | андроид14-6.1 |
Pixel 6a (голубая сойка) | android-gs-bluejay-6.1-android16 | андроид14-6.1 |
Pixel 6 (Иволга) Pixel 6 Pro (ворон) | Android-GS-равиоле-6.1-android16 | андроид14-6.1 |
Помимо заводских ядер, устройства Pixel 6 и 6 Pro поддерживаются для разработки GKI только на общих ветках ядра Android, указанных в таблице «Поддерживаемые платформы Android и комбинации ядер для Pixel 6/6 Pro» . В связи с различиями в UAPI поставщиков между HAL-файлами платформы Android и драйверами ядра Pixel, в таблице приведены поддерживаемые комбинации сборок.
Поддерживаемые комбинации платформ Android и ядер Pixel 6/6 Pro
Ветка манифеста ядра пикселя | Филиал ГКИ | Сборка платформы Android |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
android16-6.12-gs101 | андроид16-6.12 | android-latest-release |
gs-android13-gs-raviole-5.15 | андроид13-5.15 | TQ1A.230205.002 (9471150) |
Подготовьте свое устройство Pixel
Следующая блок-схема описывает процесс обновления ядра на устройствах Pixel 6 и более поздних моделях:
Прошить устройство с помощью flash.android.com
- Перейдите на flash.android.com
- Выберите сборку Android на основе поддерживаемых комбинаций платформы Android и ядра .
- Выберите следующие параметры:
- Устройство стирания
- Принудительная перепрошивка всех разделов
- Отключить проверку
- Нажмите кнопку «Установить сборку» , чтобы прошить устройство.
Загрузите и скомпилируйте ядро
Синхронизировать репозиторий ядра
Выполните следующие команды, чтобы загрузить исходный код ядра. Сведения о Pixel KERNEL_MANIFEST_BRANCH см. в таблице «Поддерживаемые платформы Android и комбинации ядер для Pixel 6/6 Pro» .
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Обновите ramdisk поставщика
Обновите файл vendor_ramdisk- DEVICE .img
в репозитории ядра, чтобы он соответствовал сборке платформы Android, установленной на устройстве. Существует несколько вариантов обновления файла vendor_ramdisk- DEVICE .img
. Используйте вариант (1), если вы используете Android 15 QPR2 (BP11.241025.006) или более позднюю версию. В противном случае используйте вариант (2).
Вариант 1) Обновить только биты DTB и DLKM ramdisk раздела vendor_boot
Начиная с версии fastboot 35.0.2-12583183 , вы можете напрямую прошивать RAM-диски DTB и DLKM в разделе
vendor_boot
. Скачайте и распакуйте архивsdk-repo- HOST_OS -platform-tools-12583183.zip
из архива v35.0.2-12583183 в среду вашего хост-компьютера для использования.Следуйте инструкциям по прошивке DTB и
vendor_boot:dlkm
в разделе «Прошивка образов ядра» .Вариант 2) Извлечь образ ramdisk поставщика из заводского образа 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
, чтобы получить ramdisk поставщика.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 (Иволга)
Pixel 6 Pro (ворон)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk -oriole.img Pixel 6a (голубая сойка) 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.
Для удобства вы можете запустить скрипт 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
По умолчанию в ветках ядра production скрипты build_ DEVICE .sh
используют готовое ядро GKI для ускорения процесса сборки. Если вы хотите изменить ядро core, установите переменную окружения BUILD_AOSP_KERNEL=1
чтобы собрать ядро из локальных исходных кодов. Ветки ядра development по умолчанию собирают исходный код ядра напрямую.
Более подробную информацию о системе сборки ядра и о том, как настроить сборку, можно найти в статье Kleaf - Building Android Kernels with Bazel .
Прошить образы ядра
Примечание: Если вы не отключили проверку, вам необходимо сделать это перед прошивкой кастомного ядра. Вот команда для этого:fastboot oem disable-verification
ВНИМАНИЕ: Если вы устанавливаете кастомное ядро поверх сборки платформы, вам может потребоваться стереть данные на устройстве, если с новым ядром связано понижение уровня безопасности (SPL). Этот процесс удалит все ваши персональные данные. Перед стиранием обязательно создайте резервную копию данных.fastboot -w
Чтобы прошить образы ядра, выполните команду fastboot flash
для каждого раздела ядра, указанного для вашего устройства. Для динамических разделов перед прошивкой необходимо перезагрузить устройство в режиме fastbootd
.
Устройство | Разделы ядра |
---|---|
Pixel 6 (Иволга) Pixel 6 Pro (ворон) Pixel 6a (голубая сойка) | ботинок дтбо vendor_boot или vendor_boot:dlkm vendor_dlkm (динамический раздел) |
Pixel 8 (шиба) Pixel 8 Pro (хаски) Pixel Fold (Феликс) Pixel Tablet (tangorpro) Пиксель 7а (рысь) Pixel 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 --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/6 Pro/6a, если вы обновили vendor_ramdisk
в разделе Обновление vendor ramdisk , то вместо этого используйте следующую команду для обновления раздела vendor_boot
:
fastboot flash vendor_boot out/slider/dist/vendor_boot.img
Образы ядра можно найти в DIST_DIR .
Ветка ядра | DIST_DIR |
---|---|
версия 5.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 содержит ветви репозитория ядра для устройств Pixel 5 и более ранних моделей. Эти устройства не поддерживаются GKI.
Устаревшие ветки ядра Pixel
Устройство | Двоичный путь в дереве AOSP | Ветви репозитория |
---|---|---|
Пиксель 5а (барбет) Pixel 4a (5G) (ежовник) Pixel 5 (красноплавник) | устройство/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (солнечная рыба) | устройство/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Пиксель 4 (пламя) Pixel 4 XL (коралловый) | устройство/google/coral-kernel | android-msm-coral-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 |
Пиксель (парусник) Pixel XL (марлин) | устройство/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |