Os dispositivos Android contêm várias partições ou seções específicas de espaço de armazenamento usadas para conter partes específicas do software do dispositivo. Cada partição contém uma imagem de partição (um arquivo IMG) ou um snapshot de todo o software da partição. A Figura 1 mostra o layout das partições principais em um dispositivo:
Figura 1. Layout das partições principais.
As partições são classificadas em três categorias:
As partições do sistema são atualizadas quando o SO e outros recursos são atualizados. As partições
system
,boot
einit_boot
são do sistema principal.As partições do fornecedor contêm código específico do dispositivo e do hardware que talvez nunca seja atualizado após o lançamento inicial. As partições
vendor
,vendor_boot
eodm
são principais.Partições não atualizáveis são aquelas cujo conteúdo não é atualizado ou é atualizado com dados do usuário.
O código nas partições do sistema e do fornecedor pode interagir usando uma interface estável chamada interface do fornecedor (VINTF).
Partições do sistema
Confira a seguir uma lista de todas as partições do sistema e o uso delas:
Partição
boot
. Essa partição contém uma imagem genérica do kernel (GKI, na sigla em inglês). Essa partição também contém o ramdisk genérico em dispositivos lançados no Android 12 e versões anteriores. Para mais informações sobre ramdisk genérico, consulte Conteúdo da imagem de ramdisk genérico.Partição
init_boot
(Android 13 e versões mais recentes). Essa partição contém um ramdisk genérico. No Android 11 e 12, o ramdisk genérico está na partiçãoboot
.Partição
system
. Essa partição contém a imagem do sistema usada para produtos OEM.Partição
system_ext
. Essa partição contém recursos do sistema e módulos proprietários que estendem a imagem comum do sistema na partiçãosystem
.Partição
system_dlkm
. Essa partição contém módulos do GKI. Para mais informações sobre essa partição, consulte Implementar uma partição do módulo GKI.Partição
product
. Essa partição pode conter módulos específicos do produto que não estão agrupados com nenhuma outra partição.Partição
pvmfw
. Essa partição armazena o firmware da máquina virtual protegida (pvmfw), que é o primeiro código executado em VMs protegidas. Para mais informações, consulte Firmware de máquina virtual protegida.Partição
generic_bootloader
. Essa partição contém o carregador de inicialização genérico.
Partições do fornecedor
Confira a seguir uma lista de todas as partições do fornecedor e o uso delas:
Partição
vendor_boot
. Essa partição contém código de inicialização específico do fornecedor. Para mais informações, consulte Partições de inicialização do fornecedor.Partição
recovery
. Essa partição armazena a imagem de recuperação, que é inicializada durante o processo de atualização over-the-air (OTA). Os dispositivos que oferecem suporte a atualizações sem interrupção podem armazenar as imagens de recuperação como um ramdisk contido na imagemboot
ouinit_boot
. Para mais informações sobre atualizações sem interrupção, consulte Atualizações A/B (sem interrupção).Partição
vbmeta
. Essa partição contém as informações de inicialização verificada para todas as partições. Essas informações verificam se as imagens instaladas em cada partição são confiáveis. Para mais informações sobre a Inicialização verificada, consulte Inicialização verificada.Partição
vendor
. Essa partição contém qualquer binário específico do fornecedor e não genérico o suficiente para distribuição ao AOSP.Partição
vendor_dlkm
. Essa partição contém módulos do kernel do fornecedor. Ao armazenar módulos de kernel do fornecedor nessa partição em vez davendor
, é possível atualizar os módulos de kernel sem atualizar a partiçãovendor
. Para mais informações, consulte Partições DKLM de fornecedores e ODMs.Partição
odm
. Essa partição contém personalizações do fabricante de projeto original (ODM) para pacotes de suporte de placa (BSPs) do fornecedor do system on a chip (SoC). Essas personalizações permitem que os ODMs substituam ou personalizem componentes do SoC e implementem módulos de kernel para componentes específicos da placa, daemons e recursos específicos do ODM em camadas de abstração de hardware (HALs). Essa partição é opcional. Normalmente, essa partição é usada para conter personalizações para que dispositivos possam usar uma única imagem de fornecedor para vários SKUs de hardware. Para mais informações, consulte Partições da ODM.Partição
odm_dlkm
. Essa partição é dedicada ao armazenamento de módulos do kernel do ODM. Ao armazenar módulos do kernel ODM nessa partição, em vez da partiçãoodm
, é possível atualizar os módulos do kernel ODM sem atualizar a partiçãoodm
. Para mais informações, consulte Partições DKLM de fornecedores e ODMs.Partição
radio
. Essa partição contém a imagem de rádio e é necessária apenas para dispositivos que incluem um rádio com software específico em uma partição dedicada.
Partições não atualizáveis
Confira a seguir uma lista de todas as partições não atualizáveis e o uso delas:
Partição
cache
. Essa partição contém dados temporários e é opcional se o dispositivo usa atualizações sem interrupção. Ela não precisa ser gravável pelo carregador de inicialização, mas precisa ser apagável. O tamanho da partição depende do tipo de dispositivo e da disponibilidade de espaço emuserdata
. Normalmente, 50 a 100 MB são suficientes.Partição
userdata
. Essa partição contém apps e dados instalados pelo usuário, incluindo dados de personalização.Partição
metadata
. Se o dispositivo usar criptografia de metadados, essa partição vai conter a chave de criptografia de metadados. O tamanho dessa partição é de 16 MB ou maior, ela não está criptografada e os dados não foram capturados em um snapshot. Essa partição é apagada quando o dispositivo é redefinido para a configuração original.
Regras e recomendações de atualização de partição
Recomendamos atualizar todas as partições do sistema como um todo e todas as partições do fornecedor como outro todo. Ao atualizar o conjunto de partições como um todo, você pode testar para verificar se as interfaces entre as imagens em cada partição permanecem estáveis.
Independente de como você atualiza as partições, as seguintes precisam ser atualizadas devido a dependências fortemente acopladas e falta de APIs estáveis:
- As partições
boot
esystem_dlkm
- as partições
init_boot
,system
,system_ext
eproduct
Partições dinâmicas
Dispositivos com Android 11 e versões mais recentes podem oferecer suporte a partições dinâmicas, que são um sistema de particionamento no espaço do usuário para Android que permite criar, redimensionar ou destruir partições durante atualizações pelo ar (OTA). Para mais informações, consulte Partições dinâmicas.
Partição
misc
. Essa partição é usada pela partição de recuperação e tem 4 KB ou mais.Partição
tos
. Essa partição contém a imagem binária do SO Trusty e é usada somente se o dispositivo incluir o Trusty. Para mais informações, consulte Partições do Trusty OS (TOS).
Variantes de produto do Soong
O sistema de build Soong usa variantes de imagem para dividir
dependências de build. Os módulos nativos (/build/soong/cc
) podem mudar os módulos de processo do sistema para a variante principal e os módulos de processo do fornecedor para a variante do fornecedor. Um módulo em uma variante de imagem não pode ser vinculado a outros módulos em uma variante de imagem diferente.
No Android 12 ou mais recente, um módulo do sistema com
vendor_available: true
cria uma variante do fornecedor além da variante
principal. Para criar uma variante de produto, o product_available: true
precisa ser definido. Algumas bibliotecas VNDK sem product_available: true
não estão disponíveis para módulos de produtos.