仮想化

Android Automotive OS(AAOS)は、trout という新しいプロダクトを通じて、VirtIO 標準に対応している環境にゲスト仮想マシンとしてデプロイするためのサポートを提供するようになりました。troutCuttlefish 仮想リファレンス プラットフォームに基づいており、trout デバイス設定として利用できます。ユーザー空間のソースコードは device/google/trout にあります。

スタートガイド

trout は、x86(aosp_trout_x86)と arm64(aosp_trout_arm64)用に直接コンパイルでき、他の Cuttlefish ベースのイメージを起動する場合と同様に、launch_cvd を通じて、機能を限定して起動できます。

機能

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 の統合など、関連するテクノロジーがさらに提供される予定です。接続機能(ラジオ放送、Wi-Fi、Bluetooth など)のサポートは、実際のハードウェアに固有のパススルーによって異なるため、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、オーディオ コントロール HAL、Dumpstate HAL を含む)は、AAOS ゲストと基となる機能の実装を提供するホストシステムとの間の vsock 接続に基づく gPRC インターフェースによって実装されています。ベンダー プロパティとして適切な vsock 接続パラメータを指定して構成する必要があります。

trout の検証

CDD は仮想化に対応するように更新されますが、シナリオは AAOS の実際のデプロイによって異なることがあります。