Attendee
(敬称略)
場所
東京・パナソニックセンター有明 会議室6
日時
2020 2/20(木) : 10:00 - 18:00
アジェンダ(案)
10:00 - 11:30 : DRM Leaseのファンディングについて(黒川さん)
11:30 - 12:30 : 昼食
12:30 - 14:00 : Cluster Serviceアーキについて(丸山さん、田口)
14:00 - 15:00 : LTS(宗像さん、)
15:00 - 15:30 : 休憩
15:30 - 16:30 : XXX
16:30 - 17:30 : XXX
17:30 - : Wrap up、次回予定、幹事確認、解散
※LTSの件:
諸連絡
1Fエントランスの出入りの際は、守衛の方に「会社名と会議室6を利用しています」とお伝えください。
- DRM lease 資料(multi-container-drm-lease-v3.pptx)
- Q. Displayの名前にエイリアスはつけれる?
- 既存のアプリケーションの実装を変えたくないので、設定依存のことはしないほうがいい
- Host側のマネージャでDisplayを分配する。
- Containerの役割としては、マネージャから渡されたファイルに書かれていることをスキャンしてDisplay nameなどを取得できるようにしたい。コンテナのWesonなどはDRMをスキャンしないようにしてほしい
- udevの問題もなくせる?
- Hostにinput managerのようなものがないといけない
- CESデモでは、仮想デバイスを扱っていた。Lease Managerは仮想デバイスも扱うか?
- DRM Lease managerが扱うのは物理デバイスのみ。仮想デバイスはContainer側
- Westonでしか動かないシステムにはしたくない
- Westonはいろんなパッケージに依存している。QM汚染になってしまう。
- SoCに依存せずに、DRMのリソースの引き渡しなどができるとありがたい。
- マルチカードなどの技術はSoCに依存してしまう。
- ホストにDBUSをもつことは致し方ないかもしれない。
- よく使われている仕組み
- DBUSをホストに使うことについては、QMと関わりがないから、コード検証しない、という選択をすることができる。
- libdrmはコンテナに置かないといけない?
- Yes
- lease managerはlibdrmを使う?
- lease managerが使う(実装依存)
- そんなにコード量は多くない
- コンテナが落ちたときに、Lease Managerは画面状態をキープできるか?コンテナが落ちても保持してほしい。
- できなくはない。
- 基本的には画面は消えるが、実装によって保持機能を付ける
- CESではホストのwestonがキープしてくれていた。
- 落ちてもブラックアウトしないことがRequirementにある。
- 復活するときには、クライアント側が工夫しないといけないこともある。
- 固まってはダメなものもある。カメラ映像が最たる例
- カメラ映像は別経路にするべき
- クラスタ
- 固まっていいものとないもの(Telltaleなど?)があると思うがどうか
- 分別しないといけない。
- コンテナを早く起動しなおすことが肝要
- 本当にまずいものはコンテナではなく、ホストに置くことも考えないといけない
- それでも満たせない場合は、カーネルレベルで解決など。それは商品のRequirementによる
- DRMで実現できないことは別の手段を考えたほうがいい
- AGL側は使えるユースケースやスペックの提示が必要
- Requirementをまとめる
- Requirementを分析し、どういう品質レベルが必要か精査し、マッピングしたい
- メータ側の人たちでまとめる
- ちなみにRear Viewは同じIVIのSoCにいるだけでシステムは別
- ガイド線は、だれが書くか、という問題はあるが。
- Requirementをまとめる
- 違うQMのコンテナの内容を一つのディスプレイに表示したいときはどうすればよいか。
- コンポジット機能が外にないといけない
- 一番厳しい要件に引っ張られる。Requirementによって適切な実装を選択する必要がある。
- 提供できる選択肢を増やす方がいい。 = Product Ready
- できなくはない。
- スケジュールについては、11月のCESをターゲットにしてほしい。マージは不要。
- Kernelのバージョンの問題もある。現状は4.14を使っているので、バックポートをしている
- Kernelのバージョンアップは間に合わない
- Q. Displayの名前にエイリアスはつけれる?
=== Appendix 2020/1/22~23の議事 ====
ELISA
- ユースケースを提案(Telltale)
- SafetyとNon Safetyをわけることを提案
- すべてLinuxでできないのか、と言われている。
- 動くものはLinuxで作れる、と主張される
- なぜLinuxでできないのか、を伝える必要がある。
- 車に載せれない、という理由を具体的に説明する必要がある。日系、欧州で使わない理由。機能ではなく、品質面でLinuxを使うことを受け入れれないラインがある。
- → できること、できないことを分けるアプローチをとっていることを説明する
- すべてLinuxでできないのか、と言われている。
AMMでIC EGで2つセッションを出す
- 品質(山口さん)
- 量産に向けた課題解決
- どうやって品質(QM)を担保するか
- アーキテクチャ(田口さん、丸山さん)
- 黒川さんがコンテナデモでわかったことを発表する
- コンテナ化に紐づけて、AppFWについて見直しの提言
CESの反省
- Lessons learned from AGL UCBコンテナデモ
- init
- Host : systemd, Guest: systemd
- 図らずも、systemd serviceのツリーは、きれいに構築された。逆に言うと、ゲストでSystemdを使う限り、HostにSystemdを残す必要あり?
- もしかすると、
- ホストでは、ベースとしてA:FS Container(独自init)と、B:QM Isolation Container(sysytemd)と置き、QM Isolation Containerの中に、IVIやICのゲストコンテナ(systemd)をネスト?
- 全コンテナの下に、最小構成のホストRootfsを置くアーキは理想だけど、現実的ではない?
- 全デバイスドライバがユーザーランド化でもしない限り、例外的なバイパスを開けまくるか、ゲストからホストに処理を移動する形になり、全体アーキが崩壊しかねない
- minimum init (fork)-> systemdを起動したほうがよいのでは。
- FS containerはminimum initが起動。
- initも分離しないといけないと考えた。
- 思ったほどHost環境を守れない
- 例)CESデモでは、MOSTドライバの初期化が(sysfsのwriteを利用する方法で)ユーザーランドにあるため、これをホスト環境に組み込む必要があった
- 理由:LXCでは、sysfsは原則ro、rw可すると、全sysfsがゲストに丸見えになる。LXCでないとしても、sysfsの原則roは正しいと思う
- Host : systemd, Guest: systemd
- Security Model
- AGLは、AppFwとLSM(SMACK)が密結合(ついでにいうならsystemdとも密結合)
- きほんてきにSMACKはhostで設定しないといけないのに、AppFWが設定している
- 本来は、システム構成(インストール時)に基本システムのセキュリティが決まる。
- 後からインストールされるアプリには、後から3rdパーティ用のセキュリティポリシーを割り当てるべき
- AppFWはSmackを利用しないようになるが、我々でもセキュリティモデルを考えないと
- SELinux, AppArmorをコンテナでどのようにマネジメントしていくかを検討したほうがいい
- 専門家がいない。
- Android, サーバー屋さん
- コンテナとLSMの連携がどうなっているのか知りたい
- システムコンテナのレベルで一度制約をかける。その中で、アプリ単位で制限をかける。もちろん、コンテナの制約を破れないように。AppFW + SMACKだとうまくいかない
- namespaceは対応しているはず。
- 結果、SMACKを丸ごとホストからバイパスしないと、アプリケーションがインストールも起動もできないというトンデモな事態に
- 結論:AppFwとLSMを密結合してはいけない? AGL UCBのセキュリティモデル(特にMAC)を再考する必要あり?
- きほんてきにSMACKはhostで設定しないといけないのに、AppFWが設定している
- AGLは、AppFwとLSM(SMACK)が密結合(ついでにいうならsystemdとも密結合)
- USBホットプラグ
- LXCは、USBホットプラグが難しい。コンテナにデバイスを追加、削除するプリミティブなAPIは存在するが、それだけでは足りない。
- LXCは、コンテナの中でudevが機能しない。udevはホストにあり、udevの対象は基本ホスト。技術的には、例えば、udev経由でLXCのコマンドやAPI叩いてゲストに作用させる方法はあるが。。。
- 例)USBメモリ
- ホスト環境では、USBのデバイスの接続・切断、USBストレージデバイスの認識が可能だが、ゲストからは、ただのSCSIディスクにしか見えない
- AGL UCBには、ストレージマネージャのようなサービスが存在しないので、まだ課題が顕在化していないだけ。
- USBが抜かれても、ゲストに通知がこない。(USBデバイスが見れないので)
- ホスト環境では、USBのデバイスの接続・切断、USBストレージデバイスの認識が可能だが、ゲストからは、ただのSCSIディスクにしか見えない
- いまのAGLにストレージマネジャーがない
- Bluetoothも同じような悩みがある。
- Bluezをホストに置かないと、Bluetoothの接続、切断イベントがとれない
- 動的に出現/消滅するデバイス
- AGL UCBで解決することは難しいかもしれない
- e.g. ストレージが抜かれたときにアプリをsigtermを送る機構など
- それをホストで実装するとホストが膨らむ
- ゲストでやると、ホストとの連携が課題
- 既存のソリューション(Tier1が持っているストレージマネジャなど) を入れて、分離できるように
- USB認証
- 車載で使えるUSB, Bluetooth, その他ネットワーク系(WiFi, DCM)のコンテナでのハンドリングは、サーバーやPCでは利用しない。車載特有のため、AGLで議論するしかない。
- 課題を明確にして、商品開発の段階で作りこむのが現実解か
- 商品開発に移行しやすいような環境をオープンソース
- Requirementを渡さないと、オープンソースの人は理解できない
- AMMでABに申請したい
- Sound
- Unicens
- agl-serviceの責務が明確化されていないため、本来サービスにあるべきではない処理が含まれる場合がある?
- 例)agl-service-unicensをホストとゲストの両方で実行しないと、MOSTが正しく初期化されず、音がでない、曲の再生が始まらない、という不具合あり
- agl-serviceの責務が明確化されていないため、本来サービスにあるべきではない処理が含まれる場合がある?
- Pipewire
- 現状は、IVIゲストに存在。AGL AppFw?Signal composer?とPipewireが密結合している模様 → ホストや別コンテナに分離ができない → ICゲストから音を鳴らす方法が存在しない
- サウンドのあるべき論を出してガイドラインを作って、サービスを作ってもらう。
- Unicens
- Grahpics
- DRM問題
- Waltham backend
- Nested westonは、当初の想定外に上手く機能している(wayland-backendのwestonは起動が軽く、結果、IVI,ICコンテナの再起動が非常に早くなる)
- ホストに軽量コンポジタを置く構成は良いと思う。
- wayland通信は軽量なので、ネストの影響は小さい
- DRM問題
- コンテナマネージメント
- LXC-Launcher
- デモ実装やっつけだったが、Nestコンポジタアーキをうまく動かすためには、ここが肝となるかも。
- 理由:デモでは、IVI_SHELLで、ゲストWestonのライフサイクルを管理。一方で、LXCとホストWeston(IVI-SHELL)は、そのままでは、何も連携できない。
- RunLXCでのアプローチ:LXCのAPIを使ってコンテナのライフサイクルと、ホストWeston(IVI-SHELL)のSurface/Layer管理を結合し、コンテナのライフサイクル管理(再起動デモ)を実現
- サーフェス、ディスプレイマネジメントとコンテナマネジメントは統合する必要があると考えている
- コンテナマネージャもGUIを認識しないといけない。
- デモ実装やっつけだったが、Nestコンポジタアーキをうまく動かすためには、ここが肝となるかも。
- IVIのリブートは5sec程度、Clusterコンテナは1sec程度でリブート可能
- DRMのマネジメントをゲストに見せるのはローレベル過ぎる
- LXC-Launcher
- init
- Host環境
- systemdをベースにする
- minimum構成に外せないものは何か
- yoctoを使ったsystemdは大きい
CES2020(1/23) - 黒川さんから
- アプリケーションコンテナは利用していない
- アプリケーションからどのコンポジタとバインドするのか、ホスト
- ホスト側
- 全部アプリケーションコンテナにするのは、組み込みには向いていないかもしれない
- SMACKは本来介入しなくてよいはず
- ホスト側で設定したセキュリティポリシーに従って、アプリFWがMACコントロール
- QM isolationも含め、hostの分離の仕方(initから) を考える
- LXCそのままで続けていくのは無理があるかもしれない
- Ethernet
- systemdがDNSを起こすと、LXCと競合する
- 名前解決ができなくなる
- DNSマスカレードの設定をレシピ化
- ネットワークのネームスペースはホスト側に置くべき。
- ローカルリンクはLXC
- Hostのconnmanは物理デバイスの制御
- 将来的にはスライサーが欲しい
- systemdがDNSを起こすと、LXCと競合する
- バックエンドはホスト → ホストは大きくならざるを得ない → ホストの検証範囲が広がってしまうので、どのように切り分けるか、がコツ
- アプリケーションはアプリコンテナ
- 早いところ、アプリを分離したい
DRM lease
- 複数の独立したコンテナでディスプレイを分配したい。
- DRM leaseを利用すれば、Hostのmasterがゲストのコンポジタにdisplayのmaster権限を貸し出しできる
- unix domainなどでfile descriptorを渡す必要がある。
- 1GPU - 2 Display というケースで必要
- R-CARはRender Nodeの仕組みが必要
- lease managerはmaster権限を貸し出すだけで、初期化はコンテナのweston
- アーリーレンダリングに必要
- GPU描画をQMの対象外にしたい
- メータの中でもQMのレベルを分ける必要がある。
- GPUのドライバは検証できない。GPUのIPベンダのみ。
- セットの動作保証はできない
- Pros
- 出力の宛先を切り替えたい
- 1GPU - 2 Displayのようなユースケースに対応できる
- IVIの中を分けることもできる(IVI + RSE)
- inputについてはユースケースの定義が必要
- 一つのタッチイベントやボタンイベントを共有する
- 4月から開発スタートしたい
- CESでプロダクトレディーの状態にしたい
次のミーティング
- 2/20
- AMMのどこか
TODO
- USBのRequirementを提案する必要がある
- Requirementのたたき台を日下部さんに出していただく → Dr. Yamaguchiがまとめる。
- Security Modelの構築(SELinux, AppArmor) ... メータのEG
- 考え方の整理からスタートする
- IC Service ... メータTier1 ですり合わせていただく
- Linux Graphic stackのQM実現方法
- 既存のほかのOSのやり方を学ぶ ... メータTier1 ワーキングから出してもらいたい
- GPU(OpenGL)
- デジタルクラスタのときに、どういうQMの考え方をしたのか
- モータから絵を描画することに変化して、QMのレべルをどう切り分けたか
- 既存のほかのOSのやり方を学ぶ ... メータTier1 ワーキングから出してもらいたい
- カーネルのQM Isolationについて、ELISA(SIL2Linux)に考え方を確認する
- DRM lease
- Connectivity のデバイスに対する要件の整理 ... 担当者を探す
- ある程度要件がまとまった時点でContainer Managerのデザインを行う
- GUI Reference ... 田口さん
- 3月までに
アーキテクチャレビュー
今後のタスク
Nuttxを用いたCANのシステム構成.pptx
DRM lease :
Security Model :
USBのハンドリング :
IC service :
Container Manager :
ELISAメソッドを使ったQMアイソレーション in Kernel
とりあえず、リンク
カーネル(まだ荒い。。。)
https://makelinux.github.io/kernel/map/
ブロックデバイス
キャラクタデバイス
drm/kms(graphics関連)
=== Appendix 12/4の議事 ====
進捗の確認
IC EG Callの内容
- 関係者に資料は共有している
- プロジェクトを開始する前にしなければいけないこと
- インフラ
- Contribution
- UCBに入れるのはやりにくい。いらないもの、ビルド環境がIVI用に特化して構築されていて、修正しにくい構造になっている。
- CESデモはUCB
- リリースプロセス
- プロジェクトの進め方のたたき台?
- 回せるものを作成して、進めていく
- 手を動かせる環境を整えないといけない
- AGL UCBをスタートにすると、土台が大きすぎて難しい。仕切り直したい。
- 合流できるなら合流しましょうというスタンス、を伝える
- CESからAMMの間に環境を整えたい
- 山口さんの環境はUCBを外している。ホストだけでよい
- AGL UCBをスタートにすると、土台が大きすぎて難しい。仕切り直したい。
- Cluster固有の作業は、Hostの環境構築とは分離
- レシピセットは山口さん
- レイヤーデザインは谷川さん
- CES後
セキュリティ
- (サイバー)セキュリティのデザインを決めないといけない
- smackfsを共有していて、全ゲストから参照できるようになっている
- chrootを破られると、リソースが別のコンテナから参照できるようになる。
- 製品にするまでには解決
- 今後の課題
Sound
- 特に進捗なし
- PulseaudioのAuthenticationでパーミッションエラーが発生している
- pipewireに切り替える(unicense)
Graphics
- コンテナ上でwayland backend でwestonを動かすことを試す
- 11/6時点での経過。drm-backendでの表示OK、wayland-backendではhomescreen表示がNG。
=>QML Scene使って、IVI-shellの問題かWMの問題か切り分ける。直近はwayland-backendでの課題に注力する。 - https://confluence.automotivelinux.org/download/attachments/16810063/2020ces_agl_ces3demo_20191106.pptx?api=v2
- 11/6時点での経過。drm-backendでの表示OK、wayland-backendではhomescreen表示がNG。
- compositor on DRMが理想だが、現状はweston(guest) on weston(host)
- 小さなコンポジタが必要
- libdrmをリンクできる人は一人しかいない
- 複数リンクできるようにするか
- マスターを作る
- AndroidはDRMの上に違うサブシステムが乗っている。
- グラロクとsurface flinger
- westonをhostに存在させると、シェルがなくなってしまう。
- waylandはまだ枯れていないので、できればhostに残したくない
Ethernet
- LXC
- meta-verbalizationのレシピが古いので最新に切り替える。
Container Manager
- 今実装中
- CANサポートがない
- 動的にvCANデバイスの割り当て
- 動的なドメインソケットの割り当て
- 設定ファイルで動的に動いてほしい。
- 製品にするには、CかC++
- オープンソースで選択肢(e.g. LXD, LXC, docker etc) を用意する
- 製品側で選択して、改造
- 製品側でQMの認証
- スペックを作るためのたたき台
- LXCがEOLになってもAutomotive用に生き残らせたい
- コンテナランタイムから分離したい
- (Container) Managerではなく、違う名前を考えたほうがいいかも
- Containerでできた仮想イメージをマネージしたい(vagrant, libvirtみたいな。現状あるLXD, Kubernetesはネットワーク向け)
- コンテナランタイムの抽象化層
- 車載特化のものを作りたい
CES Integration
- CESデモ反省会(実装してみてわかったこと)
- ネットワークは?
- dhcpで起こしている
- LXC-netのbridgeは、つなぐ先(host)がいないと、ゲストからネットワークが繋げない
- hostのbridgeを割り当てたほうがいいのでは?
- hostのネットワークが起き上がってから、host - guestのbridgeをつなげる
次回打ち合わせ
- 1/22, 23 @大阪
- AMMまでの課題
- CESの課題
- 見つかった課題
- 機能ブロック上、足りていない機能
- 反省会、新年会、次回の定例
Init
- systemdがでかい
- systemdを削る
- サービスが無い状態
- 代替案がない。。
- busybox
- sysv-init
- AndroidはCのプログラム
- 起動はテキスト
- シンプルのリファレンスがあればいい?
- 最低限のこと
- 電源周り
- コンテナとワンセットで作るべき?
- systemd-mslを作ると小さくなるのでは。
- 2段階のinit
- clusterを起動するためのminimal QM init
- こっちをinit
- IVIを動かすためのホストシステムとして、systemdを起動するホスト用コンテナ
- initrd → cluster(1)
- initrd → systemd(2)
- clusterを起動するためのminimal QM init
今後
- AMM Hawaii でIC EGの活動を発表し、アップストリームをアピールしておく必要がある。
マイルストーン(Implement Goal)
- 2019.12 RFQ
- 2019.2 Start development
- 2019.6 Cluster Container
時期 | 備考 | |
---|---|---|
2020.3 |
| APIの決定 |
2020.6 |
| |
2020.8 |
| |
QM : 考え方
=== Appendix 11/6の議事 ====
AMM議事内容
- 原木さん(キーノート)
- 山口さん
- CAN に関しては、ユーザ空間ライブラリの役割をきかれた
- OBD2といった標準フォーマットと独自の境界がどこか、という質問がきて、SocketCANのレベルでは独自データを流してユーザ空間ライブラリのところで、OBD2などに変換するという回答をした
- 谷川さん
- 光成
- Warning Buzzarが機能安全の対象になるときは、IVIの音がうるさすぎて安全侵害する可能性があるのでは?その場合は、Safety側からIVIの音を強制的にミュートにするなどの処理が必要という指摘があった。(AudioKineticのフランソワからの指摘)
- これは利便性にかかわることであって、機能安全には関係ないと考える
- Warning Buzzarが機能安全の対象になるときは、IVIの音がうるさすぎて安全侵害する可能性があるのでは?その場合は、Safety側からIVIの音を強制的にミュートにするなどの処理が必要という指摘があった。(AudioKineticのフランソワからの指摘)
- 山口さん Safety Critical Summit
- ELISAとのコラボ
- Function Safetyの分析
- QM対応したオープンソースのソフトウェアスタックの作り方
- ClusterのASILは他のASILの警告を通知するための端末、という位置づけ
- AGL側でミニマムセットを打ち打さないといけない
- ELISAとのコラボ
今後のスケジュール
日時 | 内容 | TODO | Remark |
---|---|---|---|
10/9 | IC EG meeting | ||
10/11 | ボードセッションのアウトライン | ||
10/21 | 事前打ち合わせ | ||
10/22-23 | AMM |
| |
10/24 | SAT |
|
|
10/31 | Open Source Safety Critical Summit |
|
|
11/5 | IC EG Call | ||
11/6 | IC EG Tech Meeting 13:30 - 16:30 | ||
11/11 - 13 | Integration Session(SC) | CES #3? 各社デモ |
|
11/19 | IC EG Call | ||
12/3 | IC EG Call | ||
12/10 - 12 | hackfest/CES Integration session in San Francisco | CES #3? 各社デモ? | |
12/? | 発送 | ||
1/7 - 10 | CES |
進捗の確認
Sound
- 特に進捗なし
- PulseaudioのAuthenticationでパーミッションエラーが発生している
- pipewireに切り替える(unicense)
Graphics
- コンテナ上でwayland backend でwestonを動かすことを試す
- 11/6時点での経過。drm-backendでの表示OK、wayland-backendではhomescreen表示がNG。
=>QML Scene使って、IVI-shellの問題かWMの問題か切り分ける。直近はwayland-backendでの課題に注力する。 - https://confluence.automotivelinux.org/download/attachments/16810063/2020ces_agl_ces3demo_20191106.pptx?api=v2
- 11/6時点での経過。drm-backendでの表示OK、wayland-backendではhomescreen表示がNG。
Ethernet
- LXC
- meta-verbalizationのレシピが古いので最新に切り替える。
今後
- AMMに向けての振り返り
- 今後の活動
- CESデモの状況の共有
- ★各社分担した作業を行う
- 複数社にまたがる仕事について : リーダを決めてリーディングするか、話し合って決めるか
- Fundingを使う場合、見積もり、RFQを出す必要がある
- テンプレはWaltからいただいている
- 進め方を相談したい。
- 意見
- 誰と話せばいいかを決めてほしい
- SCでIC EGのFundingの話がある
- やりたいことのイメージはネタとしてもっておいたほうがいい。
- Fast bootは日下部さんに1枚絵を描いていただく
- いつまでにアーキテクチャに対応したコードを出すか決める必要がある。
- Requirement SpecはCluster EGが範囲
- 3月くらいまでにほしい
- 製品化のライフサイクル & Product Readinessとは何か
- ハードウェアの依存性など
- 現在E3でSpecが分かっているが、普遍的ではない。何年くらいで更新していくか
- カーネルバージョンへの対応
- オープンソースを利用したメンテナンス(同じSoC)、次の世代の切り替えをどのようにしていくか、の議論が不足している。
- メンテナンスポリシーは各社で異なる。
- オープンソースを大きくチューニングする会社もあれば、できるだけオープンソースを変更しない会社もある
- メンテナンスの言葉の定義が必要
- 様々なユースケース(Securityパッチ、カーネルバージョンアップ、顕在化したバグフィックス、機能拡張など) があるので、細分化して議論していく必要がある
- ディスカッションの機会を作成して議論を深めていく
- クラスタを中心としたシステムに対して、どのようなメンテナンスが必要なのか考える。
- LTSや製品Readyとは何か。
- IntelはHardwareが共通化されているが、ARMはHardwareが変わるとソフトウェアに影響が出る。
- ハードウェアの依存性など
- AMM(3月)
- AGL側でLSBのようなミニマムなスタンダードが必要だと打ち出す
マイルストーン(Implement Goal)
- 2019.12 RFQ
- 2019.2 Start development
- 2019.6 Cluster Container
時期 | 備考 | |
---|---|---|
2020.3 |
| APIの決定 |
2020.6 |
| |
2020.8 |
| |
QM : 考え方
次回
12/4(水) 13:30 - 16:30
=== Appendix 10/8の議事 ====
F2F ミーティングの議事内容
https://wiki.automotivelinux.org/agl-distro/sep2019-f2f
9/24 Pre-meeting
目的 : Continental, Volkswagen, Bosch のメンバとコンセプトの共有
- コンテナアーキの方向性を共有
- 2日目の話をする前に状況を理解してもらう
- VolksWagen, Continental, Bosch に方針を理解していただいた
- Low AGL target is full digital cluster
- Lowをターゲットにしているが、Highにも適用可能である
- LinuxのDevelopmentをマネジメントすることは難しい。Safetyを担保できない
- Reference HardwareにはすべてのHWが含まれているか?
- Autosar(CAN)の実装はLinuxの外にあるべき
- CANの応答(reply)性能を守れるか、が大きな課題になる
- vxcanはいつからKernelに入っているか?
- 4.14から入っている
- SafetyとNon Safetyの切り分け
- Micro kernelの考え方
- QNXはMicro kernel
- Integrityはちがう
- Micro kernelの考え方
- コンセプトをFixしたらどう進めていくかが気になるとのこと
ちなみに
水山氏がAMM 2日目にキーノートでMain FunctionとIsolation Method(Hypervisor)のインターフェイス(virtio)に使えるAPIの標準化の話をする。
Virtualization Groupとの連携は?
→ Opensynergyの人と繋がる。ELISAもつながりそう。
9/25 Instrument Cluster EG Update
- 資料
- この資料をベースにAMMのキーノートを作成する
- ただし、デベロッパー向けの資料などは削除する
- AGLはyoctoを利用し、IVI Core Imageを作成している。クラスタのCore ImageはIVI Core Imageと異なる
- branchという言葉でmeta-aglのbranchだと思われた。
- pokyの継承はしないかもしれない、ということを伝えればよかった。
- (pokyを引きずった時点でIVI前提になる)
- meta-xxxx を否定しない
- Non Safetyが2つに分かれると困る(QM 分割) を早めに伝えるべきだった。
- KernelのQM対応については、ELISAとコラボすることを伝えた
- Kernelだけでなく、ユーザ空間の基本的なSWスタックもELISAとコラボすることを伝えるべきだった
- QM Isolationをコンテナでやる理由が弱い
- Hypervisor
- Linuxを並べる無駄さと複雑性の増加をうまく説明したい
- メリット : Linuxで並べるなら、アプリケーションコンテナを扱うほうが手軽 => コストが安くなる。HypervisorだとToo much
- メリット : 大きなシステムを分割できる。一方、Hypervisorは分割された違うシステムをインテグ。
- Hypervisorでやるとしんどいことが経験則でしかない。インテグレーションコストが大きい。特に密結合するようなアプリケーション
9/25 CES 2020
- 資料
- CES #3のデモにContainerを利用したデモ
- たにかわさん LEAD
9/26 Instrument Cluster Architecture
- 資料
- Container Architecture
- CAN
- 質疑
- Implementの方法(CAN proxy)
- CAN ProxyがKernel空間にある案を採用する
- SPI(shm)
- 車両信号のルーティングのAutosarの仕組みを教えてもらった
- PDU(https://www.autosar.org/fileadmin/user_upload/standards/classic/3-0/AUTOSAR_SWS_PDU_Router.pdf)
- 外にCAN Communicatorを置く場合は、上の資料を参考にするといいとのこと
- Graphics
- 質疑
- Nested Compositor
- 描画の機能を保つために、Low levelにひとつHW Compositorが必要
- HWに依存する。
- DRMでうまく抽象化してもらえるとありがたい。
- monolithic の Graphic Architectureも使える、ということを伝えるべきだった。
- コンテナでグラフィックスの話をすべきでないかもしれない。
- Sound
- 質疑
- 1コンテナに複数のアプリがいたときはどのようにするのか? → 説明が足りていなかったので、Soundに追加しました。Sound
- Roleのことを触れていた。識別できるかを気にしていた。
- Authenticationについてジョージから提案あり → Soundに追加しました。
- Walt : Pipewireを使う? → PulseかPipe、どちらでも可
- パフォーマンスのRequirementに触れないといけない。
- エコキャン/ノイキャンありき
- AGLのApplication Frameworkのセキュリティモデルに従ってアーキテクチャを作成する
- そこから実装手段
- Audio Focusの話に触れていない
- Authenticationは入れなくてもいいのではないか。
- 1コンテナに複数のアプリがいたときはどのようにするのか? → 説明が足りていなかったので、Soundに追加しました。Sound
- 質疑
AMMに向けた活動
Keynote
- Status
- 原木さんが発表する
- いつ?? → まだ決まっていない。2日目の予定
- 話の流れは作成完了(原木さん)
- 山口さん、光成レビュー中
- 原稿は作ったので、今週いっぱいめどに展開される。
- お願い
Session
- Status
- 山口さんが大枠を作成
- Graphic, Soundを追加する
- 3名が無理? → 2名 x 2セッションで発表する必要がある
- QAのタイミングを変えて、前半後半
- ゲストが出てくる形
- 山口さんが大枠を作成
- ToDo
- いつまでに作る?
- 全体の時間を確認する。(50分)
- Outlineだけ今週中に出してください。
- いつまでに作る?
CES2020
- Status
- コンテナ入っているうれしさが訴求できるようにしたい
- 作りこみはできない
- AGLの資産そのままで動かし、より作りやすいことを訴求したい
- ポスターが肝になるかも
- ステアリング
- 対応は必要か? (日下部さん) → 特になし
- もし#3に使えるならClusterに使いたい
- walthamでClusterからIVIにイベント送れるか
- surfaceにfocusをあてて、surfaceにイベントを送ればよい
- LINで送られてくる
- SoC : H3 Starter Kit (3.0) + KingFisher
- LINはそのままつなぐ
- AGLはH3サポートされているか?
- HH8.0.1からサポートされている
- HH8.0.2はubootを新しくしないといけない
- KingFisher用にするにはデバイスツリーを変更すること
- ToDo
- 特になし
- アイディアがあればください。
Requirement EGとのコラボについて
- Requirement EG とのコラボ、どうなりますかね?
- Responsible of IC EGでRequirement Specが浮いている
- sound system, window system
- Containerで動かせるようにするための方法を考える。
- コンテナ間のインターフェイスより上のレイヤーを変えないでほしい
前回の確認
F2Fに向けた議論
TODO
進捗
- Graphics
- 進捗は特になし。
- Host側もAGLで、という要望ありなので、どうするか。。
Sound
- 別のコンテナからPulseコンテナにストリームを流せなかった
- pulseaudioをユーザセッションで立ち上げると、そのユーザしか使えないため、別のユーザ(コンテナ)からアクセスできない
- pulseaudioをシステムで立ち上げる必要あり(未実施)
黒川さん
- AGL demo platformを動かしてみると、SMACKで引っ掛かったとのこと
- SMACKについては、グルーピングができるとのことなので、Joseに聞いてみるといいかも
- ダウンロードするmanifest.xmlを一つにする
CAN
測定条件
M3をA57だけにして測定した。
8byteのCANデータを転送している。512回試行した平均値。
周期は30msec
- vcan0→ vcan0 : 20 usec
- メモリコピーくらいしか走っていない
- コンテキストスイッチくらいのオーダー
- vcan0 - > vcan1 : 22 ~ 23 usec
- vcan0 → vxcan : 23 usec
- CAN_GWを通っても性能劣化しないことがわかった。
- 測定観点のアドバイス
- 8byteを10msecで実施するとよいのではないか
- 受取側が2processだとどうか?
今後のスケジュール
日時 | 内容 | TODO | Remark |
---|---|---|---|
10/9 | IC EG meeting | ||
10/11 | ボードセッションのアウトライン | ||
10/21 | 事前打ち合わせ | ||
10/22-23 | AMM |
| |
10/24 | SAT |
|
|
10/31 | Open Source Safety Critical Summit |
|
|
11/5 | IC EG Call | ||
11/6 | IC EG Tech Meeting 13:30 - 16:30 | ||
11/11 - 13 | Integration Session | CES #3? 各社デモ | |
11/19 | IC EG Call | ||
12/3 | IC EG Call | ||
12/10 - 12 | hackfest/CES Integration session in San Francisco | CES #3? 各社デモ? | |
12/? | 発送 | ||
1/7 - 10 | CES |
次回打ち合わせ
- 10/22 - 10/24 : All Member Meeting
=== Appendix 9/12の議事 ====
F2Fに向けて
- 進め方の確認
- F2F@ベルリンでコンセプトを説明してキーメンバーに了承得る。その後、AMM-ABで報告を狙う。
- UCBではなく要素開発。現時点ではgerritにはコードを置かないことを伝える。
- アーキテクチャコンセプトレビュー
- 資料レビュ:light weight で用語統一
- Fast boot : 製品向けそのものではなく、今のAGLをどう軽量化すればよいかを示す。
- 作るのは主要機能部分。機能安全そのもの、isolation method部分 は対象外とすることをはっきり伝える。
- 将来的にSafety部分をLinuxで実現することもあるだろうが、今回の話題ではない。
- メインファンクションとしてのクラスタは作成。IVIとクラスタを共存させることはしない(相反する)
=>コンテナを使う。
- QM Isolation
- QM isolation に対応するkernel 部分の開発、対応が課題。Elisaで期待できないか。
- 一日目か二日目(AM)にクラスタのアーキの話をして、個別のアーキの話をする
- 資料レビュ:light weight で用語統一
- ToDo
- アーキテクチャの資料の修正(原木さん、山口さん、光成)
- 2日目(25日)の午前中にアーキテクチャの概要のセッションを実施する
- 詳細のアーキは2日目か3日目のAMにする
- 機能安全は初日の感触で。
- 9/18までに個別アーキテクチャを埋める → 全体の課題をまとめたConclusionを23日に作成する@ベルリン
- AGLを使ったとき、コンテナらどうなる?
- GUI
- アプリケーションコンテナでweston起動する(起動のやり方を記述する(アプリコンテナにすることでinitが変わる))
- dmabufの原因を調べる
- CAN
- CANに関わる主要要件をTier1, OEMで議論してCANの資料に載せる
- 進捗
- 機能安全と非機能安全の境界
- Interfaceの具体的なたたきだいを出す(原木さん、丸山さん、田口さん、光成)
- GUI
- Qemu環境でX11と waylandを動かしてみる(谷川さん)
- Containerだけだと少し扱いにくい
- X11を動かした。表示はできるが、このままでは開発には耐えられないので整備が必要(sshでコマンドを送っている)
- デフォルトでGPUアクセラレーションのセットアップができていない
- 原理的には動く
- コンテナマネジメントの方法を考えたい
- Qemuの方は開発環境(LXD)を整える方向で考える
- R-CARでコンテナ上でwaylandを動かしてみる(宗像さんと端山さんのところで相談してもらう)
- westonをコンテナで動かせていない(R-Car)
- x86環境
- Containerはdocker
- コンテナ外: driやXDG_RUNTIME_DIRをbindすれば動作した
- コンテナ内に入れると、いろいろ問題が出た
- input deviceやttyデバイスが見れないと起動できない
- R-Car
- LXCをcontainerとして使う
- driをbindすれば動作する
- ただし、/run/user/<userID>は変更する必要がある
- コンテナ内外GPUにアクセスすることは問題ない?
- GPUのシェアリングは可能
- コンテナに入れるのがClientだけだと専用ドライバ不要で問題ない
- udevが見えない
- アプリケーションコンテナを試す価値はあるかも
- 今はシステムコンテナで動かしており、いろいろ上書きされて何か悪さをしているのかも?
- システムコンテナは今後クラスタの機能を優先して入れるので、コンポジタはアプリケーションコンテナであるほうがよい
- システムコンテナでwestonが動かない
- weston初期化時にpvrモジュール内でdmabuf importに失敗している
- GPUは動いている
- ゴールのClusterでGPUをアクセスするケースがあるので、いずれシステムコンテナでGPUを触れる必要がある → 単独のglアプリが動くのか見てほしい
- GPUの制約を知りたい
- namespaceが絡んでそう
- Qemu環境でX11と waylandを動かしてみる(谷川さん)
- Yocto(山口さん)
- thudに変更した
- Sound
- まだ別コンテナから出力できていない
- pulseaudioのdomain socketのパスを変更することは可能なので、流せると思う
- pulseaudioがユーザセッションでしか起動できない
- CAN
- vcanで評価する環境を作成した
- CAN FDは必要か?
- 直受けは考えていない。Gatewayで間引かれた後で受ける
- CANのままではなく、serialで受ける
- イベントドリブンよりポーリングするほうが時間を守りやすい
- Linuxアプリからは/sys/fsにアクセスすれば加工されたデータがあるとよい
- packetでやると優先度管理や定常的にだれかデータを引き抜く必要がある(Realtimeを守るため、CPUが固定される?)
- 相手(RTOS or CANマイコン)側でStateを持って、shared memory をFIFOでシェア
- OSIモデルにならって3つくらいの階層に切って定義してみるのはどうか
- 演算系は外のRTOSで行い、抽象化されたデータを受け取るのがいいのかな、と思う
- 主要要件をCANの資料の中に記述する
- Tier1, OEMで議論する
- CANのデータのやり取りはOEMによって異なる
- たとえば生データでやり取りする、演算したデータを受ける
- Container Manager(光成)
- LXDについて調査した
- 指摘内容を修正して資料をConfluenceに置く
- 要件
- 整理中
- テスト方法も考え中
- アーキテクチャの資料の修正(原木さん、山口さん、光成)
次回打ち合わせ
- 10/8 webex
- もしF2Fで必要であれば、AMM会期中に行う
=== Appendix 8/28の議事 ====
議事
- 前回の資料の確認
- アーキテクチャコンセプト
- 分散型アーキテクチャの絵を追加
- 一番見せたいのは機能安全も含めた全体像ではなく、複数のシステムが同居していること。機能安全ソリューションがいると言いたいことがぼける
- 分散型アーキのページとProposalの間にワンクッション必要
- 機能安全ソリューションは、手段はいろいろある、程度でとどめる。機能安全の解決方法の例を追加(山口さん)
- 分散型アーキテクチャの絵を追加
- F2Fにおいて話す内容
- ある程度固まったアーキを話したい
- 何を開発する必要があるのか提案したい。
- Container Management
- QMをどうやって達成するか
- Document - 製品側はどうやって使っていくか、カスタマイズしていくか、というものが必要
- セッションは2つに分けたほうがいい。目的をクリアにしないと、手段が目的になりやすい
- どういう製品像を目指しているのかを紹介
- どういうふうに使いたいかを紹介する
- なぜIVIと同じ作り方だとダメなのか
- 経済的観点(機能拡張をすると検証工数が爆発する)
- システム要件(起動時間など)
- SDLなどはOTAなどでのアップデートが前提
- セキュリティが目的ではない
- より技術的な話は、興味を持った人で行う。Graphic, Soundなど、Containerの経験がある人と技術的ディスカッションがしたい
- どういう製品像を目指しているのかを紹介
進捗確認
- 機能安全と非機能安全の境界
- ライブラリのレベルでinterfaceを切ってみた
- kernel subsystemのレベルで吸収したほうがよいのではないか
- ブザーもASILの対象
- 「機能安全を達成する機能」と、「達成手段」は分けて考えたほうがよい
- 機能安全の方法は網羅的に出したほうがよいか?
- やりかたは各社それぞれ
- ライブラリのレベルでinterfaceを切ってみた
- 目標性能
- No update
- Sound
- CarPlayとAndroid Autoの経路の確認
- 構成図があるのでConfluenceにアップする
- レイテンシ要件が厳しい。
- Softwareで解決が難しい場合、SoCに性能達成を要求する必要がある
- 目標性能のみ記載する(NDAが絡むので、なぜそれくらい必要なのかは記載しない)
- Softwareでのノイズキャンセリング/エコーキャンセリングはPrivileged Containerに配置すると思うが、パスが多くて複雑
- パスは一つのサーバーに集約したほうがよい
- pulseaudioでの音声出力
- ユーザセッションでコンテナ内で起動、音声出力確認できた
- システムワイドで起動しない
- pulseaudioみたいなユーザで起動する
- コンテナ間通信をトライする。(domain socketの共有)
- ユーザセッションでコンテナ内で起動、音声出力確認できた
- CarPlayとAndroid Autoの経路の確認
- CAN
- Gatewayの使い方、性能
- no update
- LXCでCANを使えるようにする
- LXCでCANを配信可能
- Domain socket(コンテナ間の通信)はcontainer managerで設定してあげる必要がある。
- Readmeに記載する
- パスを空ける = そのパスを通じてコンテナ内の全アプリが外部アクセスできる。セキュリティ的に大丈夫?
- パスを空けないと通信できない
- セキュリティが必要であれば、カスケードできるものが必要。それは必須事項ではない。
- GUI
- Qemu環境でX11 or Westonを動かす
- no update
- R-Carでコンテナ上でwaylandを動かす
- まずデスクトップで、dockerを使って確認
- Docker Clientでhostのwestonと通信し、wayland clientを動かすことができることを確認した。
- LXCで動かしてみる
- まずデスクトップで、dockerを使って確認
- Qemu環境でX11 or Westonを動かす
- Gatewayの使い方、性能
- Yoctoのバージョン
- thudに変更する
- Container Manager
- リファレンス実装を作成する。製品ではオリジナルになる
- LXCを前提としたものにしたくない
- 機能がAPIやライブラリになっているほうがいい(westonとlibwestonみたいな関係)
- LXDを参考に、どのようなマネジメントが必要なのか整理する
TODO
- アーキテクチャコンセプト
- 機能安全ソリューションは、手段はいろいろある、程度でとどめる。機能安全の解決方法の例を追加(山口さん)
- 機能安全と非機能安全のインターフェイス
- 機能安全達成とinterfaceの絵を分ける、どういう機能が機能安全で必要なのか説明する絵が必要(光成)
- 要件整理(原木さん)
- 目標性能
- 全体アーキテクチャの整理(山口さん)
- 技術課題
- Sound
- CarPlayとAndroid Autoの構成図(日下部さん)
- Container間でSound出力を行う(光成)
- CAN
- Gatewayの使い方、性能(日下部さん)
- コンテナ間通信の方法をREADMEに追記(山口さん)
- GUI
- Qemu環境でLXC上でX11 or westonを起動(谷川さん)
- R-CarでwestonをLXC上で起動(黒川さんチーム)
- Container Manager
- LXDを参考に、どんなマネジメントが必要なのか整理する(光成)
- Sound
=== Appendix 8/8の議事 ====
- 機能安全について
- Incstrument Cluster System全体でASIL-Bをとるには、Linux側もQMを取得する必要がある
- OSS側と量産(機能安全)の時間軸が異なることが課題
- QMも機能安全の一部である
- 機能安全やQM(長時間, 量産)とアップデート可能部分(短時間の開発スパン, OSS, Linux)が同居できるシステムにする必要がある
- Monotithic Architecture
- アプリが死んだらリセットというプロセスになりがち
- スマホはモノリシックアーキテクチャだが、APIで分離(Binder)して、アプリケーションの独立性を高めている
- スマホは汎用コンピュータになっている
- 分散システム
- マルチOSにすることは実は難しい。ハードウェアの違いを吸収するためOSを変更したり、仮想化したり、課題が多い
- やりやすい方法がないか、ということで出たアイディアとしてコンテナ
- 垂直統合であればHypervisorは向いているが、自動車業界は同じレイヤーのソフトウェアに複数のベンダーがいる水平統合
- リアルタイム確保について
- そもそもリアルタイム確保をアプリケーションプロセッサで行うことについて議論すべき
- アプリケーションプロセッサでは時間を予測できない
- コンテナ
- 既存資産を利用しつつ、システムを作りたい
- glibcを使わない、という選択ができる
- 例えばQMが必要な領域に対しては小さいlibcを選ぶことで、検証工数を減らすことができる
- カーネルは選ぶしかない
- 組み込みに適したコンテナ
- サーバー系コンテナはネットワークとストレージしかサポートしていない
- ホットプラグ
- CAN
- 描画
- アプリケーションマネジメント
- メッセージ通信はdbusが一般的
- 今季はなんちゃってでいい
- システムコンテナとアプリコンテナの区別
- Hypervisorとの置き換えが容易
- できるだけアプリコンテナを増やし、ポータビリティを上げたい
- メモリ、ROMは消費する
- 性能要求
- 量産に耐えうるレベルの要求値を出してほしい
- Linuxを採用することに対して
- OSS≠コストダウン
- Sound Architecture
- 特権コンテナにサウンドサーバを置くアーキで合意
- 一方で、従来クラスタはIVIと関係なく音を出すことができる
- クラスタコンテナ専用の音が出せるようにデバイスのprivilegeを与えればよい
- pulseaudioを試す
- エコーキャンセリングなどはどうするか → 次回以降
- CAN
- Linux 4.12からGatewayの機構が入っている
- LXCがCAN GWを設定できないかもしれない → LXCを変更する必要があるか調査する
- CANのラベル
- メータは多くて50前後
- IVIは300 ~ 500くらい
- ルーティング
- 抽象化
- W3Cとか?
- 定義されているもの以上のラベルは競争領域
- W3Cとか?
- ライブラリ(libcan)で各アプリレベルで抽象化するようにしたい
- サーバーを作っても使われない
- First Stepとしてはライブラリがいいのではないか
- CとC++で作ってほしい
- AGL Container Profile
- 対象はHostのみ
- コンテナライフサイクルを管理するものが必要
- GUI
- Compositor
- 必要であればPrivileged コンテナで動作する
- Xでもwaylandでもどちらでもいい
- Containerアーキはそもそも取り換えられることがコンセプト
- SharedやIPCはコンテナで可能
- XはWindow Managerを分離できているが、Waylandはできない(統合されている)
- Chrome Browser
- Input
- 要検討
- Privilegedコンテナから配送するか?
- Home画面(ショートカット)はPrivileged?
- 機能はPrivileged
- HMIはApplication Container
- 9月末までにsimple-egl(GPUアプリ)をPrivilege経由で動かしてみる
- Compositor
- AMMでセッションを開きたい