# 보조 가상 머신 만들기

이 섹션에서는 Qualcomm Linux 빌드 시스템을 사용하여 가상 머신(VM) 이미지를 생성하는 단계를 제공합니다.

Qualcomm Linux에서 가상 머신을 사용하려면 이미지 레시피에 가상 머신 관리자(VMM) 도구가 포함되어 있는지 확인하고 게스트 VM 커널 및 루트 파일 시스템 이미지를 생성하세요.

다음 절차는 다음 작업에 대한 단계별 가이드를 제공합니다.

> 
> 
> - `crosvm` 및 `qemu` 같은 필수 VMM 도구를 Qualcomm Linux에 이미 정의된 이미지 레시피에 포함합니다.
> - 명령어를 사용하여 게스트 VM 커널 및 루트 파일 시스템 이미지를 빌드합니다.
> - 명령어를 사용하여 게스트 VM을 시작합니다.

## 개발 컴퓨터 설정

1. 호스트 개발 컴퓨터에 clang을 설치합니다.

    호스트 개발 컴퓨터에 clang을 설치하려면 다음 명령어를 실행하세요.

sudo apt install clang-11
        Copy to clipboard
2. Qualcomm Linux 환경에서 meta-rust 계층을 활성화합니다.

    meta-rust 계층은 crosvm을 컴파일하는 Rust 컴파일러(rustc) 및 패키지 관리자(cargo)를 제공하며, Rust 언어로 구현됩니다.

    `meta-qcom-distro/conf/bblayers.conf` 파일의 EXTRALAYERS에 meta-rust 계층을 추가합니다.

    `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

## Qualcomm Linux 이미지에 crosvm 도구 추가

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

## 이미지 레시피 및 게스트 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. 다음 명령어에서 게스트 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
영구 파티션](https://docs.qualcomm.com/bundle/publicresource/80-70020-27KO/topics/persist_partition.md) [Next Topic
Qualcomm Linux용 OTA 업데이트](https://docs.qualcomm.com/bundle/publicresource/80-70020-27KO/topics/ota_update_for_qualcomm_linux.md)