ChromeOS/vmc
< ChromeOS
VMC(仮想マシンコマンドツール)
[編集]はじめに
[編集]VMC(Virtual Machine Command Tool)は、ChromeOSで実行されている仮想マシン(VM)とのやり取りを行うためのコマンドラインツールです。この章では、VMCの機能や目的についての概要を提供します。
ChromeOSイメージへのVMCの展開
[編集]VMCをChromeOSイメージに展開するための手順について説明します。展開には、crostini_clientパッケージを使用し、展開コマンド $ cros deploy $DUT crostini_client
を実行します。
変更の加え方
[編集]VMCの変更には、system_apiパッケージへの依存関係があります。このパッケージは、protobufおよびdbusのAPI定義を含んでおり、VMCの機能を拡張する際に重要な役割を果たします。変更を加える際には、以下の手順に従います。
- protobufおよびdbus API定義のビルド
- 変更を行う前に、system_apiパッケージ内のprotobufおよびdbus API定義をビルドする必要があります。これにより、VMCとVM間の通信プロトコルが定義されます。
- 変更の実施
- 変更内容に応じて、chroot/systemレベルおよびboard/deviceレベルで変更を実施します。新しいAPIを追加したり、メッセージの署名を変更したりする場合は、それに応じた変更を行います。
- ビルドとデプロイ
- 変更が完了したら、crostini_clientパッケージをビルドし、変更をデプロイします。変更がシステム全体に反映されるようにするため、board/deviceレベルでも必要な作業を行います。
新しいコマンドの追加
[編集]VMCに新しいコマンドを追加する場合、以下の手順に従います。
- crosvm_controlの拡張
- 新しいコマンドに対応するAPIエントリーポイントをcrosvm_controlに追加します。これにより、VMCからのコマンドがcrosvmに正しく処理されるようになります。
- conciergeの変更
- conciergeのバインディングを変更し、新しいコマンドがcrosvm_controlに渡されるようにします。
- dbusプロトコルの拡張
- 新しいコマンドに対応するdbusのプロトコルをsystem_apiパッケージ内で拡張し、VMCとconciergeの間での通信を可能にします。
- デプロイとテスト
- 変更をデプロイし、新しいコマンドが正常に機能することを確認します。必要に応じて、テストスイートを実行して変更の正確性を確認します。
RPCフロー
[編集]VMCコマンドのリモートプロシージャコール(RPC)フローは以下のようになります。
- VMCコマンドの発行
- ユーザーがVMCコマンドを入力します。
- dbus RPCプロトコルの生成
- VMCは、dbus RPCプロトコルを生成し、それをconciergeに送信します。
- conciergeからcrosvmへの転送
- conciergeは、受信したRPCを適切な形式に変換し、crosvmに転送します。
- crosvmの処理
- crosvmは、受信したコマンドを処理し、VM内で必要な操作を実行します。
このようにして、VMCを介してユーザーが発行したコマンドが、VM内の処理に反映されるフローが確立されます。