Este guia fornece instruções detalhadas sobre como baixar, compilar e
atualizar um kernel do Pixel personalizado para desenvolvimento. Devido à GKI, agora é possível
atualizar o kernel em qualquer build da plataforma Android. Estas etapas são
relevantes apenas para dispositivos Pixel 6 e mais recentes. Isso porque o Pixel 5 e
dispositivos anteriores exigem atualização dos módulos do kernel na partição vendor
,
que depende do build da plataforma Android para esses dispositivos. A tabela
Ramificações de kernel do Pixel compatíveis com a GKI inclui a
ramificação do manifesto do repositório do kernel para todo dispositivo Pixel compatível com a GKI. Consulte
a seção Kernels legados do Pixel para conferir as
ramificações do manifesto do kernel do Pixel 5 e versões anteriores.
Ramificações do kernel do Pixel com suporte da GKI
Dispositivo | Caminho do binário na árvore AOSP | Ramificações do repositório | Kernel da GKI |
---|---|---|---|
Pixel 9 Pro Fold (comet) | device/google/comet-kernels/6.1 | android-gs-comet-6.1-android15-qpr1 | android15-6.1 |
Pixel 9 (tokay) Pixel 9 Pro (caiman) Pixel 9 Pro XL (komodo) |
device/google/caimito-kernels/6.1 | android-gs-caimito-6.1-android15-qpr1 | android15-6.1 |
Pixel 8a (akita) | device/google/akita-kernels/5.15 | android-gs-akita-5.15-android15-qpr1 | android15-5.15 |
Pixel 8 (shiba) Pixel 8 Pro (husky) |
device/google/shusky-kernels/5.15 | android-gs-shusky-5.15-android15-qpr1 | android15-5.15 |
Pixel Fold (felix) | device/google/felix-kernels/5.10 | android-gs-felix-5.10-android15-qpr1 | android15-5.10 |
Pixel Tablet (tangorpro) | device/google/tangorpro-kernels/5.10 | android-gs-tangorpro-5.10-android15-qpr1 | android15-5.10 |
Pixel 7a (lynx) | device/google/lynx-kernels/5.10 | android-gs-lynx-5.10-android15-qpr1 | android15-5.10 |
Pixel 7 (panther) Pixel 7 Pro (cheetah) |
device/google/pantah-kernels/5.10 | android-gs-pantah-5.10-android15-qpr1 | android15-5.10 |
Pixel 6a (bluejay) | device/google/bluejay-kernels/5.10 | android-gs-bluejay-5.10-android15-qpr1 | android15-5.10 |
Pixel 6 (oriole) Pixel 6 Pro (raven) |
device/google/raviole-kernels/5.10 | android-gs-raviole-5.10-android15-qpr1 | android15-5.10 |
Além dos kernels com compatibilidade de fábrica, os dispositivos Pixel 6 e 6 Pro podem ser usados apenas para fins de desenvolvimento de GKI nas ramificações do kernel comum do Android incluídas na tabela Combinações de plataforma Android do Pixel 6/6 Pro e kernel compatíveis. Devido a diferenças de fornecedor UAPI entre as HALs da plataforma Android e os drivers do kernel de Pixel, a tabela fornece as combinações de build com suporte.
Combinações de plataforma Android do Pixel 6/6 Pro e kernel com suporte
Ramificação de manifesto do kernel do Pixel | Ramificação de GKI | Build da plataforma Android | Suporte a aosp-main ? |
---|---|---|---|
gs-android-gs-raviole-mainline | android-mainline (v6.8) | AP1A.240505.004 (11583682) | Sim |
android14-gs-pixel-6.1 | android14-6.1 | AP1A.240505.004 (11583682) | Sim |
gs-android13-gs-raviole-5.15 | android13-5.15 | TQ1A.230205.002 (9471150) | Não |
Preparar o dispositivo Pixel
O fluxograma a seguir descreve o processo de atualização do kernel no Pixel 6 e em dispositivos mais recentes:
Atualizar o dispositivo em flash.android.com
- Acesse flash.android.com.
- Escolha o build do Android com base nas combinações de plataforma Android e kernel compatíveis.
- Selecione as seguintes opções:
- Excluir o dispositivo permanentemente
- Forçar a atualização de todas as partições
- Desativar a verificação
- Pressione o botão Instalar build para atualizar o dispositivo.
Baixar e compilar o kernel
Sincronizar o repositório do kernel
Execute os seguintes comandos para fazer o download do código-fonte do kernel. Consulte a tabela Combinações de plataforma Android do Pixel 6/6 Pro e kernel com suporte para o KERNEL_MANIFEST_BRANCH do Pixel.
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 que ele corresponda ao build da plataforma Android que está atualizado no
dispositivo. Existem algumas opções que você pode seguir.
Opção 1: extrair a imagem do ramdisk do fornecedor da imagem de fábrica do Pixel.
Faça o download da imagem de fábrica com suporte do seu dispositivo em https://developers.google.com/android/images.
Extraia a
vendor_boot.img
:- Os comandos a seguir usam o AP1A.240505.004 do Pixel 6 Pro como exemplo. Substitua o nome do arquivo ZIP pelo nome do arquivo da imagem de fábrica que você baixou.
unzip raven-ap1a.240505.004-factory-9d783215.zip
cd raven-ap1a.240505.004
unzip image-raven-ap1a.240505.004.zip vendor_boot.img
Descompacte a
vendor_boot.img
para acessar o ramdisk do fornecedor.KERNEL_REPO_ROOT/tools/mkbootimg/unpack_bootimg.py --boot_img vendor_boot.img \ --out vendor_boot_out
Copie o arquivo
vendor-ramdisk-by-name/ramdisk_
para o repositório do kernel do Pixel.Dispositivo DEVICE_RAMDISK_PATH Pixel 6 (oriole)
Pixel 6 Pro (raven)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
Opção 2: copiar o vendor_ramdisk
de um repositório da plataforma Android criado localmente
Dispositivo | DEVICE_RAMDISK_PATH |
---|---|
Pixel 6 (oriole) Pixel 6 Pro (raven) |
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
Compilar o kernel (Kleaf)
No Android 13, o script build.sh
foi substituído por um novo sistema de build de kernel,
chamado Kleaf. Para dispositivos que usam o android13-5.15
e versões mais recentes, o
kernel precisa ser criado com o Kleaf.
Para o Pixel 6 e 6 Pro com kernels android14
e versões mais recentes, execute o comando de
build do Kleaf:
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist
Para o Pixel 6 e 6 Pro com kernels android13-5.15
, execute o comando de
build do Kleaf:
tools/bazel run --lto=thin //gs/google-modules/soc-modules:slider_dist
Para todos os outros kernels de Pixel, execute o script build_DEVICE.sh
encontrado em KERNEL_REPO_ROOT
. Na maioria dos
casos, DEVICE
precisa ser o codinome
correspondente ao codinome usado na coluna Caminho do binário na árvore AOSP da
tabela Ramificações de kernel do Pixel compatíveis com a GKI. Ele
pode ser o codinome de um dispositivo, como "akita" (Pixel 8a) ou o codinome
que representa um grupo de dispositivos relacionados que compartilham um kernel, como
"caimito", que representa Pixel 9 (tokay), Pixel 9 Pro (caiman) e Pixel 9 Pro XL
(komodo). No android14
e em versões anteriores, use build_slider.sh
para Pixel
6 e Pixel 6 Pro, e build_cloudripper.sh
para Pixel 7 e Pixel 7 Pro.
Por exemplo, para criar o kernel para o Pixel 6 na ramificação
android-gs-raviole-5.10-android14
, você executaria este comando:
build_slider.sh
Por padrão, os scripts build_DEVICE.sh
usam o
kernel da GKI pré-criado para acelerar o processo de build. Se você quiser modificar o
kernel principal, defina a variável de ambiente BUILD_AOSP_KERNEL=1
para criar
o kernel usando as origens locais.
Para saber mais sobre o sistema de build do kernel e aprender a personalizar o build, consulte Kleaf: como criar kernels do Android com o Bazel.
Atualizar as imagens de kernel
Observação: se você não desativou a verificação, faça isso antes de atualizar o kernel personalizado. Use este comando:fastboot oem disable-verification
ALERTA: caso você esteja atualizando um kernel personalizado sobre um build de plataforma, talvez seja necessário excluir permanentemente os dados do seu dispositivo se houver um downgrade no nível do patch de segurança (SPL) associado ao novo kernel. Esse processo apaga todos os seus dados pessoais. Faça backup dos seus dados antes dessa exclusão permanente.fastboot -w
Atualize as imagens do kernel executando o comando fastboot flash
para cada
partição de kernel listada para o seu dispositivo. Para partições dinâmicas, é necessário reinicializar
no modo fastbootd
antes da atualização.
Dispositivo | Partições de kernel |
---|---|
Pixel 6
(oriole) Pixel 6 Pro (raven) Pixel 6a (bluejay) |
boot dtbo vendor_boot vendor_dlkm (dynamic partition) |
Pixel 8 (shiba) Pixel 8 Pro (husky) Pixel Fold (felix) Pixel Tablet (tangorpro) Pixel 7a (lynx) Pixel 7 (panther) Pixel 7 Pro (cheetah) |
boot dtbo vendor_kernel_boot vendor_dlkm (dynamic partition) system_dlkm (dynamic partition) |
Estes são os comandos de atualização para o Pixel 6 em 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 de kernel estão disponíveis no DIST_DIR.
Ramificação do kernel | DIST_DIR |
---|---|
v5.10 | out/mixed/dist |
v5.15 e mais recentes | out/DEVICE/dist |
Observação: se você tem um dongle serial e quer ativar logs seriais, o comando é:Exemplo de comando para conectar do host: fastboot oem uart enable
fastboot oem uart config 3000000
screen -fn /dev/ttyUSB* 3000000
Restaurar as imagens de fábrica
Para restaurar seu dispositivo para as imagens de fábrica, você pode usar flash.android.com.
Kernels legados do Pixel
Como referência, a tabela Ramificações de kernels legados do Pixel mostra as ramificações do repositório do kernel para dispositivos Pixel 5 e anteriores. Esses são dispositivos sem suporte à GKI.
Ramificações de kernels legados do Pixel
Dispositivo | Caminho do binário na árvore AOSP | Ramificações do repositório |
---|---|---|
Pixel 5a (barbet) Pixel 4a (5G) (bramble) Pixel 5 (redfin) |
device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
Pixel 4a (sunfish) | device/google/sunfish-kernel | android-msm-sunfish-4.14-android13-qpr3 |
Pixel 4 (flame) Pixel 4 XL (coral) |
device/google/coral-kernel | 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 (blueline) Pixel 3 XL (crosshatch) |
device/google/crosshatch-kernel | android-msm-crosshatch-4.9-android12 |
Pixel 2 (walleye) Pixel 2 XL (taimen) |
device/google/wahoo-kernel | android-msm-wahoo-4.4-android10-qpr3 |
Pixel (sailfish) Pixel XL (marlin) |
device/google/marlin-kernel | android-msm-marlin-3.18-pie-qpr2 |