Visão geral das partições

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 instantâneo de todo o software para a partição. A Figura 1 mostra o layout das partições principais em um dispositivo:

Layout das partições principais.

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. system, boot e init_boot são partições principais do sistema.

  • As partições do fornecedor contêm códigos específicos do dispositivo e do hardware que podem nunca ser atualizados após o lançamento inicial. As partições vendor, vendor_boot e odm são as partições principais do fornecedor.

  • Partições não atualizáveis são partições cujo conteúdo não é atualizado ou é atualizado com dados do usuário.

O código em partições do sistema e do fornecedor pode interagir usando uma interface estável chamada interface do fornecedor (VINTF, na sigla em inglês).

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). 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 ramdisks genéricos, consulte Conteúdos de imagem de ramdisk genéricos.

  • 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ção boot.

  • 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 do sistema comum na partição system.

  • Partição system_dlkm. Essa partição contém módulos 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 são agrupados com outras partições.

  • 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 protegido.

  • 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 o 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 compatíveis com atualizações perfeitas podem armazenar as imagens de recuperação como um ramdisk contido na imagem boot ou init_boot. Para mais informações sobre atualizações perfeitas, consulte Atualizações A/B (perfeitas).

  • 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 distribuir 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 da partição vendor, é possível atualizar módulos de kernel sem atualizar a partição vendor. Para mais informações, consulte Partições DKLM do fornecedor e do ODM.

  • Partição odm. Essa partição contém personalizações do fabricante de design original (ODM, na sigla em inglês) para pacotes de suporte de placa (BSPs) do fornecedor do system on chip (SoC). Essas personalizações permitem que os ODMs substituam ou personalizem componentes do SoC e implementem módulos do kernel para componentes específicos da placa, daemons e recursos específicos do ODM nas camadas de abstração de hardware (HALs). Essa partição é opcional. Normalmente, essa partição é usada para conter personalizações para que os dispositivos possam usar uma única imagem de fornecedor para vários SKUs de hardware. Para mais informações, consulte Partições do ODM.

  • Partição odm_dlkm. Essa partição é dedicada ao armazenamento de módulos do kernel do ODM. Ao armazenar módulos de kernel ODM nessa partição, em vez da partição odm, é possível atualizar módulos de kernel ODM sem atualizar a partição odm. Para mais informações, consulte Partições DKLM do fornecedor e do ODM.

  • Partição radio. Essa partição contém a imagem do 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 perfeitas. Essa partição 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 em userdata. 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 a criptografia de metadados, essa partição vai conter a chave de criptografia de metadados. O tamanho dessa partição é de 16 MB ou mais, ela não é criptografada e os dados dela não são capturados. 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 continuam estáveis.

Independentemente de como você atualiza as partições, as seguintes precisam ser atualizadas devido a dependências acopladas e à falta de APIs estáveis:

  • As partições boot e system_dlkm
  • as partições init_boot, system, system_ext e product

Partições dinâmicas

Dispositivos com o Android 11 e versões mais recentes podem oferecer suporte a partições dinâmicas, que são um sistema de particionamento do espaço do usuário para Android que permite criar, redimensionar ou destruir partições durante atualizações over-the-air (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 Trusty OS e é usada apenas 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 do Soong usa variantes de imagem para dividir as dependências de build. Módulos nativos (/build/soong/cc) podem mudar módulos de processo do sistema para a variante principal e 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 e versões mais recentes, 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 do VNDK sem product_available: true não estão disponíveis para módulos de produtos.