Construire des noyaux Pixel

Ce guide fournit des instructions étape par étape sur la façon de télécharger, de compiler et de flasher 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 plateforme Android. Ces étapes ne s'appliquent qu'aux appareils Pixel 6 et versions ultérieures. En effet, les appareils Pixel 5 et 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 des branches du noyau Pixel pris en charge par GKI comprend la branche manifeste du référentiel du noyau pour chaque appareil Pixel pris en charge par GKI. Reportez-vous à la section Legacy Pixel Kernels pour connaître les branches du manifeste du noyau Pixel 5 et versions antérieures.

Branches du noyau Pixel prises en charge par GKI
Appareil Chemin binaire dans l'arborescence AOSP Branches du référentiel Noyau GKI
Pixel 8 (shiba)
Pixel 8 Pro (rauque)
appareil/google/shusky-kernel android-gs-shusky-5.15-android14-d1 androïde14-5.15
Pixel Fold (Félix) appareil/google/felix-kernel android-gs-felix-5.10-android14 androïde13-5.10
Tablette Pixel (tangorpro) appareil/google/tangorpro-kernel android-gs-tangorpro-5.10-android14 androïde13-5.10
Pixel 7a (lynx) appareil/google/noyau-lynx android-gs-lynx-5.10-android14 androïde13-5.10
Pixel 7 (panthère)
Pixel 7 Pro (guépard)
appareil/google/pantah-kernel android-gs-pantah-5.10-android14 androïde13-5.10
Pixel 6a (jay bleu) appareil/google/bluejay-kernel android-gs-bluejay-5.10-android14 androïde13-5.10
Pixel 6 (oriole)
Pixel 6 Pro (corbeau)
appareil/google/raviole-kernel android-gs-raviole-5.10-android14 androïde13-5.10

En plus des noyaux pris en charge en usine, les appareils Pixel 6 et 6 Pro sont pris en charge à des fins de développement GKI uniquement sur les branches de noyau Android Common incluses dans le tableau Plateforme Android et combinaisons de noyau Pixel 6/6 Pro pris en charge . En raison des différences entre les fournisseurs UAPI entre les HAL de la plate-forme Android et les pilotes du noyau Pixel, le tableau fournit les combinaisons de build prises en charge.

Combinaisons de plate-forme Android et de noyau Pixel 6/6 Pro prises en charge
Branche du manifeste du noyau de pixels Branche GKI Construction de plate-forme Android aosp-main ?
gs-android-gs-raviole-mainline Android-mainline ( balise v6.7 ) UP1A.231005.007.A1 (10762838) Oui
android14-gs-pixel-6.1 Android14-6.1 UP1A.231005.007.A1 (10762838) Oui
gs-android13-gs-raviole-5.15 androïde13-5.15 TQ1A.230205.002 (9471150) Non

Préparez votre appareil Pixel

L'organigramme suivant décrit le processus de mise à jour du noyau sur les appareils Pixel 6 et versions ultérieures :

**Figure 1.** Organigramme de mise à jour du noyau

Flashez l'appareil à l'aide de flash.android.com

  1. Accédez à flash.android.com
  2. Choisissez la version Android basée sur les combinaisons de plate-forme Android et de noyau prises en charge .
  3. Sélectionnez les options suivantes :
    • Effacer l'appareil
    • Forcer le flash de toutes les partitions
    • Désactiver la vérification
  4. Appuyez sur le bouton Installer la version pour flasher l'appareil.

**Figure 2.** Exemple de station Flash

Téléchargez et compilez le noyau

Synchroniser le référentiel du noyau

Exécutez les commandes suivantes pour télécharger le code source du noyau. Reportez-vous au tableau Plateforme Android et combinaisons de noyau Pixel 6/6 Pro prises en charge 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 disque virtuel du fournisseur

Mettez à jour le fichier vendor_ramdisk- DEVICE .img dans le référentiel du noyau pour qu'il corresponde à la version de la plate-forme Android flashée sur l'appareil. Il existe quelques options que vous pouvez suivre.

Option 1) Extrayez l'image du disque virtuel du fournisseur de l'image de l'usine Pixel .
  1. Téléchargez l'image d'usine prise en charge pour votre appareil à partir de https://developers.google.com/android/images.

  2. Extrayez le vendor_boot.img :

    • Les commandes suivantes utilisent le Pixel 6 Pro UP1A.231005.007.a1 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-up1a.231005.007.a1-factory-5d927f3e.zip
    
      cd raven-up1a.231005.007.a1
    
      unzip image-raven-up1a.231005.007.a1.zip vendor_boot.img
    
  3. Décompressez le vendor_boot.img pour obtenir le disque virtuel du fournisseur.

      KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \
          --out vendor_boot_out
    
  4. Copiez le fichier ramdisk_ extrait dans le référentiel du noyau Pixel.

    Appareil DEVICE_RAMDISK_PATH
    Pixel 6 (oriole)
    Pixel 6 Pro (corbeau)
    prebuilds/boot-artifacts/ramdisks/vendor_ramdisk -oriole.img
    Pixel 6a (jay bleu) 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 référentiel de plate-forme Android construit localement.
Appareil DEVICE_RAMDISK_PATH
Pixel 6 (oriole)
Pixel 6 Pro (corbeau)
prebuilds/boot-artifacts/ramdisks/vendor_ramdisk -oriole.img
Pixel 6a (jay bleu) 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 construction du noyau appelé Kleaf . Pour les appareils utilisant android13-5.15 et versions ultérieures, le noyau doit être construit à l'aide de Kleaf.

Pour les Pixel 6 et 6 Pro avec les noyaux android14 et versions ultérieures, exécutez la commande Kleaf build :

tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

Pour les Pixel 6 et 6 Pro dotés des noyaux android13-5.15 , exécutez la commande Kleaf build :

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 trouvé dans KERNEL_REPO_ROOT . Par exemple, pour créer le noyau du Pixel 6 sur la branche android-gs-raviole-5.10-android14 , vous exécuterez la commande :

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 construction. Si vous souhaitez modifier le noyau principal, définissez la variable d'environnement BUILD_AOSP_KERNEL=1 pour construire le noyau à partir des sources locales.

Pour plus de détails sur le système de build du noyau et comment personnaliser la build, reportez-vous à la documentation Kleaf .

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é. Voici la commande pour le faire :
fastboot oem disable-verification
AVERTISSEMENT : si vous flashez un noyau personnalisé au-dessus d'une version de plate-forme, vous devrez peut-être effacer votre appareil s'il existe une rétrogradation du niveau de correctif de sécurité (SPL) associée au nouveau noyau. Ce processus efface toutes vos données personnelles. Assurez-vous de 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 répertorié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 (corbeau)
Pixel 6a (jay bleu)
botte
dtbo
vendeur_boot
supplier_dlkm (partition dynamique)
Pixel 8 (shiba)
Pixel 8 Pro (rauque)
Pixel Fold (Félix)
Tablette Pixel (tangorpro)
Pixel 7a (lynx)
Pixel 7 (panthère)
Pixel 7 Pro (guépard)
botte
dtbo
vendeur_kernel_boot
supplier_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 peuvent être trouvées 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 souhaitez activer les journaux série, la commande est la suivante :
fastboot oem uart enable
fastboot oem uart config 3000000
Exemple de commande pour se connecter à partir de l'hôte :
screen -fn /dev/ttyUSB* 3000000

Restaurer les images d'usine

Pour restaurer votre appareil aux images d'usine, vous pouvez utiliser flash.android.com .

Noyaux Pixel hérités

À titre de référence, l' ancien tableau des branches du noyau Pixel fournit les branches du référentiel du noyau pour les appareils Pixel 5 et versions antérieures. Ce sont des appareils non pris en charge par GKI.

Branches du noyau Pixel hérité
Appareil Chemin binaire dans l'arborescence AOSP Branches du référentiel
Pixel 5a (barbe)
Pixel 4a (5G) (ronce)
Pixel 5 (rouge)
appareil/google/redbull-kernel android-msm-redbull-4.19-android14
Pixel 4a (poisson-lune) appareil/google/sunfish-kernel android-msm-sunfish-4.14-android13-qpr3
Pixel 4 (flamme)
Pixel 4 XL (corail)
appareil/google/noyau de corail android-msm-corail-4.14-android13
Pixel 3a (sargo)
Pixel 3a XL (bonite)
appareil/google/bonito-kernel android-msm-bonito-4.9-android12L
Pixel 3 (ligne bleue)
Pixel 3 XL (hachuré)
appareil/google/crosshatch-kernel android-msm-crosshatch-4.9-android12
Pixel 2 (doré)
Pixel 2 XL (taimen)
appareil/google/wahoo-kernel android-msm-wahoo-4.4-android10-qpr3
Pixel (voilier)
Pixel XL (marlin)
appareil/google/marlin-kernel android-msm-marlin-3.18-pie-qpr2