这一篇介绍官方的方法,也可以直接参考这里的文档: https://gitlab.arm.com/aemfvp-a/docs/aemfvp-a-docs/-/blob/AEMFVP-A-2025.07.02/user-guide.rst?ref_type=tags
该方法的缺点就是,获取源码和编译环境时对网络要求较高,国内用户一般很难一次成功,而且还要花费很多时间,鉴于此,我已经将获取的源码以及编译环境和运行环境都打包好了,不愿意折腾的,可以联系我获取
下面正文开始:
一、概述
Armv-A Base RevC AEM FVP(固定虚拟平台,Fixed Virtual Platform)是基础平台的升级版本,新增了对系统级虚拟化探索的支持。它是包含两个 AEM 集群的Architecture Envelope Model(AEM),每个集群最多可配置 4 个核心。
目前该平台提供两个可运行的堆栈,即aemfvp-a和aemfvp-a-rme,后续章节将详细介绍这两个堆栈的使用方法。
不过我们这里以及后续主要关注aemfvp-a-rme
二、支持的堆栈说明
该平台提供两个专用堆栈,分别用于不同的演示场景,二者的核心功能与架构参考如下:
|-----------------|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 堆栈名称 | 核心用途 | 架构详情参考链接 |
| AEMFVP-A 堆栈 | 演示基于 u-boot 和 uefi 的系统在 FVP 上的运行 | AEMFVP-A Architecture |
| AEMFVP-A-RME 堆栈 | 演示 ARM CCA(机密计算架构,Confidential Compute Architecture),提供多个用于验证 CCA 功能的用例 | AEMFVP-A-RME Architecture |
三、验证通过的构建环境
构建系统已在以下环境中验证通过,其中仅 Docker 容器为完全支持的环境:
-
内置的 Docker 容器
-
Ubuntu 24.04 LTS 操作系统(直接运行,非完全支持)
四、前置条件
在开始操作前,需确保满足以下硬件与软件条件:
-
硬件环境:x86_64 或 aarch64 架构的主机
-
磁盘空间:至少 50GB 空闲空间
-
软件安装:
-
已安装 Docker(安装指引见 Docker 标准安装页面)
-
已安装 Git
-
-
执行环境:所有命令需在 bash shell 中执行
五、Git 环境配置
首次使用前需配置 Git 的全局用户名与邮箱,执行以下命令:
git config --global user.name "<你的姓名>"
git config --global user.email "<你的邮箱@example.com>"
六、获取堆栈代码
参考堆栈通过 repo 工具及关联清单(manifest)获取构建所需的所有组件,具体步骤如下:
-
下载并配置 repo 工具 将 repo 工具下载到
/usr/bin目录并赋予执行权限:curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo
chmod a+x /usr/bin/repo -
创建并初始化工作区 先创建工作区文件夹(替换
<AEMFVP_A_WORKSPACE>为自定义工作区名称,如aemfvp-workspace),再初始化 repo 并同步代码:mkdir <AEMFVP_A_WORKSPACE>
cd <AEMFVP_A_WORKSPACE>
repo init
-u https://git.gitlab.arm.com/aemfvp-a/aemfvp-a-manifests.git
-m pinned-<PLATFORM>.xml
-b refs/tags/AEMFVP-A-2025.07.02
--depth=1
repo sync -c -j $(nproc) --force-sync --no-clone-bundle
说明:
<PLATFORM>需根据目标堆栈选择,aemfvp-a对应 AEMFVP-A 堆栈,aemfvp-a-rme对应 AEMFVP-A-RME 堆栈。
七、启用 FVP 网络功能
Armv-A Base RevC AEM FVP 支持虚拟以太网接口,需在启动 FVP 前配置主机的 TAP 接口,具体步骤如下:
7.1 安装 libvirt 相关工具
执行以下命令安装网络配置所需的依赖包(将自动创建 IP 为 192.168.122.1 的 virbr0 网络接口):
sudo apt install -y \
libvirt-daemon-system \
bridge-utils \
net-tools \
iproute2
-
验证
virbr0接口:执行ifconfig命令,若未找到virbr0,需重启 libvirt 守护进程:sudo systemctl restart libvirtd
7.2 创建 TAP 接口(tap0)
执行以下命令创建并配置 tap0 接口,用于 FVP 与主机的网络通信:
sudo ip tuntap add dev tap0 mode tap user $(whoami)
sudo ifconfig tap0 0.0.0.0 promisc up
sudo brctl addif virbr0 tap0
八、构建 Docker 构建与仿真环境
平台提供两个 Docker 容器:一个用于构建堆栈,另一个用于运行已构建的堆栈(基于 FVP)。构建容器的步骤如下:
-
进入容器脚本目录:
cd container-scripts/aemfvp-a
-
执行构建脚本创建 Docker 容器:
./container.sh build
九、构建堆栈
完成 Docker 环境构建后,执行以下命令启动构建容器并构建目标堆栈:
-
启动构建容器:
./run_build_docker.sh
-
运行构建脚本(替换
<PLATFORM>为目标堆栈:aemfvp-a或aemfvp-a-rme):./build-scripts/aemfvp-a/build-stack.sh -p <PLATFORM> all
十、运行测试用例
堆栈构建完成后,可在容器中直接启动 FVP 并运行测试用例,具体步骤如下:
10.1 配置 Docker 权限(可选)
若启动时提示 socket 访问权限不足,执行以下命令修改权限:
sudo chmod 777 /var/run/docker.sock
10.2 启动测试用例
执行 boot.sh 脚本启动测试用例,命令格式如下:
./model-scripts/aemfvp-a/boot.sh -p <PLATFORM> -b <TEST_CASE>
-
参数说明:
-
<PLATFORM>:目标堆栈名称,可选aemfvp-a或aemfvp-a-rme -
<TEST_CASE>:测试用例名称(每个堆栈的测试用例详情可参考「Test Cases AEMFVP-A」和「Test Cases AEMFVP-A-RME」文档)
-
10.3 基础 Shell 启动示例
若只需启动基础 Shell(无需复杂测试用例),可直接执行以下命令:
-
对于 AEMFVP-A 堆栈:
./model-scripts/aemfvp-a/boot.sh -p aemfvp-a -b uefi
-
对于 AEMFVP-A-RME 堆栈:
./model-scripts/aemfvp-a/boot.sh -p aemfvp-a-rme -b shell