虚拟化

通过一款名为“trout”的新产品,Android Automotive OS (AAOS) 现已支持在符合 VirtIO 标准的环境中作为客机虚拟机进行部署。trout 基于 Cuttlefish 虚拟参考平台,并以 trout 设备配置的形式提供。用户空间源代码位于 device/google/trout

开始使用

您可以采用与其他基于 Cuttlefish 的映像相同的启动方式,通过 launch_cvd 针对 x86 (aosp_trout_x86) 和 arm64 (aosp_trout_arm64) 直接编译并启动 trout,不过其功能有限。

功能

trout 包含大多数 Android Automotive OS 功能,即:

功能 技术
音频控制 HAL vsock/gRPC
Dumpstate HAL vsock/gRPC
增强型视觉系统 (EVS) virtio-video 和供应商扩展
车库模式 vsock/gRPC
图形 virtio-gpu
传感器 HAL 2.0 virtio-scmi 和 IIO
触摸屏输入 virtio-input
车载 HAL vsock/gRPC

未来版本中将提供更多相关技术,包括音频和 Arm TrustZone 集成。trout 对连接功能(例如广播电台、Wi-Fi 和蓝牙)的支持有限,因为各项功能都依赖于特定于实际硬件的直通性。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 可单独替换为自定义实现,也可保留默认实现,但应调整某些配置参数以在目标环境中建立适当的虚拟机间通信。这些 HAL(包括车载 HAL、音频控制 HAL 和 Dumpstate HAL)是通过 gRPC 接口实现的,该接口由 AAOS 客机与提供底层功能实现的主机系统之间的 vsock 连接提供支持。必须通过提供适当的 vsock 连接参数作为供应商属性来配置这些 HAL。

验证 trout

更新 CDD 以处理虚拟化时,具体情形可能因 AAOS 的实际部署而异。