Criar um dispositivo híbrido Cuttlefish

Esta página descreve como criar um dispositivo híbrido do Cuttlefish (CHD).

Um CHD é um dispositivo virtual híbrido do Cuttlefish que executa a imagem do sistema de um dispositivo físico em vez de uma imagem do sistema do Cuttlefish nos HALs do dispositivo. Isso oferece as seguintes vantagens:

  • Desenvolvimento e testes iniciais:os CHDs permitem o desenvolvimento e os testes iniciais de softwares de sistema de próxima geração antes que o hardware físico esteja disponível.

  • Escalonabilidade:os CHDs facilitam a expansão da capacidade de desenvolvimento e testes.

Criar uma imagem de CHD

Para criar uma imagem de CHD, siga estas etapas:

  1. Gere os arquivos de destino para o destino do fornecedor e o dispositivo físico usando make dist. Gere os arquivos de destino do fornecedor usando uma das seguintes opções:

  2. Combine os dois arquivos de destino em um arquivo de destino de CHD e gere as imagens de CHD do arquivo de destino de CHD executando o build_cf_hybrid_device.py script. Esse script combina os dois arquivos de destino em um arquivo de destino de CHD usando merge_target_files.py e gera as imagens de CHD do arquivo de destino de CHD usando img_from_target_files.

    python3 tools/treble/cuttlefish/build_cf_hybrid_device.py \
      --framework_target_files_zip <physical_device_target_files.zip> \
      --vendor_target_files_zip <cuttlefish_device_target_files.zip> \
      --otatools_zip <cuttlefish_otatools.zip> \
      --target chd \
      --output_dir <output_directory>
    

Criar um destino de fornecedor do Cuttlefish

Você pode usar aosp_cf_vendor.mk para definir o destino aosp_cf_arm64_phone_vendor, que pode ser usado como o arquivo de destino do fornecedor para uma imagem de CHD.

Para criar um destino somente do fornecedor do Cuttlefish, siga estas etapas:

  1. Herde o destino do Cuttlefish que cria artefatos completos:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. Defina o nome do destino:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. Desative builds desnecessários dos artefatos completos:

    PRODUCT_BUILD_SYSTEM_IMAGE := false
    PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
    PRODUCT_BUILD_PRODUCT_IMAGE := false
    PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
    PRODUCT_BUILD_SUPER_PARTITION := false
    TARGET_SKIP_OTA_PACKAGE := true
    

Escolher um ambiente de host para iniciar um CHD

Para configurar um ambiente de host escalonável para iniciar e gerenciar CHDs baseados em ARM64, escolha uma configuração com base no seu fluxo de trabalho:

  • Bare metal do Google Cloud C4A (recomendado): as instâncias bare metal do Google Cloud C4A, como c4a-standard-96-metal ou c4a-highmem-96-metal, oferecem aceleração de hardware KVM ARM64 nativa com tecnologia dos processadores Google Axion. Essa configuração oferece execução de alta performance e altamente escalonável para CHDs ARM64 na nuvem sem sobrecarga de virtualização aninhada. Além disso, a orquestração de nuvem do OmniLab ATS se integra ao c4a-metal para automatizar a alocação de dispositivos, a orquestração de testes e o gerenciamento de infraestrutura.

  • Configuração manual do host ou local (alternativa): se você estiver executando em hardware ARM local ou de laboratório personalizado ou configurando manualmente um ambiente de host sem o OmniLab ATS, consulte Executar o Cuttlefish em um servidor local.