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 version de la plate-forme Android. Ces étapes ne s'appliquent qu'aux appareils Pixel 6 et versions ultérieures. En effet, les appareils Pixel 5 et versions antérieures 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 des 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
Noyaux Pixel hérités pour connaître les branches du fichier manifeste du noyau Pixel 5 et versions antérieures.
Le Pixel 6 et le Pixel 6 Pro sont également compatibles avec le noyau Linux en amont et peuvent démarrer à l'invite de l'interface système de l'appareil avec uniquement des pilotes en amont. Pour en savoir plus, consultez la section Créer et flasher le noyau Pixel en amont.
Créer et flasher les noyaux Pixel GKI
Cette section explique comment synchroniser, créer et flasher les branches du noyau compatibles avec GKI. Le tableau suivant fournit un mappage des appareils Pixel compatibles et de leurs branches de dépôt du noyau de production respectives.
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 ne sont compatibles à des fins de développement GKI que sur les branches du noyau Android commun incluses dans le tableau Combinaisons de la plate-forme et du noyau Android compatibles avec le Pixel 6 et le Pixel 6 Pro. En raison des différences d'UAPI entre les HAL de la plate-forme Android et les pilotes du noyau Pixel, le tableau fournit les combinaisons de compilation compatibles.
Combinaisons de la plate-forme et du noyau Android compatibles avec le Pixel 6 et le Pixel 6 Pro
| Branche du fichier manifeste du noyau Pixel | Branche GKI | Version de la plate-forme Android |
|---|---|---|
| gs-android-gs-raviole-mainline | android-mainline | android-latest-release |
| gs-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 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 la plate-forme et du noyau Android compatibles.
- Pour
android-latest-release, sélectionnez "Back to Public" (Retour à la version publique), Canary ou Bêta.
- Pour
- Sélectionnez les options suivantes :
- Effacer le contenu de l'appareil
- Forcer le flashage de toutes les partitions
- Désactiver la validation
- Appuyez sur le bouton Install build (Installer la version) pour flasher l'appareil.
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 la plate-forme et du noyau Android compatibles avec le Pixel 6 et le Pixel 6 Pro pour connaître 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 version de la plate-forme Android flashée sur l'
appareil. Vous disposez de plusieurs options pour mettre à jour le fichier vendor_ramdisk-DEVICE.img. Utilisez l'option 1 si vous utilisez Android 15 QPR2 (BP11.241025.006) ou une 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 DLKM ramdisk sur la
vendor_bootpartition. Mettez à niveau vos outils de la plate-forme Android vers la version 36.0.0 ou une version ultérieure pour utiliser cette option. Pour ce faire, exécutez la commande suivante :$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools"Suivez les instructions pour flasher le DTB et
vendor_boot:dlkmdans Flasher les images du noyau.Option 2 : Extraire l'image du ramdisk du fournisseur à partir de l'image d'usine Pixel.
Téléchargez l'image d'usine compatible pour votre appareil à partir de 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 fichier de l'image d'usine que vous avez téléchargée.
unzip raven-ap1a.240505.004-factory-9d783215.zipcd raven-ap1a.240505.004unzip image-raven-ap1a.240505.004.zip vendor_boot.imgDécompressez le
vendor_boot.imgpour obtenir le ramdisk du fournisseur.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_outCopiez 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
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 et versions ultérieures, le noyau doit être créé à l'aide de Kleaf.
Pour plus de commodité, vous pouvez exécuter le build_DEVICE.sh
script situé dans le 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 représentant 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 le Pixel 6 et le Pixel 6 Pro, et build_cloudripper.sh pour le Pixel 7 et le Pixel 7 Pro.
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, sur les branches du noyau de production, les
build_DEVICE.sh scripts 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 créer le noyau à partir des sources locales. Par défaut, les branches du noyau de développement créent directement la source du noyau.
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 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 la plate-forme, vous devrez peut-être effacer le contenu de votre appareil si une rétrogradation du niveau de correctif de sécurité (SPL) est associée au nouveau noyau. Cette opération efface toutes vos données personnelles. Assurez-vous de sauvegarder vos données avant d'effacer le contenu.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 de flasher.
| 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 9 (tegu) Pixel 9 Pro Fold (comet) Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) 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 le Pixel 6, le Pixel 6 Pro et le Pixel 6a, si vous avez mis à jour le vendor_ramdisk dans
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 le 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 à partir de l'hôte : fastboot oem uart enablefastboot oem uart config 3000000screen -fn /dev/ttyUSB* 3000000
Restaurer les images d'usine
Pour restaurer les images d'usine de votre appareil, vous pouvez utiliser flash.android.com.
Créer et flasher le noyau Pixel en amont
Étant donné que le Pixel 6 et le Pixel 6 Pro sont compatibles avec le noyau Linux en amont, vous pouvez utiliser android-mainline avec uniquement des pilotes en amont pour démarrer à l'invite de l'interface système de l'appareil pour le développement du noyau. Cette section explique comment synchroniser, créer et flasher un noyau Pixel 6 et Pixel 6 Pro à partir de android-mainline.
Pour commencer, suivez les étapes ci-dessous.
- Préparez votre appareil en suivant les étapes décrites dans Préparer votre appareil Pixel.
- Synchronisez la branche du fichier manifeste du noyau
common-android-mainlineen suivant les étapes décrites dans Synchroniser le dépôt du noyau. La configuration de la cible de compilation Kleaf est définie sous le chemin d'accès
KERNEL_REPO_ROOT/devices/google/raviole. Pour compiler la cible de compilationraviole_upstream, exécutez la commande Kleaf :tools/bazel run //devices/google/raviole:raviole_upstream_distComme pour les noyaux de production, désactivez la validation et effacez le contenu de votre appareil lorsque vous flashez un noyau personnalisé sur les images d'usine Android. Pour en savoir plus, consultez les notes de la section Flasher les images du noyau.
En mode Fastboot, exécutez les commandes suivantes pour flasher les images du noyau :
fastboot flash boot out/raviole_upstream/dist/boot.img fastboot flash dtbo out/raviole_upstream/dist/dtbo.img fastboot flash --dtb out/raviole_upstream/dist/dtb.img \ vendor_boot:dlkm out/raviole_upstream/dist/initramfs.imgPour accéder à une invite de l'interface système de l'appareil, vous pouvez redémarrer en mode de récupération en exécutant la commande suivante :
fastboot reboot recoveryOuvrez l'interface système de l'appareil en exécutant la commande
adb shell. Vous pouvez également utiliser l'accès root en exécutant la commandeadb root.
Noyaux Pixel hérités
À titre de référence, le tableau des branches du noyau Pixel hérité fournit les branches du dépôt du noyau pour les appareils Pixel 5 et versions antérieures. Il s'agit d'appareils non compatibles avec GKI.
Branches du noyau Pixel héritées
| 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 (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 (blueline) Pixel 3 XL (crosshatch) |
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 |