コネクテッド・カーに採用される 仮想化osのデバッグ手法 · xen dom0...
TRANSCRIPT
日本ローターバッハ株式会社
技術サポート
香川貴人
2017年7月12日
コネクテッド・カーに採用される仮想化OSのデバッグ手法
www.jp.lauterbach.com
欧米の車載機器メーカで採用が進むハイパー
バイザOSに対する取り組み
2 / 38
Hypervisorシステムのデバッグ
3 / 38
ハイパーバイザシステムとデバッグ
ハイパーバイザとは
ハイパーバイザシステムのデバッグ
デモ
アジェンダ
4 / 38
組込みデバッグツールの世界的なリーディングカンパニー
1979年ドイツミュンヘン近郊にて設立
JTAGデバッガ、ICE(In Cirtuit Emulator)の開発、製造、販売およびサポート
中国、フランス、イタリア、日本、チュニジア、イギリス、アメリカに営業/技術サポート拠点
従業員数:ワールドワイドで約120 名
5 / 38
製品コンセプトと強み
モジュラー型の製品構成
80種以上のCPU/DSPアーキテクチャをサポート
様々なホスト環境、コンパイラ、OS、IDEに対応
全製品に共通のGUI (TRACE32 PowerView)
6 / 38
製品ポートフォリオ
7 / 38
ハイパーバイザシステムとデバッグ
ハイパーバイザとは
ハイパーバイザシステムのデバッグ
デモ
アジェンダ
8 / 38
What is a hypervisor?
出典:ウィキペディアによると
“Hypervisor”はコンピュータソフトウェアの一部で、Virtual Machineを生成、実行するファームウェアまたはハードウェア
Hypervisorが1つまたはそれ以上のVirtual Machine を実行しているコンピュータはホストマシンとして定義される
各Virtual MachineはGuest Machineと呼ばれる
Hypervisorはゲストオペレーティングシステム(OS)に仮想的な動作環境を提供し、
ゲストOSの実行を管理
様々なOSからなる複数の
インスタンスが仮想化された
ハードウェアリソースを共有
9 / 38
Why and where to use a hypervisor?
1つのハードウェアで異なるユースケースを並列処理
1つのハードウェアに複数機能を実装:高い費用対効果
安全性:ゲストOSはお互いにブロック
信頼性:Hypervisorがゲストを監視し、
それらを再実行
10 / 38
Why and where to use a hypervisor?
ユースケース:
完全に異なる機能を実現する場合
セキュリティのために分離しなければならい場合
異なるOSを並列に実行
11 / 38
Why and where to use a hypervisor?
多コア化:
ARMのCortex-A5x/A7x
インテル社 Core i9は18コア/36スレッド
CPUリソースをより効果的、効率的に使用するためにHyperviosrを採用
Core0
Core1
Core2
Core3
Core4
Core5
Core6
Core7
12 / 38
Which hypervisor types to exist?
ハードウェアによるHypervisor
Paravirtualization (準仮想化)
Hypervisors (ハードウェアによる仮想化)
Type 1 hypervisor
Type 2 hypervisor
13 / 38
Which hypervisor types to exist?
ハードウェアによるHypervisor
全てハードウェアで管理
例:ARM Trust Zone およびHypervisor: 各ゾーンは、それぞれのレジスタバンクおよびMMUを有する
デバッグツール上では各アクセスクラスを用意
H: Hypervisor
Z: Secure Zone
N: Non-Secure Zone
14 / 38
Which hypervisor types to exist?
Paravirtualization(準仮想化): ソフトウェアhypervisor
ハードウェアによるサポートはなし:Hypervisorソフトウェアによって全て管理
完全なMMUサポート:ゲストOSのプロセスマッピングも含めてHypervisorが管理
各ゲストOSはHypervisorにポーティング
デバッグにはHypervisorとゲストの両方をサポートするための特別な対応が必須
例:Sysgo社 paravirtualized PikeOSと ElinOS (ポートされたLinux)
15 / 38
Which hypervisor types to exist?
Hypervisor (ハードウェアによる仮想化)
Hypervisorは、VMの管理のためにハードウェアを利用
ゲストOSはポーティングの必要なし
Hypervisorはペリフェラル、割り込みおよびMMUへの特権アクセスを管理
各ゲストごとにMMUステージ
ハードウェアサポートの例:
ARM Virtualization Extension
Intel X86 Virtual Machine Control Structure
PowerPC Embedded Hypervisor
16 / 38
Which hypervisor types to exist?
“Type1” Hypervisor
ネイティブ型もしくはベアメタル型
Hypervisorはホストハード上で直接動作
例:Xen
Xen がシステム上で動作するOS
“Dom0”:Linuxが動作する特権ゲスト
“DomU”:ユーザゲスト
その他の例
Wind River Hypervisor
LynxSecure
17 / 38
Which hypervisor types to exist?
“Type 2“ Hypervisor
ホスト型
従来のOS内で動作するHypervisor
例: KVM
KVMはLinuxホスト内のカーネルモジュール
KVMがユーザOSを管理
その他の例
Jailhouse
QEMU
VMWare
VirtualBox
18 / 38
What is virtualized ?メモリ
ハードウェアベースの仮想化では2段階でメモリマネジメント
ゲストは物理メモリを持っていると思っているけれども, 実際には中間的なアドレスにアクセス
Hypervisorが中間アドレスを実際の物理アドレスに変換
Hypervisorによる変換はVMに対し透過
ペリフェラル
I/Oアクセスおよび割り込みはHypervisorによって管理され、VMに送られる
Hypervisorは専用I/Oおよび割り込みにVMが直接アクセスするのを許可する場合もある
19 / 38
Debugger must know how hypervisors work
ハードウェアによるHypervisor
Paravirtualization (準仮想化)
Hypervisors (ハードウェアによる仮想化)
Type 1 (ネイティブ型、ベアメタル型)
Type 2 (ホスト型)
メモリおよびI/Oアクセス
各コアの仮想化技術
20 / 38
ハイパーバイザシステムとデバッグ
ハイパーバイザとは
ハイパーバイザシステムのデバッグ
デモ
アジェンダ
21 / 38
Influence to debugging
ランモードデバッグ (GDB など)時の影響
ストップモードデバッグ (JTAGデバッガ)時の影響
22 / 38
Influence to debugging
ランモードデバッグ (例:GDBなど)
デバッグインタフェース(シリアルやイーサネット通信など)はゲストに繋がっている
デバッグ自体はHypervisor非依存。特別な対応は不要。
見えるのはこのデバッグ対象だけ
23 / 38
Influence to debuggingストップモードデバッグ ---ターゲットを停止
全てのゲストを含むシステム全体が停止
停止させたとき、あるゲストがアクティブ→ カレントゲスト
「カレントビュー」ではカレントゲストのみを表示
ターゲットアドレス
シンボルアドレス = 仮想アドレス = ゲストOSのアドレス
ゲストOSは仮想アドレスを中間アドレスに変換
中間アドレスはゲストにとって物理アドレス、だけれどもHypervisorにとっては仮想アドレス
Hypervisorは中間アドレスを物理アドレスに変換
→仮想、中間、物理の3つの異なるアドレッシングスキーム
→ ゲストOSとHypervisor の2つの完全なMMUステージ
24 / 38
Influence to debuggingメモリアクセス
基本的にデバッガがアクセスできるのは:
物理アドレス領域
カレントゲストの中間アドレス領域
カレントゲスト内のカレントプロセスの仮想アドレス領域
その他のゲストやプロセスにアクセスできるようにするには、デバッガがHypervisorのMMU変換と全てのゲストOSのことを分かっている
→ Hypervisor + OS Awareness
25 / 38
ハイパーバイザシステムとデバッグ
ハイパーバイザとは
ハイパーバイザシステムのデバッグ
デモ
アジェンダ
26 / 38
What means “Hypervisor Awareness” ?
仮想化されたシステム = たくさんのマシン
各マシンは独自のレジスタ, MMU変換, ブレークポイント, シンボル, OS, タスク・・・などもっている
“Hypervisor Awareness”は以下のマシンを識別
ホストマシン (Hypervisorを実行)
全てのゲストマシン
そして同時に全てのマシン
27 / 38
What means “Hypervisor Awareness” ?
28 / 38
Hypervisorデバッグデモ
ターゲットボード
LeMaker Hikey – Cortex-A53 64-bit octa core with up to 1.2GHz
ターゲットOS
Xen
Dom0 (ゲストOS 1)
Linux (ゲストOS 2)
FreeRTOS (ゲストOS 3)
デバッグツール
TRACE32 PowerDebug + ARMv8用デバッグプローブ
ターゲット接続コネクタ:MIPI-10 (ハーフピッチコネクタ)
29 / 38
Hypervisorデバッグデモ
JTAGデバッガを接続した
Live Demo
30 / 38
Hypervisorデバッグデモ
全ての仮想マシンをリスト表示
Live Demo
31 / 38
Hypervisorデバッグデモ
仮想マシン、スペース及びタスクをツリー表示
Live Demo
32 / 38
Hypervisorデバッグデモ
全仮想マシン上の全スペースを一覧表示
Live Demo
33 / 38
Hypervisorデバッグデモ
指定したタスクのスタックフレームを表示
Live Demo
34 / 38
まとめ
組込み分野でも、SoCのマルチコア化およびリソースの有効活用にともないHypervisorの採用が増加
従来通りの組込み開発特有の高度なデバッグ機能を提供するJTAGデバッガは必須
Hypervisor Awareness で、従来のデバッグ機能を継承しつつ、仮想化環境のマルチOSデバッグを実現
35 / 38
LDRA単体テストツールと統合
実機レベルのテスト実行とカバレッジ解析を自動化
36 / 383636
MISRA-C, CERT C コーディング規約
MCDC, 関数コールカバレッジ
ダイナミックデータフローカバレッジ
要件~コード / トレーサビリティ
単体テスト自動化
セキュリティと機能安全の検証を支援
THANK YOU!
日本ローターバッハ株式会社
〒222-0033
神奈川県横浜市港北区新横浜3-8-8
日総第16ビル4F
[お問い合わせ]
Mail: [email protected]
Tel: 045-477-4511
www.jp.lauterbach.com