Ce guide fournit des instructions détaillées sur le téléchargement, la compilation et le flash d'un noyau Pixel personnalisé pour le 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 modèles ultérieurs. En effet, les appareils Pixel 5 et les versions antérieures nécessitent la mise à jour des modules du noyau sur la partition vendor
, qui dépend du build de la plate-forme Android pour ces appareils. La table Branches du noyau Pixel compatibles avec GKI inclut la branche du fichier manifeste du dépôt du noyau pour chaque appareil Pixel compatible avec GKI. Reportez-vous à la section Legacy Pixel Kernels (Anciens noyaux Pixel) pour découvrir les branches du fichier manifeste du noyau Pixel 5 et antérieures.
Branches de noyau Pixel compatibles avec GKI
Appareil | Chemin binaire dans l'arborescence AOSP | Branches de dépôts | Noyau GKI |
---|---|---|---|
Pixel 8a (akita) | appareil/google/noyau-akita | android-gs-akita-5.15-android14-qpr3 | Android14-5.15 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
appareil/google/noyau-shusky | android-gs-shusky-5.15-android14-qpr3 | Android14-5.15 |
Pixel Fold (Félix) | appareil/google/felix-kernel | android-gs-felix-5.10-android14-qpr3 | Android 13-5.10 |
Pixel Tablet (tangorpro) | appareil/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14-qpr3 | Android 13-5.10 |
Pixel 7a (lynx) | appareil/google/lynx-kernel | android-gs-lynx-5.10-android14-qpr3 | Android 13-5.10 |
Pixel 7 (panthère) Pixel 7 Pro (guépard) |
appareil/google/pantah-kernel | android-gs-pantah-5.10-android14-qpr3 | Android 13-5.10 |
Pixel 6a (bluejay) | appareil/google/noyau-bleu | android-gs-bluejay-5.10-android14-qpr3 | Android 13-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (corail) |
device/google/raviole-kernel | android-gs-raviole-5.10-android14-qpr3 | Android 13-5.10 |
En plus des noyaux compatibles en usine, les appareils Pixel 6 et Pixel 6 Pro ne sont compatibles avec le développement GKI que sur les branches de noyau Android Common incluses dans le tableau Combinaisons de noyau et plate-forme Android Pixel 6/6 Pro compatibles. En raison des différences d'API UAPI des fournisseurs entre les HAL de la plate-forme Android et les pilotes du noyau Pixel, le tableau fournit les combinaisons de compilation prises en charge.
Combinaisons de plate-forme et de noyau Android des Pixel 6 et Pixel 6 Pro compatibles
Branche du fichier manifeste du noyau Pixel | Branche GKI | Build de la plate-forme Android | Assistance 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
L'organigramme 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 le build Android basé sur les combinaisons de plate-forme et de noyau 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 Install build (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 noyau. Consultez le tableau Combinaisons compatibles avec la plate-forme Android et les noyaux 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 qui est flashé sur l'appareil. Vous pouvez suivre plusieurs options.
Option 1 : Extrayez l'image ramdisk du fournisseur de l'image d'usine Pixel.
Téléchargez l'image d'usine compatible de votre appareil à l'adresse https://developers.google.com/android/images.
Extrayez
vendor_boot.img
:- Les commandes suivantes utilisent l'exemple AP1A.240505.004 du Pixel 6 Pro. Remplacez le nom du fichier ZIP par le nom de fichier 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
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 noyau Pixel.Appareil DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (corail)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 créé localement.
Appareil | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (corail) |
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 de noyau appelé Kleaf. Pour les appareils utilisant android13-5.15
ou une version ultérieure, le noyau doit être créé à 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 6 Pro avec 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
qui se trouve dans KERNEL_REPO_ROOT. Par exemple, pour créer le noyau du 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 noyau principal, définissez la variable d'environnement BUILD_AOSP_KERNEL=1
pour créer le noyau à partir des sources locales.
Pour en savoir plus sur le système de compilation du noyau et sur la personnalisation de la compilation, consultez Kleaf - Créer des noyaux Android avec Bazel.
Flasher les images du noyau
Remarque:Si vous n'avez pas désactivé la vérification, vous devez le faire avant de flasher le noyau personnalisé. Pour ce faire, utilisez la commande suivante :fastboot oem disable-verification
AVERTISSEMENT:Si vous flashez un noyau personnalisé sur une version de plate-forme, vous devrez peut-être effacer les données de votre appareil si le nouveau noyau est associé à une rétrogradation SPL (Security Patch Level). Ce processus efface toutes vos données personnelles. Veillez à sauvegarder vos données avant d'effacer les données.fastboot -w
Pour flasher les images du noyau, exécutez la commande fastboot flash
pour chaque partition de noyau répertoriée pour votre appareil. Pour les partitions dynamiques, vous devez redémarrer en mode fastbootd
avant de les flasher.
Appareil | Partitions du noyau |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (corail) Pixel 6a (bluejay) |
boot dtbo vendor_boot vendor_dlkm (partition dynamique) |
Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (Félix) Pixel Tablet (tangorpro) Pixel 7a (lynx) Pixel 7 (panthère) Pixel 7 Pro (guépard) |
boot dtbo vendor_kernel_boot vendor_dlkm (partition dynamique) system_dlkm (partition dynamique) |
Voici les commandes clignotantes 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 noyau se trouvent dans DIST_DIR.
Branche du noyau | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 et versions 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 vous connecter à partir de 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 de votre appareil, vous pouvez utiliser flash.android.com.
Anciens noyaux Pixel
À titre de référence, le tableau sur les anciennes branches du noyau Pixel indique les branches du dépôt du noyau pour les appareils Pixel 5 et versions antérieures. Ces appareils ne sont pas compatibles avec GKI.
Anciennes branches du noyau Pixel
Appareil | Chemin binaire dans l'arborescence AOSP | Branches de dépôts |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (Redfin) |
appareil/google/noyau-redbull | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (sunfish) | appareil/google/noyau-sunfish | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (flamme) Pixel 4 XL (corail) |
appareil/google/noyau-coral | android-msm-coral-4.14-android13 |
Pixel 3a (sargo) Pixel 3a XL (bonito) |
appareil/google/bonito-kernel | android-msm-bonito-4.9-android12L |
Pixel 3 (blueline) Pixel 3 XL (crosshat) |
appareil/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) |
appareil/google/kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |