---
title: 基于migcvm运行migcvm-agent
description: "1. 在源端和对端服务器上，为migvm机密虚拟机的QEMU XML配置文件添加migvm-cap=migvm参数，以启用migvm机密迁移功能，并指定Vsock和Cid用于通信。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/tee/cVMcont/kunpengtee_16_0011.html
sourcePath: /source/zh/kunpengcctrustzone/tee/cVMcont/kunpengtee_16_0011.html
indexId: 29c0cdcae9d949380cd05cd6960c6f1f62a1623fefb5804cfdf5c1a00a44946e65
---
# 基于migcvm运行migcvm-agent

1. 在源端和对端服务器上，为migvm机密虚拟机的QEMU XML配置文件添加migvm-cap=migvm参数，以启用migvm机密迁移功能，并指定Vsock和Cid用于通信。

```
<qemu:commandline>
<qemu:arg value='-object'/>
<qemu:arg value='tmm-guest,id=tmm0,sve-vector-length=128,num-pmu-counters=1,
migvm-cap=migvm
'/>
</qemu:commandline>
```

```
<vsock model='virtio'>
<cid auto='no' address='8'/>
</vsock>
```


  其中，cid address参数可由云管平台任意分配，因Host默认Cid为2，为了不让虚拟机的Cid与系统冲突所以平台分配的Cid都会大于2。

2. 配置完成后，参考配置机密虚拟机启动migvm虚拟机。
3. 下载virtCCA-SDK，安装到migvm，获取源端服务器RIM值和对端服务器RIM值，可参考使能远程证明gen_rim_ref工具，获得该RIM值。
  a. 拉取组织仓master分支代码。

```
git clone https://atomgit.com/openeuler/virtCCA_sdk.git --depth 10
```


  b. 参考    Gitcode(https://gitcode.com/openeuler/virtCCA_sdk/blob/master/migcvm-agent/README.md)
编译和安装依赖（环境已有QCBOR，t_cose，libcbor则可以忽略）。

```
cd migcvm-agent/
git clone https://github.com/inclavare-containers/rats-tls.git
cd rats-tls
git reset --hard 40f7b78403d75d13b1a372c769b2600f62b02692
git apply ../../attestation/rats-tls/*.patch
bash build.sh -s -r -c -v gcc
cp -rf output/lib/rats-tls /usr/lib/
cp -rfL output/lib/rats-tls/librats_tls.so.0 /lib64/
cd -
bash ./build.sh
#将编译产物migcvm-agent放入mig-cvm
cp build/migcvm-agent   ${CVM_PATH}/home/
```


  c. 在migcvm-agent同一目录上部署证书，具体操作步骤请参见    使能远程证明
。
4. 迁移前进行远程证明，需保证源端和对端RIM值一致。

  a. 进入源端虚拟机，校验对端服务器RIM值。

```
virsh console migvm-src
cd ${CVM_PATH}/home
./migcvm-agent  -c <远端migcvm侦听ip>
```


  b. 进入对端服务器migvm虚拟机，校验源端服务器RIM值。

```
virsh console migvm-dst
cd ${CVM_PATH}/home
./migcvm-agent  -c <远端migcvm侦听ip>
```
