# 建立輔助虛擬機器

本節提供使用 Qualcomm Linux 建置系統建立虛擬機器 (VM) 映像的步驟。

若要搭配 Qualcomm Linux 使用虛擬機器，請確保影像配方包括虛擬機器管理程式 (VMM) 工具，並產生 Guest VM 核心及root檔案系統影像檔。

以下程序提供了以下項目的逐步指南：

> 
> 
> - 將 `crosvm` 、 `qemu` 等基本 VMM 工具納入已在 Qualcomm Linux 中定義的映像配方中。
> - 使用命令來建置Guest VM核心和 root 檔案系統影像。
> - 使用命令來啟動Guest VM。

## 設定開發機器

1. 在主機開發機器上安裝 clang。

    要在主機開發機器上安裝 clang，請執行以下命令：

sudo apt install clang-11
        Copy to clipboard
2. 啟用 Qualcomm Linux 環境中的 meta-rust 層。

    meta-rust 層提供 Rust 編譯器 (rustc) 和套件管理工具 (cargo)，用於編譯以 Rust 語言實作的 crosvm。

    在 `meta-qcom-distro/conf/bblayers.conf` 文件中將meta-rust層添加到 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

    將 `rust_version.inc` 檔案包含在 `meta-qcom-distro/conf/distro/qcom-wayland.conf` 檔案中，如下所示:

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

## 將 crosvm 工具新增至 Qualcomm Linux 映像中

若要將 crosvm 工具新增至 Qualcomm Linux 建置的映像中，請編輯 `meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom-vm-host.bb` 套件群組配方檔案，並新增以下程式碼區塊：

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

## 建置映像配方和Guest VM 映像

1. 若要建置現有的 Qualcomm Linux 映像配方，請執行 `bitbake <image>` 命令。這會將 crosvm 工具納入產生的映像中。例如，對於 `qcom-console-image`，執行以下命令：

bitbake qcom-console-image
        Copy to clipboard
2. 要建立Guest VM 映像，請執行以下命令：

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

### Guest VM 工件

在Guest VM 影像成功建立後，您可以找到以下工件：

> 
> 
> 1. Guest VM 構建命令為 Guest VM 映像創建一個名為 `tmp-qcom-guestvm-glibc` 的資料夾。
> 2. Guest VM 核心和 rootfs 映像生成在 `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>` 目錄中。
> 3. `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>/Image` 檔案是 Guest VM 核心映像。
> 4. `tmp-qcom-guestvm-glibc/deploy/images/<machine-name>/qcom-guestvm-image-<machine-name>.ext4` 檔案是 Guest VM root 檔案系統映像。
> 5. 在使用 `bitbake <image>` 命令創建映像並啟動裝置後，將 Guest VM 核心和 root 檔案系統影像複製到裝置中，例如，放到 `/var/gunyah` 目錄下。

## 啟動Guest VM

1. 要啟動Guest VM，使用 crosvm 虛擬機器管理器工具。
2. 在以下命令中，Guest VM 的核心和 root 檔案系統映像來自裝置上的 `/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` 選項指定了 Guest VM root 檔案系統的路徑。
    - 最後一個參數 `/var/gunyah/Image` 傳遞給 `crosvm` 工具，用來指定核心映像的路徑。

如需更多資訊，請參閱 [啟用虛擬化](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-3/virtualization.html)。

Last Published: Dec 23, 2025

[Previous Topic
永久分割磁碟](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/persist_partition.md) [Next Topic
Qualcomm Linux 的 OTA 更新](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/ota_update_for_qualcomm_linux.md)