コンテンツにスキップ

ChromeOS/vmc

出典: フリー教科書『ウィキブックス(Wikibooks)』


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の機能を拡張する際に重要な役割を果たします。変更を加える際には、以下の手順に従います。

  1. protobufおよびdbus API定義のビルド
    変更を行う前に、system_apiパッケージ内のprotobufおよびdbus API定義をビルドする必要があります。これにより、VMCとVM間の通信プロトコルが定義されます。
  2. 変更の実施
    変更内容に応じて、chroot/systemレベルおよびboard/deviceレベルで変更を実施します。新しいAPIを追加したり、メッセージの署名を変更したりする場合は、それに応じた変更を行います。
  3. ビルドとデプロイ
    変更が完了したら、crostini_clientパッケージをビルドし、変更をデプロイします。変更がシステム全体に反映されるようにするため、board/deviceレベルでも必要な作業を行います。

新しいコマンドの追加

[編集]

VMCに新しいコマンドを追加する場合、以下の手順に従います。

  1. crosvm_controlの拡張
    新しいコマンドに対応するAPIエントリーポイントをcrosvm_controlに追加します。これにより、VMCからのコマンドがcrosvmに正しく処理されるようになります。
  2. conciergeの変更
    conciergeのバインディングを変更し、新しいコマンドがcrosvm_controlに渡されるようにします。
  3. dbusプロトコルの拡張
    新しいコマンドに対応するdbusのプロトコルをsystem_apiパッケージ内で拡張し、VMCとconciergeの間での通信を可能にします。
  4. デプロイとテスト
    変更をデプロイし、新しいコマンドが正常に機能することを確認します。必要に応じて、テストスイートを実行して変更の正確性を確認します。

RPCフロー

[編集]

VMCコマンドのリモートプロシージャコール(RPC)フローは以下のようになります。

  1. VMCコマンドの発行
    ユーザーがVMCコマンドを入力します。
  2. dbus RPCプロトコルの生成
    VMCは、dbus RPCプロトコルを生成し、それをconciergeに送信します。
  3. conciergeからcrosvmへの転送
    conciergeは、受信したRPCを適切な形式に変換し、crosvmに転送します。
  4. crosvmの処理
    crosvmは、受信したコマンドを処理し、VM内で必要な操作を実行します。

このようにして、VMCを介してユーザーが発行したコマンドが、VM内の処理に反映されるフローが確立されます。