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 applicabili solo ai dispositivi Pixel 6 e successivi. Questo perché Pixel 5 e i dispositivi precedenti richiedono l'aggiornamento dei moduli del kernel sulla partizione vendor
, che dipende dalla build della piattaforma Android per tali dispositivi. La tabella dei rami del kernel Pixel supportati da GKI include il ramo manifest del repository del kernel per ciascun dispositivo Pixel supportato da GKI. Fai riferimento alla sezione Legacy Pixel Kernels per Pixel 5 e rami manifest del kernel precedenti.
GKI supportava i rami del kernel Pixel
Dispositivo | Percorso binario nell'albero AOSP | Rami del repository | Kernel GKI |
---|---|---|---|
Pixel 8 (Shiba) Pixel 8 Pro (rauco) | dispositivo/google/shusky-kernel | android-gs-shusky-5.15-android14-d1 | android14-5.15 |
Pixel Fold (felix) | dispositivo/google/felix-kernel | android-gs-felix-5.10-android14 | android13-5.10 |
Tablet Pixel (tangorpro) | dispositivo/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14 | android13-5.10 |
Pixel 7a (lince) | dispositivo/google/lynx-kernel | android-gs-lynx-5.10-android14 | android13-5.10 |
Pixel 7 (pantera) Pixel 7 Pro (ghepardo) | dispositivo/google/pantah-kernel | android-gs-pantah-5.10-android14 | android13-5.10 |
Pixel 6a (ghiandaia blu) | dispositivo/google/bluejay-kernel | android-gs-bluejay-5.10-android14 | android13-5.10 |
Pixel 6 (oriolo) Pixel 6 Pro (corvo) | dispositivo/google/raviole-kernel | android-gs-raviole-5.10-android14 | android13-5.10 |
Oltre ai kernel supportati in fabbrica, i dispositivi Pixel 6 e 6 Pro sono supportati per scopi di sviluppo GKI solo sui rami comuni del kernel Android inclusi nella tabella Combinazioni kernel e piattaforme Android Pixel 6/6 Pro supportate . A causa delle differenze UAPI dei fornitori tra gli HAL della piattaforma Android e i driver del kernel Pixel, la tabella fornisce le combinazioni di build supportate.
Combinazioni di piattaforme e kernel Android Pixel 6/6 Pro supportate
Ramo manifesto del kernel pixel | Ramo GKI | Creazione della piattaforma Android | supporto aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | Android-mainline ( tag v6.7 ) | UP1A.231005.007.A1 (10762838) | SÌ |
android14-gs-pixel-6.1 | Android14-6.1 | UP1A.231005.007.A1 (10762838) | SÌ |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | NO |
Prepara il tuo dispositivo Pixel
Il seguente diagramma di flusso descrive il processo di aggiornamento del kernel sui dispositivi Pixel 6 e successivi:
Effettua il flashing del dispositivo utilizzando flash.android.com
- Passare a flash.android.com
- Scegli la build Android in base alle combinazioni di piattaforma Android e kernel supportate .
- Seleziona le seguenti opzioni:
- Cancella dispositivo
- Forza il flashing di tutte le partizioni
- Disabilita verifica
- Premi il pulsante Installa build per eseguire il flashing del dispositivo.
Scarica e compila il kernel
Sincronizza il repository del kernel
Esegui i seguenti comandi per scaricare il codice sorgente del kernel. Fai riferimento alla tabella delle combinazioni kernel e piattaforme Android supportate per Pixel 6/6 Pro 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 repository del kernel in modo che corrisponda alla build della piattaforma Android flashata sul dispositivo. Ci sono alcune opzioni che puoi seguire.
Opzione 1) Estrai l'immagine ramdisk del fornitore dall'immagine Pixel Factory .
Scarica l'immagine di fabbrica supportata per il tuo dispositivo da https://developers.google.com/android/images.
Estrai il
vendor_boot.img
:- I seguenti comandi utilizzano Pixel 6 Pro UP1A.231005.007.a1 come esempio. Sostituisci il nome del file zip con il nome del file dell'immagine di fabbrica scaricata.
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
Decomprimere il
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
ramdisk_
estratto nel repository del kernel Pixel.Dispositivo DEVICE_RAMDISK_PATH Pixel 6 (oriolo)
Pixel 6 Pro (corvo)prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img Pixel 6a (ghiandaia blu) 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 vendor_ramdisk
da un repository della piattaforma Android creato localmente.
Dispositivo | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriolo) Pixel 6 Pro (corvo) | prebuilts/boot-artifacts/ramdisks/vendor_ramdisk- oriole.img |
Pixel 6a (ghiandaia blu) | 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
Compilare il kernel (Kleaf)
In Android 13, lo script build.sh
è stato sostituito con un nuovo sistema di compilazione del kernel chiamato Kleaf . Per i dispositivi che utilizzano android13-5.15
e versioni successive, il kernel deve essere creato utilizzando Kleaf.
Per Pixel 6 e 6 Pro con kernel android14
e versioni successive, esegui il comando 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 il comando 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
trovato in KERNEL_REPO_ROOT . Ad esempio, per creare il kernel per Pixel 6 sul ramo android-gs-raviole-5.10-android14
, esegui il comando:
build_slider.sh
Per impostazione predefinita, gli script build_ DEVICE .sh
utilizzano il kernel GKI precostruito per accelerare il processo di compilazione. Se desideri modificare il kernel principale, imposta invece la variabile d'ambiente BUILD_AOSP_KERNEL=1
per creare il kernel dai sorgenti locali.
Per maggiori dettagli sul sistema di compilazione del kernel e su come personalizzare la compilazione, fare riferimento alla documentazione di Kleaf .
Flash le immagini del kernel
Nota: se non hai disabilitato la verifica, devi farlo prima di eseguire il flashing del kernel personalizzato. Ecco il comando per farlo:fastboot oem disable-verification
ATTENZIONE: se stai eseguendo il flashing di un kernel personalizzato su una build della piattaforma, potrebbe essere necessario cancellare i dati del dispositivo se è presente un downgrade del livello di patch di sicurezza (SPL) associato al nuovo kernel. Questo processo cancella tutti i tuoi dati personali. Assicurati di eseguire il backup dei dati prima di cancellarli.fastboot -w
Per eseguire il flashing delle immagini del kernel, esegui il comando fastboot flash
per ciascuna partizione del kernel elencata per il tuo dispositivo. Per le partizioni dinamiche, è necessario riavviare in modalità fastbootd
prima del flashing.
Dispositivo | Partizioni del kernel |
---|---|
Pixel 6 (oriolo) Pixel 6 Pro (corvo) Pixel 6a (ghiandaia blu) | stivale dtbo venditore_boot fornitore_dlkm (partizione dinamica) |
Pixel 8 (Shiba) Pixel 8 Pro (rauco) Pixel Fold (felix) Tablet Pixel (tangorpro) Pixel 7a (lince) Pixel 7 (pantera) Pixel 7 Pro (ghepardo) | stivale dtbo fornitore_kernel_boot fornitore_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 del kernel possono essere trovate in DIST_DIR .
Ramo del nocciolo | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 e successive | out/ DEVICE /dist |
Nota: se si dispone di un dongle seriale e si desidera abilitare i registri seriali, 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 tuo dispositivo, puoi utilizzare flash.android.com .
Kernel Pixel legacy
Come riferimento, la tabella legacy dei rami del kernel Pixel fornisce i rami del repository del kernel per Pixel 5 e dispositivi precedenti. Questi sono dispositivi non supportati da GKI.
Rami del kernel Pixel legacy
Dispositivo | Percorso binario nell'albero AOSP | Rami del repository |
---|---|---|
Pixel 5a (barbetta) Pixel 4a (5G) (rovo) Pixel 5 (rosso) | dispositivo/google/redbull-kernel | android-msm-redbull-4.19-android14 |
Pixel 4a (pesce luna) | dispositivo/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (fiamma) Pixel 4 XL (corallo) | dispositivo/google/coral-kernel | android-msm-coral-4.14-android13 |
Pixel 3a (sargo) Pixel 3a XL (bonito) | dispositivo/google/bonito-kernel | android-msm-bonito-4.9-android12L |
Pixel 3 (linea blu) Pixel 3 XL (tratteggio incrociato) | dispositivo/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) | dispositivo/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (pesce vela) Pixel XL (marlin) | dispositivo/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |