Créer des noyaux Pixel

Ce guide fournit des instructions détaillées sur le téléchargement, la compilation et flasher un noyau Pixel personnalisé pour le développement. Grâce à GKI, il est maintenant possible de et mettre à jour le noyau indépendamment de la version de la plate-forme Android. Ces étapes sont ne s'applique qu'aux Pixel 6 et modèles ultérieurs. En effet, les Pixel 5 et Pixel 5 les appareils antérieurs nécessitent de mettre à jour les modules du noyau sur la partition vendor, qui dépend du build de la plate-forme Android pour ces appareils. Le GKI Le tableau des branches du noyau Pixel compatibles inclut branche du fichier manifeste du dépôt du noyau pour chaque appareil Pixel compatible avec GKI. Consultez la section Legacy Pixel Kernels (Anciens noyaux Pixel) pour les appareils Pixel 5 et les branches précédentes du fichier manifeste du noyau.

Branches de noyau Pixel compatibles avec GKI
Appareil Chemin binaire dans l'arborescence AOSP Branches de dépôts Noyau GKI
Pixel 9 Pro Fold (comet) appareil/google/comet-kernel android-gs-comet-6.1-android14-qpr3-d1 Android 14-6.1

Pixel 9 (Tokay)
Pixel 9 Pro (Caiman)
Pixel 9 Pro XL (komodo) | device/google/caimito-kernel | android-gs-caimito-6.1-android14-qpr3-d1 | Android 14-6.1 Pixel 8a (akita) | device/google/akita-kernel | android-gs-akita-5.15-android14-qpr3 | Android14-5.15 Pixel 8 (shiba)
Pixel 8 Pro (husky) | device/google/shusky-kernel | android-gs-shusky-5.15-android14-qpr3 | Android14-5.15 Pixel Fold (Felix) | device/google/felix-kernel | android-gs-felix-5.10-android14-qpr3 | Android 13-5.10 Pixel Tablet (tangorpro) | device/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14-qpr3 | Android 13-5.10 Pixel 7a (lynx) | device/google/lynx-kernel | android-gs-lynx-5.10-android14-qpr3 | Android 13-5.10 Pixel 7 (panthère)
Pixel 7 Pro (guépard) | device/google/pantah-kernel | android-gs-pantah-5.10-android14-qpr3 | Android 13-5.10 Pixel 6a (bluejay) | device/google/bluejay-kernel | 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 6 Pro sont pris en charge à des fins de développement GKI uniquement sur le kernel Android Common branches incluses dans le noyau et la plate-forme Android Pixel 6/6 Pro compatibles Combinaisons. En raison des différences entre les fournisseurs UAPI et les autres fournisseurs entre les HAL de la plate-forme Android et les pilotes de noyau Pixel, ce tableau fournit les combinaisons de compilations compatibles.

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 Pixel. Appareils 6 et versions ultérieures:

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

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

  1. Accédez à flash.android.com.
  2. Choisissez la version d'Android basée sur la plate-forme Android et le noyau compatibles. des combinaisons d'annonces.
  3. Sélectionnez les options suivantes: <ph type="x-smartling-placeholder">
      </ph>
    • Effacer les données de l'appareil
    • Forcer le flash de toutes les partitions
    • Désactiver la validation
  4. Appuyez sur le bouton Install build (Installer le build) pour flasher l'appareil.

**Figure 2.** Exemple de station Flash

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 la Plate-forme et noyau Android compatibles avec les Pixel 6 et Pixel 6 Pro Tableau des combinaisons 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 du noyau pour correspondre au build de la plate-forme Android qui est flashé sur le appareil. Vous pouvez suivre plusieurs options.

Option 1 : Extrayez l'image ramdisk du fournisseur de l'image d'usine Pixel.
  1. Téléchargez l'image d'usine compatible de votre appareil depuis https://developers.google.com/android/images

  2. Extrayez vendor_boot.img:

    • Les commandes suivantes utilisent le Pixel 6 Pro AP1A.240505.004 à titre d'exemple. Remplacez le zipfile nommé 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
    
  3. 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
    
  4. 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)

Sous 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 paramètre 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 le build 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 le build 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. Pour exemple : pour créer le noyau du Pixel 6 sur la branche android-gs-raviole-5.10-android14, vous devez exécuter la commande suivante:

build_slider.sh

Par défaut, les scripts build_DEVICE.sh utilisent la classe un noyau GKI prédéfini pour accélérer le processus de compilation. Si vous souhaitez modifier noyau, puis définissez la variable d'environnement BUILD_AOSP_KERNEL=1 pour compiler le noyau à partir des sources locales à la place.

Pour en savoir plus sur le système de compilation du noyau et sur la personnalisation du build, reportez-vous à Kleaf - Créer des noyaux Android avec Bazel.

Flasher les images du noyau

<ph type="x-smartling-placeholder">
</ph> Remarque:Si vous n'avez pas désactivé la validation, vous devez le faire. avant de flasher le noyau personnalisé. Pour ce faire, utilisez la commande suivante:
fastboot oem disable-verification
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder"></ph> AVERTISSEMENT:Si vous flashez un noyau personnalisé en plus de une version de plate-forme, vous devrez peut-être effacer les données de votre appareil de niveau de correctif (SPL) associé au nouveau noyau. Ce processus efface toutes vos données personnelles. Veillez à sauvegarder vos données avant d'effacer.
fastboot -w

Pour flasher les images du noyau, exécutez la commande fastboot flash pour chaque noyau. pour votre appareil. Pour les partitions dynamiques, vous devez redémarrer en mode fastbootd avant de clignoter.

Appareil Partitions du noyau
Pixel 6 (oriole)
Pixel 6 Pro (corail)
Pixel 6a (le geai bleu)
démarrage
dtbo
vendor_boot
vendor_dlkm (partition dynamique)
Pixel 8 (shiba)
Pixel 8 Pro (husky)
Pixel Fold (felix)
Pixel Tablette (tangorpro)
Pixel 7a (lynx)
Pixel 7 (panthère)
Pixel 7 Pro (guépard)
démarrage
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
<ph type="x-smartling-placeholder">
</ph> Remarque:Si vous disposez d'un dongle série et que vous souhaitez activer le numéro de série la commande suivante:
fastboot oem uart enable
fastboot oem uart config 3000000
Exemple de commande pour se connecter depuis l'hôte:
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, les anciennes branches du noyau Pixel Le tableau ci-dessous 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