Android Automotive OS(AAOS)は、trout という新しいプロダクトを通じて、VirtIO 標準に対応している環境にゲスト仮想マシン(VM)としてデプロイするためのサポートを提供するようになりました。trout
は Cuttlefish 仮想リファレンス プラットフォームに基づいており、trout
デバイス設定として利用できます。ユーザー空間のソースコードは device/google/trout
にあります。以下の表に、trout
で各サブシステムの仮想化に使用されるテクノロジーを示します。
機能 | テクノロジー |
---|---|
オーディオ コントロール HAL | vsock/gRPC |
オーディオ HAL | virtio-snd |
Dumpstate HAL | vsock/gRPC |
拡張ビューシステム(EVS) | virtio-video and vendor extensions |
ガレージモード | vsock/gRPC |
グラフィック | virtio-gpu |
センサー HAL 2.0 | virtio-scmi and IIO |
タッチスクリーン入力 | virtio-input |
車両 HAL | vsock/gRPC |
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
のビルド
ユーザー空間のコンパイル
ユーザー空間をコンパイルするには:
- 以下のコマンドで、Android ソースツリーをダウンロードします。
repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
- 環境を構築します。
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
カーネルのビルド
最初のリファレンス プラットフォーム リリース 0.9 では、ハイパーバイザの構成制限により、Android カーネルをカスタマイズできません。OpenSynergy ハイパーバイザ リリースの一環として、ビルド済みのカーネルが提供されます。このカーネルは Android 共通カーネルのブランチ common-android11-5.4
をベースとしており、最新の VirtIO ドライバを組み込むように変更されています。
参考情報として、対応するカーネル ソースコードは次の場所で入手できます。
コンプライアンス
今後のリリースでは、100% の互換性を実現する予定です。
trout
の制限事項とサポートされていない要素
- Bluetooth。
- グローバル ナビゲーション衛星システム(GNSS)。
- LaunchCVD。現在、
trout
はcrosvm
で起動しません。 - グラフィック。このリリースでは、VirtIO GPU virgl デバイスは
dmabuf
が無効の場合にのみ動作します。UI の赤色と青色が反転しています。