В этом руководстве приведены пошаговые инструкции по загрузке, компиляции и прошивке пользовательского ядра Pixel для разработки. Благодаря GKI теперь можно обновлять ядро независимо от сборки платформы Android. Эти шаги применимы только для устройств Pixel 6 и более поздних версий. Это связано с тем, что устройства Pixel 5 и более ранние версии требуют обновления модулей ядра в разделе vendor
, который зависит от сборки платформы Android для этих устройств. Таблица ветвей ядра Pixel, поддерживаемых GKI, включает ветвь манифеста репозитория ядра для каждого устройства Pixel, поддерживаемого GKI. См. раздел Устаревшие ядра Pixel для ветвей манифеста ядра Pixel 5 и более ранних версий.
Поддерживаемые GKI ветви ядра Pixel
Устройство | Ветви репозитория | Ядро GKI |
---|---|---|
Пиксель 9а (тегу) | android-gs-tegu-6.1-android16 | андроид16-6.1 |
Pixel 9 Pro Fold (комета) | android-gs-comet-6.1-android16 | андроид16-6.1 |
Pixel 9 (токай) Pixel 9 Pro (кайман) Pixel 9 Pro XL (Комодо) | Android-GS-caimito-6.1-android16 | андроид16-6.1 |
Пиксель 8а (акита) | android-gs-akita-6.1-android16 | андроид16-6.1 |
Пиксель 8 (шиба) Pixel 8 Pro (хриплый) | android-gs-shusky-6.1-android16 | андроид16-6.1 |
Pixel Fold (Феликс) | android-gs-felix-6.1-android16 | андроид16-6.1 |
Планшет Pixel (tangorpro) | android-gs-tangorpro-6.1-android16 | андроид16-6.1 |
Пиксель 7а (рысь) | android-gs-lynx-6.1-android16 | андроид16-6.1 |
Пиксель 7 (пантера) Pixel 7 Pro (гепард) | Android-GS-Pantah-6.1-android16 | андроид16-6.1 |
Пиксель 6а (голубая сойка) | android-gs-bluejay-6.1-android16 | андроид16-6.1 |
Пиксель 6 (иволга) Pixel 6 Pro (ворон) | Android-GS-равиоле-6.1-android16 | андроид16-6.1 |
В дополнение к заводским поддерживаемым ядрам устройства Pixel 6 и 6 Pro поддерживаются для целей разработки GKI только на общих ветвях ядра Android, включенных в таблицу Поддерживаемые комбинации платформ и ядер Pixel 6/6 Pro Android . Из-за различий в UAPI поставщиков между HAL платформы Android и драйверами ядра Pixel в таблице указаны поддерживаемые комбинации сборки.
Поддерживаемые комбинации платформ и ядер Android для Pixel 6/6 Pro
Ветка манифеста ядра пикселя | Филиал ГКИ | Сборка платформы Android |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline ( 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 и ядра .
- Выберите следующие параметры:
- Устройство стирания
- Принудительная прошивка всех разделов
- Отключить проверку
- Нажмите кнопку «Установить сборку» , чтобы прошить устройство.
Загрузите и скомпилируйте ядро
Синхронизировать репозиторий ядра
Выполните следующие команды для загрузки исходного кода ядра. Обратитесь к таблице поддерживаемых платформ Pixel 6/6 Pro Android и комбинаций ядер для Pixel KERNEL_MANIFEST_BRANCH .
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 , вы можете напрямую прошить DTB и DLKM ramdisk на разделе
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 Пиксель 6 (иволга)
Pixel 6 Pro (ворон)prebuilts/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
должно быть кодовым именем, которое может быть кодовым именем одного устройства, например "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 — Сборка ядер Android с помощью Bazel .
Прошить образы ядра
Примечание: Если вы не отключили проверку, вам нужно сделать это перед прошивкой кастомного ядра. Вот команда для этого:fastboot oem disable-verification
ПРЕДУПРЕЖДЕНИЕ: Если вы прошиваете кастомное ядро поверх сборки платформы, то вам может потребоваться стереть устройство, если с новым ядром связано понижение уровня исправления безопасности (SPL). Этот процесс стирает все ваши персональные данные. Обязательно сделайте резервную копию данных перед стиранием.fastboot -w
Чтобы прошить образы ядра, выполните команду fastboot flash
для каждого раздела ядра, указанного для вашего устройства. Для динамических разделов вам необходимо перезагрузиться в режим fastbootd
перед прошивкой.
Устройство | Разделы ядра |
---|---|
Пиксель 6 (иволга) Pixel 6 Pro (ворон) Пиксель 6а (голубая сойка) | ботинок дтбо поставщик_загрузки vendor_dlkm (динамический раздел) |
Пиксель 8 (шиба) Pixel 8 Pro (хриплый) Pixel Fold (Феликс) Планшет Pixel (tangorpro) Пиксель 7а (рысь) Пиксель 7 (пантера) Pixel 7 Pro (гепард) | ботинок дтбо вендор_ядро_загрузки vendor_dlkm (динамический раздел) system_dlkm (динамический раздел) |
Для Pixel 6/6 Pro/6a, если вы пропустили загрузку vendor_ramdisk
в разделе Обновление vendor ramdisk , используйте следующую команду для обновления DTB и DLKM ramdisk вместо прошивки образа 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 |
---|---|
версия 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 legacy предоставляет ветви репозитория ядра для Pixel 5 и более ранних устройств. Это устройства, не поддерживаемые GKI.
Устаревшие ветки ядра Pixel
Устройство | Двоичный путь в дереве AOSP | Ветви репозитория |
---|---|---|
Пиксель 5а (барбет) Pixel 4a (5G) (ежевика) Пиксель 5 (красноперый) | устройство/google/redbull-ядро | android-msm-redbull-4.19-android14-qpr3 |
Пиксель 4а (солнечная рыба) | устройство/google/sunfish-ядро | 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-ядро | android-msm-bonito-4.9-android12L |
Пиксель 3 (синяя линия) Pixel 3 XL (штриховка) | устройство/google/crosshatch-ядро | android-msm-crosshatch-4.9-android12 |
Пиксель 2 (судак) Pixel 2 XL (таймень) | устройство/google/wahoo-ядро | android-msm-wahoo-4.4-android10-qpr3 |
Пиксель (парусник) Pixel XL (марлин) | устройство/google/marlin-ядро | android-msm-marlin-3.18-pie-qpr2 |