# セカンダリ仮想マシンを作成する

このセクションでは、Qualcomm Linux ビルドシステムを使用して仮想マシン（VM）イメージを作成する手順を説明します。

Qualcomm Linuxで仮想マシンを使用するには、仮想マシン・マネージャ（VMM）ツールがイメージレシピに含まれていること、さらにゲストVMカーネルイメージとルート・ファイル・システム・イメージが生成されていることを確認します。

後述の手順は、以下に関する順を追ったガイドです。

> 
> 
> - Qualcomm Linux ですでに定義されているイメージレシピに、VMM に不可欠なツール（`crosvm` と `qemu` など）を含める。
> - コマンドを使用して、ゲストVMカーネルとルート・ファイル・システム・イメージをビルドする。
> - コマンドを使用して、ゲストVMを起動する。

## 開発マシンをセットアップする

1. ホスト開発マシンにclangをインストールします。

    ホスト開発マシンにclangをインストールするには、以下のコマンドを実行します。

sudo apt install clang-11
        Copy to clipboard
2. Qualcomm Linux 環境で meta-rust レイヤーを有効にします。

    meta-rustレイヤーは、Rust言語で実装されたcrosvmをコンパイルするために、Rustコンパイラ（rustc）とパッケージマネージャ（cargo）を提供します。

    meta-rustレイヤーを `meta-qcom-distro/conf/bblayers.conf` ファイルのEXTRALAYERSに追加します。

    `conf/bblayers.conf` ファイルを開き、以下のようにレイヤーのパスを `EXTRALAYERS` 変数に追加します。

EXTRALAYERS ?= " \
        ${WORKSPACE}/layers/meta-rust \
        "
        Copy to clipboard
3. meta-rustのRustをビルドに含めます。

    以下の内容で `meta-qcom-distro/conf/distro/include/rust_version.inc` ファイルを作成します。

# include this in your distribution to easily switch between versions
        # just by changing RUST_VERSION variable
        
        RUST_VERSION ?= "1.73.0"
        
        PREFERRED_VERSION_cargo ?= "${RUST_VERSION}"
        PREFERRED_VERSION_cargo-native ?= "${RUST_VERSION}"
        PREFERRED_VERSION_libstd-rs ?= "${RUST_VERSION}"
        PREFERRED_VERSION_rust ?= "${RUST_VERSION}"
        PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUST_VERSION}"
        PREFERRED_VERSION_rust-llvm ?= "${RUST_VERSION}"
        PREFERRED_VERSION_rust-llvm-native ?= "${RUST_VERSION}"
        PREFERRED_VERSION_rust-native ?= "${RUST_VERSION}"
        Copy to clipboard

    `meta-qcom-distro/conf/distro/qcom-wayland.conf` ファイルで以下のように `rust_version.inc` ファイルをインクルードします。

require conf/distro/include/rust_version.inc
        Copy to clipboard

## Qualcomm Linux イメージに crosvm ツールを追加する

Qualcomm Linux がビルドするイメージに crosvm ツールを追加するには、`meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom-vm-host.bb` というパッケージ・グループ・レシピ・ファイルを編集して、以下のコードブロックを追加します。

RDEPENDS:packagegroup-qcom-vm-host:append:qcom-custom-bsp = "\
       crosvm \
       "
    Copy to clipboard

## イメージレシピとゲスト VM イメージをビルドする

1. 既存の Qualcomm Linux イメージレシピをビルドするには、`bitbake <image>` コマンドを実行します。これにより、生成されるイメージに crosvm ツールが含まれます。例えば、`qcom-console-image` については、以下のコマンドを実行します。

bitbake qcom-console-image
        Copy to clipboard
2. ゲストVMイメージをビルドするには、以下のコマンドを実行します。

bitbake multiconfig:qcom-guestvm:qcom-guestvm-image
        Copy to clipboard

### ゲスト VM のアーティファクト

ゲストVMイメージが正常に作成されると、以下のアーティファクトが見つかります。

> 
> 
> 1. ゲストVMビルドコマンドはゲストVMイメージ用に `tmp-qcom-guestvm-glibc` という名前のフォルダを作成します。
> 2. ゲストVMカーネルとrootfsのイメージは `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>` ディレクトリに生成されます。
> 3. `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>/Image` ファイルはゲストVMカーネルのイメージです。
> 4. `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>/qcom-guestvm-image-<machine-name>.ext4` ファイルはゲストVMルート・ファイル・システムのイメージです。
> 5. `bitbake <image>` コマンドで作成したイメージをフラッシュし、デバイスを起動した後、ゲストVMカーネルとルート・ファイル・システムのイメージをデバイスにコピーします（例：`/var/gunyah` ディレクトリ）。

## ゲスト VM を起動する

1. ゲストVMを起動するには、crosvm VMMツールを使用します。
2. 以下のコマンドでは、Guest VMカーネルとルート・ファイル・システムのイメージはデバイスの `/var/gunyah` ディレクトリにあります。

crosvm --log-level=debug --no-syslog run --disable-sandbox --hypervisor gunyah --protected-vm-without-firmware \
        --serial=type=stdout,hardware=virtio-console,console,stdin,num=1 --serial=type=stdout,hardware=serial,earlycon,num=1 \
        --root /var/gunyah/qcom-guestvm-image-qcs9100-ride-sx.ext4 --no-balloon --no-rng --params \
        "earlyprintk=serial panic=0" /var/gunyah/Image
        Copy to clipboard

    - `--root /var/gunyah/qcom-guestvm-image-qcs9100-ride-sx.ext4` オプションは、ゲストVMのルート・ファイル・システムへのパスを指定します。
    - 最後のパラメーターである `/var/gunyah/Image` は `crosvm` ツールに渡され、カーネル・イメージへのパスを指定します。

詳細については、[仮想化を有効にする](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-3/virtualization.html) を参照してください。

Last Published: Dec 23, 2025

[Previous Topic
Persistパーティション](https://docs.qualcomm.com/bundle/publicresource/80-70020-27JA/topics/persist_partition.md) [Next Topic
Qualcomm Linux用OTAアップデート](https://docs.qualcomm.com/bundle/publicresource/80-70020-27JA/topics/ota_update_for_qualcomm_linux.md)