Ce guide fournit des instructions détaillées sur le téléchargement, la compilation et le flashage d'un noyau Pixel personnalisé pour le développement. Grâce à GKI, il est désormais possible de mettre à jour le noyau indépendamment de la compilation 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 modèles antérieurs nécessitent la mise à jour des modules du noyau sur la partition vendor
, qui dépend de la version de la plate-forme Android pour ces appareils. Le tableau 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. Consultez la section Anciens noyaux Pixel pour les branches de fichier manifeste du noyau du Pixel 5 et des modèles antérieurs.
Branches du noyau Pixel compatibles avec GKI
Appareil | Branches du dépôt | Noyau GKI |
---|---|---|
Pixel 9a (tegu) | android-gs-tegu-6.1-android16 | android14-6.1 |
Pixel 9 Pro Fold (comet) | android-gs-comet-6.1-android16 | android14-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
android-gs-caimito-6.1-android16 | android14-6.1 |
Pixel 8a (akita) | android-gs-akita-6.1-android16 | android14-6.1 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
android-gs-shusky-6.1-android16 | android14-6.1 |
Pixel Fold (felix) | android-gs-felix-6.1-android16 | android14-6.1 |
Pixel Tablet (tangorpro) | android-gs-tangorpro-6.1-android16 | android14-6.1 |
Pixel 7a (lynx) | android-gs-lynx-6.1-android16 | android14-6.1 |
Pixel 7 (panther) Pixel 7 Pro (cheetah) |
android-gs-pantah-6.1-android16 | android14-6.1 |
Pixel 6a (bluejay) | android-gs-bluejay-6.1-android16 | android14-6.1 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
android-gs-raviole-6.1-android16 | android14-6.1 |
En plus des noyaux compatibles en usine, les appareils Pixel 6 et 6 Pro sont compatibles à des fins de développement GKI uniquement sur les branches du noyau commun Android incluses dans le tableau Combinaisons de plate-forme et de noyau Android compatibles avec les Pixel 6/6 Pro. En raison des différences d'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 plate-forme et de noyau Android compatibles avec le Pixel 6/6 Pro
Branche du fichier manifeste du noyau Pixel | Branche GKI | Compilation de la plate-forme Android |
---|---|---|
gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
android16-6.12-gs101 | android16-6.12 | android-latest-release |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) |
Préparer votre appareil Pixel
L'organigramme suivant décrit le processus de mise à jour du noyau sur les appareils Pixel 6 et ultérieurs :
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 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 Installer la compilation 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 de plate-forme et de noyau Android Pixel 6/6 Pro compatibles 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 à la compilation de la plate-forme Android installée sur l'appareil. Il existe plusieurs façons de mettre à jour le fichier vendor_ramdisk-DEVICE.img
. Utilisez l'option 1 si vous utilisez Android 15 QPR2 (BP11.241025.006) ou version ultérieure. Sinon, utilisez l'option (2).
Option 1) Mettre à jour uniquement les bits DTB et DLKM du ramdisk de la partition vendor_boot
À partir de la version 35.0.2-12583183 de fastboot, vous pouvez flasher directement le DTB et le ramdisk DLKM sur la partition
vendor_boot
. Téléchargez et extrayezsdk-repo-HOST_OS-platform-tools-12583183.zip
à partir des artefacts v35.0.2-12583183 dans l'environnement de votre machine hôte pour l'utiliser.Suivez les instructions pour flasher DTB et
vendor_boot:dlkm
dans Flasher les images du noyau.Option 2) Extrayez l'image ramdisk du fournisseur à partir de l'image d'usine Pixel.
Téléchargez l'image d'usine compatible avec votre appareil depuis https://developers.google.com/android/images.
Extrayez le fichier
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 du 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 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 noyau Pixel.Appareil DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (raven)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
Compiler le noyau (Kleaf)
Dans Android 13, le script build.sh
a été remplacé par un nouveau système de compilation du 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 plus de simplicité, vous pouvez exécuter le script build_DEVICE.sh
disponible sur KERNEL_REPO_ROOT
. Dans la plupart des cas, DEVICE
doit être le nom de code, qui peut être le nom de code d'un appareil, tel que "akita" (Pixel 8a), ou un nom de code qui représente un groupe d'appareils associés qui partagent un noyau, tel que "caimito" qui signifie Pixel 9 (tokay), Pixel 9 Pro (caiman) et Pixel 9 Pro XL (komodo). Pour android14
et les versions antérieures, utilisez build_slider.sh
pour Pixel 6 et Pixel 6 Pro, et build_cloudripper.sh
pour Pixel 7 et Pixel 7 Pro.
Par exemple, pour compiler le noyau pour Pixel 6 sur la branche android-gs-raviole-5.10-android14
, vous devez exécuter la commande suivante :
build_slider.sh
Par défaut, sur les branches du noyau de production, les scripts build_DEVICE.sh
utilisent le noyau GKI précompilé 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 compiler le noyau à partir des sources locales. Les branches du noyau de développement compilent directement la source du noyau par défaut.
Pour en savoir plus sur le système de compilation du noyau et sur la personnalisation de la compilation, consultez Kleaf : compiler des noyaux 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 noyau personnalisé. Voici la commande à exécuter :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 en cas de rétrogradation du niveau de correctif de sécurité (SPL) associée au nouveau noyau. Cette opération efface toutes vos données personnelles. 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 du noyau listée pour votre appareil. Pour les partitions dynamiques, vous devez redémarrer en mode fastbootd
avant le flashage.
Appareil | Partitions du noyau |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot ou vendor_boot:dlkm 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 --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
Pour les Pixel 6/6 Pro/6a, si vous avez mis à jour vendor_ramdisk
dans la section Mettre à jour le ramdisk du fournisseur, utilisez plutôt la commande suivante pour mettre à jour la partition vendor_boot
:
fastboot flash vendor_boot out/slider/dist/vendor_boot.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 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.
Anciens noyaux Pixel
À titre de référence, le tableau des anciennes branches du noyau Pixel fournit les branches du dépôt du noyau pour le Pixel 5 et les appareils plus anciens. Il s'agit d'appareils non compatibles avec GKI.
Anciennes branches du noyau Pixel
Appareil | Chemin binaire dans l'arborescence AOSP | Branches du dépôt |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (sunfish) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (flamme) Pixel 4 XL (corail) |
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 (hachures) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) 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 |