Este guia fornece instruções passo a passo sobre como baixar, compilar e atualizar um kernel Pixel personalizado para desenvolvimento. Devido ao GKI, agora é possível atualizar o kernel independentemente da construção da plataforma Android. Essas etapas se aplicam apenas a dispositivos Pixel 6 e posteriores. Isso ocorre porque os dispositivos Pixel 5 e anteriores exigem a atualização dos módulos do kernel na partição vendor
, que depende da versão da plataforma Android para esses dispositivos. A tabela de ramificações do kernel de pixel compatível com GKI inclui a ramificação de manifesto do repositório do kernel para cada dispositivo Pixel compatível com GKI. Consulte a seção Legacy Pixel Kernels para o Pixel 5 e ramificações de manifesto do kernel anteriores.
Ramos de kernel Pixel compatíveis com GKI
Dispositivo | Caminho binário na árvore AOSP | Ramos de repositório | Kernel GKI |
---|---|---|---|
Pixel 8 (shiba) Pixel 8 Pro (roxo) | dispositivo/google/shusky-kernel | android-gs-shusky-5.15-android14-d1 | andróide14-5.15 |
Dobra de pixel (félix) | dispositivo/google/felix-kernel | android-gs-felix-5.10-android14 | andróide13-5.10 |
Pixel Tablet (tangorpro) | dispositivo/google/tangorpro-kernel | android-gs-tangorpro-5.10-android14 | andróide13-5.10 |
Pixel 7a (lince) | dispositivo/google/lynx-kernel | android-gs-lynx-5.10-android14 | andróide13-5.10 |
Pixel 7 (pantera) Pixel 7 Pro (chita) | dispositivo/google/pantah-kernel | android-gs-pantah-5.10-android14 | andróide13-5.10 |
Pixel 6a (gaio-azul) | dispositivo/google/bluejay-kernel | android-gs-bluejay-5.10-android14 | andróide13-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (corvo) | dispositivo/google/raviole-kernel | android-gs-raviole-5.10-android14 | andróide13-5.10 |
Além dos kernels com suporte de fábrica, os dispositivos Pixel 6 e 6 Pro são compatíveis para fins de desenvolvimento de GKI apenas nas ramificações do kernel Android Common incluídas na plataforma Android Pixel 6/6 Pro compatível e na tabela Combinações de kernel . Devido às diferenças de UAPI do fornecedor entre os HALs da plataforma Android e os drivers do kernel Pixel, a tabela fornece as combinações de compilação suportadas.
Plataforma Android Pixel 6/6 Pro compatível e combinações de kernel
Ramo de manifesto do kernel de pixel | Filial GKI | Construção da plataforma Android | suporte aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline ( tag v6.7 ) | UP1A.231005.007.A1 (10762838) | Sim |
android14-gs-pixel-6.1 | android14-6.1 | UP1A.231005.007.A1 (10762838) | Sim |
gs-android13-gs-raviole-5.15 | andróide13-5.15 | TQ1A.230205.002 (9471150) | Não |
Prepare seu dispositivo Pixel
O fluxograma a seguir descreve o processo de atualização do kernel no Pixel 6 e dispositivos posteriores:
Atualize o dispositivo usando flash.android.com
- Navegue até flash.android.com
- Escolha a versão do Android com base nas combinações de plataforma e kernel do Android compatíveis .
- Selecione as seguintes opções:
- Limpar dispositivo
- Forçar Flash em todas as partições
- Desativar verificação
- Pressione o botão Instalar compilação para atualizar o dispositivo.
Baixe e compile o kernel
Sincronize o repositório do kernel
Execute os seguintes comandos para baixar o código-fonte do kernel. Consulte a tabela de plataformas Android e combinações de kernel do Pixel 6/6 Pro suportadas para o Pixel KERNEL_MANIFEST_BRANCH .
repo init -u https://android.googlesource.com/kernel/manifest -b KERNEL_MANIFEST_BRANCH
repo sync -c --no-tags
Atualizar o ramdisk do fornecedor
Atualize o arquivo vendor_ramdisk- DEVICE .img
no repositório do kernel para corresponder à compilação da plataforma Android que está atualizada no dispositivo. Existem algumas opções que você pode seguir.
Opção 1) Extraia a imagem do ramdisk do fornecedor da imagem de fábrica do Pixel .
Baixe a imagem de fábrica compatível para seu dispositivo em https://developers.google.com/android/images.
Extraia o
vendor_boot.img
:- Os comandos a seguir usam o Pixel 6 Pro UP1A.231005.007.a1 como exemplo. Substitua o nome do arquivo zip pelo nome do arquivo da imagem de fábrica que você baixou.
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
Descompacte o
vendor_boot.img
para obter o ramdisk do fornecedor.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Copie o arquivo
ramdisk_
extraído para o repositório do kernel do Pixel.Dispositivo DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (corvo)pré-construídos/artefatos de inicialização/ramdisks/vendor_ramdisk- oriole.img Pixel 6a (gaio-azul) private/devices/google/bluejay/vendor_ramdisk- bluejay.img cp vendor_boot_out/vendor-ramdisk-by-name/ramdisk_ \ KERNEL_REPO_ROOT/DEVICE_RAMDISK_PATH
Opção 2) Copie o vendor_ramdisk
de um repositório da plataforma Android construído localmente.
Dispositivo | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (corvo) | pré-construídos/artefatos de inicialização/ramdisks/vendor_ramdisk- oriole.img |
Pixel 6a (gaio-azul) | 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
Compilar o kernel (Kleaf)
No Android 13, o script build.sh
foi substituído por um novo sistema de compilação de kernel chamado Kleaf . Para dispositivos que usam android13-5.15
e posterior, o kernel deve ser compilado usando Kleaf.
Para Pixel 6 e 6 Pro com kernels android14
e posteriores, execute o comando Kleaf build:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Para Pixel 6 e 6 Pro com kernels android13-5.15
, execute o comando Kleaf build:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Para todos os outros kernels Pixel, execute o script build_ DEVICE.sh
encontrado em KERNEL_REPO_ROOT . Por exemplo, para construir o kernel do Pixel 6 no branch android-gs-raviole-5.10-android14
, você executaria o comando:
build_slider.sh
Por padrão, os scripts build_ DEVICE .sh
usam o kernel GKI pré-construído para acelerar o processo de compilação. Se você deseja modificar o kernel principal, defina a variável de ambiente BUILD_AOSP_KERNEL=1
para construir o kernel a partir das fontes locais.
Para obter mais detalhes sobre o sistema de compilação do kernel e como personalizar a compilação, consulte a documentação do Kleaf .
Atualize as imagens do kernel
Nota: Se você não desabilitou a verificação, você precisa fazer isso antes de atualizar o kernel personalizado. Aqui está o comando para fazer isso:fastboot oem disable-verification
AVISO: Se você estiver atualizando um kernel personalizado sobre uma construção de plataforma, talvez seja necessário limpar seu dispositivo se houver um downgrade de nível de patch de segurança (SPL) associado ao novo kernel. Este processo apaga todos os seus dados pessoais. Certifique-se de fazer backup de seus dados antes de apagá-los.fastboot -w
Para atualizar as imagens do kernel, execute o comando fastboot flash
para cada partição do kernel listada para o seu dispositivo. Para partições dinâmicas, você precisa reinicializar no modo fastbootd
antes de atualizar.
Dispositivo | Partições do Kernel |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (corvo) Pixel 6a (gaio-azul) | bota dtbo fornecedor_boot vendor_dlkm (partição dinâmica) |
Pixel 8 (shiba) Pixel 8 Pro (roxo) Dobra de pixel (félix) Pixel Tablet (tangorpro) Pixel 7a (lince) Pixel 7 (pantera) Pixel 7 Pro (chita) | bota dtbo fornecedor_kernel_boot vendor_dlkm (partição dinâmica) system_dlkm (partição dinâmica) |
Aqui estão os comandos de flash para Pixel 6 na 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
As imagens do kernel podem ser encontradas em DIST_DIR .
Ramo do kernel | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 e posterior | out/ DEVICE /dist |
Nota: Se você tiver um dongle serial e quiser habilitar logs seriais, o comando é:Exemplo de comando para conectar a partir do host:fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Restaure as imagens de fábrica
Para restaurar seu dispositivo às imagens de fábrica, você pode usar flash.android.com .
Kernels de Pixel legados
Como referência, a tabela de ramificações do kernel do Pixel legado fornece as ramificações do repositório do kernel para o Pixel 5 e dispositivos anteriores. Esses são dispositivos não compatíveis com GKI.
Ramos do kernel legado do Pixel
Dispositivo | Caminho binário na árvore AOSP | Ramos de repositório |
---|---|---|
Pixel 5a (barbeto) Pixel 4a (5G) (amortecedor) Pixel 5 (redfin) | dispositivo/google/redbull-kernel | android-msm-redbull-4.19-android14 |
Pixel 4a (peixe-lua) | dispositivo/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (chama) Pixel 4XL (coral) | 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 (linha azul) Pixel 3 XL (hachurado) | dispositivo/google/kernel hachurado | android-msm-hatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) | dispositivo/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (veleiro) Pixel XL (marlin) | dispositivo/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |