Questa guida fornisce istruzioni dettagliate su come scaricare, compilare e
eseguire il flashing di un kernel Pixel
personalizzato per lo sviluppo. Grazie a GKI, ora è possibile
aggiornare il kernel indipendentemente dalla build della piattaforma Android. Questi passaggi sono
applicabile solo per Pixel 6 e modelli successivi. Questo perché Pixel 5 e
i dispositivi precedenti richiedono l'aggiornamento dei moduli kernel sulla partizione vendor
,
che dipende dalla build della piattaforma Android per i dispositivi in questione. La GKI
La tabella dei rami del kernel Pixel supportati include il parametro
Ramo manifest del repository del kernel per ogni dispositivo Pixel supportato da GKI. Consulta
nella sezione Kenel Pixel legacy per Pixel 5 e
dei rami del manifest del kernel precedenti.
Rami del kernel Pixel supportati da GKI
Dispositivo | Percorso binario nell'albero AOSP | Ramo dei repository | Kernel GKI |
---|---|---|---|
Pixel 9 Pro Fold (cometa) | device/google/comet-kernel | android-gs-comet-6.1-android14-qpr3-d1 | android14-6.1 |
Pixel 9 (tokay)
Pixel 9 Pro (caimano)
Pixel 9 Pro XL (komodo) | device/google/caimito-kernel | android-gs-caimito-6.1-android14-qpr3-d1 | android14-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 | android13-5.10
Pixel Tablet (tangorpro) | device/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14-qpr3 | android13-5.10
Pixel 7a (lynx) | device/google/lynx-kernel | android-gs-lynx-5.10-android14-qpr3 | android13-5.10
Pixel 7 (pantera)
Pixel 7 Pro (ghepardo) | device/google/pantah-kernel | android-gs-pantah-5.10-android14-qpr3 | android13-5.10
Pixel 6a (ghiandaia) | device/google/bluejay-kernel | android-gs-bluejay-5.10-android14-qpr3 | android13-5.10
Pixel 6 (oriole)
Pixel 6 Pro (corvo) | device/google/kernel-raviole | android-gs-raviole-5.10-android14-qpr3 | android13-5.10
Oltre ai kernel supportati di fabbrica, i dispositivi Pixel 6 e 6 Pro sono supportato per scopi di sviluppo GKI solo sul kernel Android Common rami inclusi nella piattaforma Android Pixel 6/6 Pro e nel kernel supportati Combinazioni. A causa delle differenze UAPI dei fornitori tra gli HAL della piattaforma Android e i driver kernel Pixel, la tabella le combinazioni di build supportate.
Combinazioni di kernel e piattaforma Android per Pixel 6/6 Pro supportate
Ramo manifest kernel Pixel | Filiale GKI | Build della piattaforma Android | Assistenza aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | Android-mainline (v6.8) | AP1A.240505.004 (11583682) | Sì |
Android14-gs-pixel-6.1 | Android 14-6.1 | AP1A.240505.004 (11583682) | Sì |
gs-android13-gs-raviole-5.15 | Android 13-5,15 | TQ1A.230205.002 (9471150) | No |
Prepara il dispositivo Pixel
Il seguente diagramma di flusso descrive la procedura per aggiornare il kernel su Pixel 6 e versioni successive:
Esegui il flashing del dispositivo utilizzando flash.android.com
- Visita il sito flash.android.com.
- Scegli la build Android in base alla piattaforma Android e al kernel supportati combinazioni.
- Seleziona le seguenti opzioni:
- Cancella dati dispositivo
- Forza il flash di tutte le partizioni
- Disabilita verifica
- Premi il pulsante Installa build per far lampeggiare il dispositivo.
Scarica e compila il kernel
Sincronizza il repository del kernel
Esegui questi comandi per scaricare il codice sorgente del kernel. Consulta le Piattaforma Android e kernel Pixel 6/6 Pro supportati Tabella delle combinazioni per Pixel KERNEL_MANIFEST_BRANCH.
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Aggiorna il ramdisk del fornitore
Aggiorna il file vendor_ramdisk-DEVICE.img
nel
il repository del kernel in modo che corrisponda alla build della piattaforma Android
dispositivo. Ecco alcune opzioni che puoi seguire.
Opzione 1) estrai l'immagine ramdisk del fornitore dall'immagine di fabbrica di Pixel.
Scarica l'immagine di fabbrica supportata per il tuo dispositivo da https://developers.google.com/android/images.
Estrai il valore
vendor_boot.img
:- I seguenti comandi usano Pixel 6 Pro AP1A.240505.004. Sostituisci il nome del file zip con il nome del file dell'immagine di fabbrica che hai scaricato.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
Apri la pacchettizzazione
vendor_boot.img
per ottenere il ramdisk del fornitore.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Copia il file
vendor-ramdisk-by-name/ramdisk_
estratto nel repository del kernel di Pixel.Dispositivo DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (corvo)predefiniti/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img Pixel 6a (ghiandaia) private/devices/google/bluejay/vendor_ramdisk-bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
Opzione 2) Copia l'oggetto vendor_ramdisk
da un repository della piattaforma Android creato localmente.
Dispositivo | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (corvo) |
predefiniti/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img |
Pixel 6a (ghiandaia) | 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
Compila il kernel (Kleaf)
In Android 13, lo script build.sh
è stato sostituito con un nuovo sistema di build del kernel
chiamato Kleaf. Per i dispositivi che utilizzano android13-5.15
e versioni successive, il valore
il kernel deve essere creato usando Kleaf.
Per Pixel 6 e 6 Pro con kernel android14
e successivi, esegui la build Kleaf
:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Per Pixel 6 e 6 Pro con kernel android13-5.15
, esegui la build Kleaf
:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Per tutti gli altri kernel Pixel, esegui lo script build_DEVICE.sh
che si trova all'indirizzo KERNEL_REPO_ROOT. Per
esempio, per creare il kernel per Pixel 6 sul ramo
android-gs-raviole-5.10-android14
, eseguirai il comando:
build_slider.sh
Per impostazione predefinita, gli script build_DEVICE.sh
utilizzano i valori
kernel GKI predefinito per accelerare il processo di compilazione. Se vuoi modificare il valore
core kernel, quindi imposta la variabile di ambiente BUILD_AOSP_KERNEL=1
su build
il kernel da fonti locali.
Per maggiori dettagli sul sistema di compilazione del kernel e su come personalizzare la build, Fai riferimento a Kleaf - Building Android Kernels with Bazel.
Esegui il flashing delle immagini kernel
Nota: se non hai disattivato la verifica, devi farlo prima di eseguire il flashing del kernel personalizzato. Ecco il comando per farlo:.fastboot oem disable-verification
AVVISO: se esegui il flashing di un kernel personalizzato una build della piattaforma, potresti dover cancellare i dati del dispositivo se è presente un downgrade a livello di patch (SPL) associato al nuovo kernel. Questa procedura cancella tutti i tuoi dati personali. Assicurati di eseguire il backup dei dati prima di cancellare i dati.fastboot -w
Per eseguire il flashing delle immagini kernel, esegui il comando fastboot flash
per ogni kernel
selezionata per il tuo dispositivo. Per le partizioni dinamiche, devi riavviare
in modalità fastbootd
prima di lampeggiare.
Dispositivo | Partizioni kernel |
---|---|
Pixel 6a
(oriole) Pixel 6 Pro (corvo imperiale) Pixel 6a (ghiandaia blu) |
avvio dtbo vendor_boot vendor_dlkm (partizione dinamica) |
Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (felix) Pixel Pastiglia (tangorpro) Pixel 7a (lynx) Pixel 7 (pantera) Pixel 7 Pro (ghepardo) |
avvio dtbo vendor_kernel_boot vendor_dlkm (partizione dinamica) system_dlkm (partizione dinamica) |
Ecco i comandi lampeggianti per Pixel 6 su 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
Le immagini kernel sono disponibili in DIST_DIR.
Ramo kernel | DIST_DIR |
---|---|
Versione 5.10 | out/mixed/dist |
v5.15 e successive | out/DEVICE/dist |
Nota:se hai un dongle seriale e vuoi attivare le porte seriali log, il comando è:Comando di esempio per connettersi dall'host:fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Ripristina le immagini di fabbrica
Per ripristinare le immagini di fabbrica del dispositivo, puoi utilizzare flash.android.com.
Kernel Pixel legacy
Come riferimento, i rami del kernel Pixel legacy fornisce i rami del repository del kernel per Pixel 5 e dispositivi precedenti. Si tratta di dispositivi non supportati da GKI.
Rami del kernel Pixel legacy
Dispositivo | Percorso binario nell'albero AOSP | Ramo dei repository |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (rovesci) Pixel 5 (pinna rossa) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (pesce giallo) | device/google/kernel-sunfish | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (fiamma) Pixel 4 XL (corallo) |
device/google/kernel-coral | 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 (linea blu) Pixel 3 XL (linea blu) |
device/google/kernel-crosshatch | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) |
dispositivo/google/kernel-wahoo | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (pesce vela) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |