Tworzenie hybrydowego urządzenia Cuttlefish

Na tej stronie dowiesz się, jak utworzyć hybrydowe urządzenie Cuttlefish (CHD).

CHD to hybrydowe wirtualne urządzenie Cuttlefish, które zamiast obrazu systemu Cuttlefish uruchamia obraz systemu urządzenia fizycznego w HAL-ach urządzenia. Dzięki temu:

  • Wczesne testowanie i tworzenie: CHD umożliwiają wczesne testowanie i tworzenie oprogramowania systemowego nowej generacji, zanim będzie dostępny sprzęt fizyczny.

  • Skalowalność: CHD ułatwiają rozszerzanie możliwości tworzenia i testowania.

Tworzenie obrazu CHD

Aby utworzyć obraz CHD:

  1. Wygeneruj pliki docelowe dla docelowego dostawcy i urządzenia fizycznego za pomocą polecenia make dist. Wygeneruj pliki docelowe dostawcy, korzystając z jednej z tych opcji:

    • Istniejący pełny cel Cuttlefish.
    • Cel Cuttlefish, który tworzy tylko pliki dostawcy Cuttlefish. Więcej informacji znajdziesz w sekcji Tworzenie celu dostawcy Cuttlefish.
  2. Połącz 2 pliki docelowe w plik docelowy CHD i wygeneruj obrazy CHD z pliku docelowego CHD, uruchamiając build_cf_hybrid_device.py skrypt. Ten skrypt łączy 2 pliki docelowe w plik docelowy CHD za pomocą merge_target_files.py i generuje obrazy CHD z pliku docelowego CHD za pomocą 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>
    

Tworzenie celu dostawcy Cuttlefish

Za pomocą aosp_cf_vendor.mk możesz zdefiniować cel aosp_cf_arm64_phone_vendor, którego możesz używać jako pliku docelowego dostawcy dla obrazu CHD.

Aby utworzyć cel tylko dla dostawcy Cuttlefish:

  1. Odziedzicz cel Cuttlefish, który tworzy pełne artefakty:

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. Zdefiniuj nazwę celu:

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. Wyłącz niepotrzebne kompilacje z pełnych artefaktów:

    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
    

Wybieranie środowiska hosta do uruchamiania CHD

Aby skonfigurować skalowalne środowisko hosta do uruchamiania CHD opartych na ARM64 i zarządzania nimi, wybierz konfigurację na podstawie swojego procesu:

  • Google Cloud C4A bare metal (zalecane): instancje Google Cloud C4A bare metal, takie jak c4a-standard-96-metal lub c4a-highmem-96-metal, zapewniają natywną akcelerację sprzętową ARM64 KVM opartą na procesorach Google Axion. Ta konfiguracja zapewnia wysoką wydajność i skalowalność wykonywania CHD ARM64 w chmurze bez obciążenia związanego z zagnieżdżoną wirtualizacją. Ponadto, orkiestracja w chmurze OmniLab ATS integruje się z c4a-metal, aby zautomatyzować przydzielanie urządzeń, orkiestrację testów i zarządzanie infrastrukturą.

  • Ręczna konfiguracja hosta lub konfiguracja lokalna (alternatywa): jeśli używasz niestandardowego sprzętu ARM lokalnie lub w laboratorium albo ręcznie konfigurujesz środowisko hosta bez OmniLab ATS, zapoznaj się z artykułem Uruchamianie Cuttlefish na serwerze lokalnym.