Ce guide fournit des instructions détaillées sur le téléchargement, la compilation et le flashage d'un kernel Pixel personnalisé à des fins de développement. Grâce à GKI, il est désormais possible de mettre à jour le noyau indépendamment du build de la plate-forme Android. Ces étapes ne s'appliquent qu'aux appareils Pixel 6 et versions ultérieures. En effet, le Pixel 5 et les appareils antérieurs nécessitent la mise à jour des modules du kernel sur la partition vendor
, qui dépend du build de la plate-forme Android pour ces appareils. Le tableau Branches du kernel Pixel compatibles avec GKI inclut la branche du fichier manifeste du dépôt du kernel pour chaque appareil Pixel compatible avec GKI. Consultez la section Anciens noyaux Pixel pour le Pixel 5 et les branches de fichier manifeste de kernel précédentes.
Branches du kernel Pixel compatibles avec GKI
Appareil | Chemin d'accès au binaire dans l'arborescence AOSP | Branches de dépôt | Kernel GKI |
---|---|---|---|
Pixel 9 Pro Fold (comète) | device/google/comet-kernels/6.1 | android-gs-comet-6.1-android15-qpr1 | android15-6.1 |
Pixel 9 (Tokay) Pixel 9 Pro (Caiman) Pixel 9 Pro XL (Komodo) |
device/google/caimito-kernels/6.1 | android-gs-caimito-6.1-android15-qpr1 | android15-6.1 |
Pixel 8a (akita) | device/google/akita-kernels/5.15 | android-gs-akita-5.15-android15-qpr1 | android15-5.15 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
device/google/shusky-kernels/5.15 | android-gs-shusky-5.15-android15-qpr1 | android15-5.15 |
Pixel Fold (felix) | device/google/felix-kernels/5.10 | android-gs-felix-5.10-android15-qpr1 | android15-5.10 |
Pixel Tablet (tangorpro) | device/google/tangorpro-kernels/5.10 | android-gs-tangorpro-5.10-android15-qpr1 | android15-5.10 |
Pixel 7a (lynx) | device/google/lynx-kernels/5.10 | android-gs-lynx-5.10-android15-qpr1 | android15-5.10 |
Pixel 7 (panther) Pixel 7 Pro (cheetah) |
device/google/pantah-kernels/5.10 | android-gs-pantah-5.10-android15-qpr1 | android15-5.10 |
Pixel 6a (Bluejay) | device/google/bluejay-kernels/5.10 | android-gs-bluejay-5.10-android15-qpr1 | android15-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (corbeau) |
device/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | android15-5.10 |
En plus des noyaux compatibles d'usine, les appareils Pixel 6 et 6 Pro ne sont compatibles à des fins de développement GKI que sur les branches de noyau Android Common incluses dans le tableau Combinaisons de plate-forme et de noyau Android compatibles avec le Pixel 6/6 Pro. En raison des différences entre les UAPI du fournisseur entre les HAL de la plate-forme Android et les pilotes du noyau Pixel, le tableau fournit les combinaisons de compilation compatibles.
Combinaisons de kernel et de plate-forme Android compatibles avec le Pixel 6/6 Pro
Branche du fichier manifeste du kernel Pixel | GKI Branch | Build de la plate-forme Android | Compatibilité avec aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (v6.8) | AP1A.240505.004 (11583682) | Oui |
android14-gs-pixel-6.1 | android14-6.1 | AP1A.240505.004 (11583682) | Oui |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | Non |
Préparer votre appareil Pixel
Le diagramme suivant décrit le processus de mise à jour du noyau sur les appareils Pixel 6 et versions ultérieures:
Flasher l'appareil à l'aide de flash.android.com
- Accédez à flash.android.com.
- Choisissez la version Android en fonction des combinaisons de plate-forme et de kernel Android compatibles.
- Sélectionnez les options suivantes :
- Effacer les données de l'appareil
- Forcer le flash de toutes les partitions
- Désactiver la validation
- Appuyez sur le bouton Installer le build pour flasher l'appareil.
Télécharger et compiler le noyau
Synchroniser le dépôt du noyau
Exécutez les commandes suivantes pour télécharger le code source du kernel. Consultez le tableau Combinaisons de kernel et de plate-forme Android compatibles avec le Pixel 6/6 Pro pour le Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Mettre à jour le ramdisk du fournisseur
Mettez à jour le fichier vendor_ramdisk-DEVICE.img
dans le dépôt du noyau pour qu'il corresponde au build de la plate-forme Android flashé sur l'appareil. Plusieurs options s'offrent à vous.
Option 1 : Extrayez l'image ramdisk du fournisseur à partir de l'image d'usine Pixel.
Téléchargez l'image d'usine compatible pour votre appareil sur https://developers.google.com/android/images.
Extrayez le
vendor_boot.img
:- Les commandes suivantes utilisent le Pixel 6 Pro AP1A.240505.004 comme exemple. Remplacez le nom du fichier ZIP par le nom de l'image d'usine que vous avez téléchargée.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
Décompressez le fichier
vendor_boot.img
pour obtenir le ramdisk du fournisseur.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Copiez le fichier
vendor-ramdisk-by-name/ramdisk_
extrait dans le dépôt du kernel Pixel.Appareil DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (corbeau)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
Option 2 : Copiez le vendor_ramdisk
à partir d'un dépôt de plate-forme Android compilé localement.
Appareil | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (corbeau) |
prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img |
Pixel 6a (Bluejay) | 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
Compiler le noyau (Kleaf)
Dans Android 13, le script build.sh
a été remplacé par un nouveau système de compilation du kernel appelé Kleaf. Pour les appareils utilisant android13-5.15
ou version ultérieure, le noyau doit être compilé à l'aide de Kleaf.
Pour les Pixel 6 et 6 Pro avec les noyaux android14
et versions ultérieures, exécutez la commande de compilation Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Pour les Pixel 6 et Pixel 6 Pro avec des noyaux android13-5.15
, exécutez la commande de compilation Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Pour tous les autres noyaux Pixel, exécutez le script build_DEVICE.sh
disponible à l'adresse KERNEL_REPO_ROOT
. Dans la plupart des cas, DEVICE
doit correspondre au nom de code utilisé dans la colonne Binary path in AOSP tree (Chemin binaire dans l'arborescence AOSP) du tableau GKI supported Pixel kernel branches (Branches de kernel Pixel compatibles avec GKI). Il peut s'agir du nom de code d'un appareil, comme "akita" (Pixel 8a), ou d'un nom de code représentant un groupe d'appareils associés qui partagent un noyau, comme "caimito", qui signifie Pixel 9 (tokay), Pixel 9 Pro (caiman) et Pixel 9 Pro XL (komodo). Pour les versions android14
et antérieures, utilisez build_slider.sh
pour le Pixel 6 et le Pixel 6 Pro, et build_cloudripper.sh
pour le Pixel 7 et le Pixel 7 Pro.
Par exemple, pour compiler le noyau pour le Pixel 6 sur la branche android-gs-raviole-5.10-android14
, exécutez la commande suivante:
build_slider.sh
Par défaut, les scripts build_DEVICE.sh
utilisent le noyau GKI prédéfini pour accélérer le processus de compilation. Si vous souhaitez modifier le kernel principal, définissez la variable d'environnement BUILD_AOSP_KERNEL=1
pour compiler le kernel à partir des sources locales à la place.
Pour en savoir plus sur le système de compilation du kernel et sur la personnalisation du build, consultez Kleaf : compilation de kernels Android avec Bazel.
Flasher les images du noyau
Remarque:Si vous n'avez pas désactivé la validation, vous devez le faire avant de flasher le kernel personnalisé. Voici la commande à exécuter:fastboot oem disable-verification
AVERTISSEMENT:Si vous flashez un kernel personnalisé sur une version de plate-forme, vous devrez peut-être effacer votre appareil en cas de rétrogradation du niveau de correctif de sécurité (SPL) associé au nouveau kernel. Cette opération efface toutes vos données à caractère personnel. Veillez à sauvegarder vos données avant de les effacer.fastboot -w
Pour flasher les images du noyau, exécutez la commande fastboot flash
pour chaque partition de noyau listée pour votre appareil. Pour les partitions dynamiques, vous devez redémarrer en mode fastbootd
avant de flasher.
Appareil | Partitions du kernel |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (corbeau) Pixel 6a (geai) |
boot dtbo vendor_boot vendor_dlkm (partition dynamique) |
Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (felix) Pixel Tablet (tangorpro) Pixel 7a (lynx) Pixel 7 (panther) Pixel 7 Pro (cheetah) |
boot dtbo vendor_kernel_boot vendor_dlkm (partition dynamique) system_dlkm (partition dynamique) |
Voici les commandes de flashage pour le Pixel 6 sur 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
Les images du kernel se trouvent dans DIST_DIR.
Branche du kernel | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
Version 5.15 et ultérieures | out/DEVICE/dist |
Remarque:Si vous disposez d'un dongle série et que vous souhaitez activer les journaux série, la commande est la suivante:Exemple de commande pour se connecter depuis l'hôte: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Restaurer les images d'usine
Pour restaurer les images d'usine sur votre appareil, vous pouvez utiliser flash.android.com.
Kernels Pixel anciens
Pour référence, le tableau des anciennes branches du kernel Pixel fournit les branches du dépôt du kernel pour le Pixel 5 et les appareils plus anciens. Il s'agit d'appareils non compatibles avec GKI.
Branches du noyau Pixel obsolètes
Appareil | Chemin d'accès au binaire dans l'arborescence AOSP | Branches de dépôt |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (ronce) Pixel 5 (saumon) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (poisson-soleil) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (Flame) Pixel 4 XL (Coral) |
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 (ligne bleue) Pixel 3 XL (pointillé) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (brochet) Pixel 2 XL (taimen) |
device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |