가상화

trout라는 새로운 제품을 통해 Android Automotive OS(AAOS)는 이제 VirtIO 표준과 호환되는 환경에서 게스트 가상 머신으로서 배포를 지원합니다. troutCuttlefish 가상 참조 플랫폼을 기반으로 하며 trout 기기 설정으로 사용할 수 있습니다. 사용자 공간 소스 코드는 device/google/trout에서 확인할 수 있습니다.

시작하기

trout를 x86(aosp_trout_x86) 및 arm64(aosp_trout_arm64)용으로 직접 컴파일할 수 있으며 다른 Cuttlefish 기반 이미지를 실행하는 것과 동일한 방식으로 launch_cvd를 통해 제한된 기능으로 실행할 수 있습니다.

기능

trout에는 다음과 같은 대부분의 Android Automotive OS 기능이 포함되어 있습니다.

기능 기술
Audio Control HAL vsock/gRPC
Dumpstate HAL vsock/gRPC
EVS(Extended View System) virtio-video 및 공급업체 확장
Garage Mode vsock/gRPC
그래픽 virtio-gpu
Sensor HAL 2.0 virtio-scmi 및 IIO
터치스크린 입력 virtio-input
차량 HAL vsock/gRPC

향후 출시에서는 오디오 및 Arm TrustZone 통합을 비롯하여 더 많은 관련 기술이 제공될 예정입니다. 연결 기능(예: 브로드캐스트 무선, Wi-Fi 및 블루투스) 지원은 각각 실제 하드웨어에 고유한 패스 스루에 따라 다르므로 trout에서 제한적입니다. Android 일반 커널에는 터널을 설정하는 데 사용할 수 있는 VirtWiFi 네트워크의 프로비저닝이 포함되어 있습니다.

trout 확장

trout는 새로운 차량용 인포테인먼트(IVI) Android 타겟을 생성하기 위한 시작점으로 사용할 수 있습니다. 빌드 인프라는 확장 및 맞춤설정하도록 설계되었습니다. 예를 들면 다음과 같습니다.

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl
# Configure SELinux policy BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem
# Configure properties LOCAL_DUMPSTATE_PROPERTIES := \ ro.vendor.dumpstate.server.cid=22 \ ro.vendor.dumpstate.server.port=406 \ ro.vendor.helpersystem.log_loc=/data/dumpstate
[... and more as needed ...]

여러 Android HAL을 맞춤 구현으로 개별적으로 대체하거나, 기본 구현을 유지하지만 특정 구성 매개변수를 조정하여 대상 환경에서 적절한 VM 간 통신을 설정할 수 있습니다. 이러한 HAL(차량 HAL, Audio Control HAL 및 Dumpstate HAL 포함)은 AAOS 게스트와 기본 기능 구현을 제공하는 호스트 시스템 간의 vsock 연결로 지원되는 gRPC 인터페이스를 통해 구현됩니다. 이는 공급업체 속성으로 적절한 vsock 연결 매개변수를 제공함으로써 구성해야 합니다.

trout 유효성 검사

가상화를 해결하기 위해 CDD를 업데이트하는 동안 AAOS의 실제 배포에 따라 시나리오는 달라질 수 있습니다.