@@ -47,17 +47,17 @@ mkdir -p tmp/{configs,images}
4747cargo xtask image ls
4848
4949# 下载 ArceOS 镜像
50- cargo xtask image download qemu_arceos_aarch64 --output-dir tmp/images
50+ cargo xtask image download qemu_aarch64_arceos --output-dir tmp/images
5151
5252# 下载 Linux 镜像
53- cargo xtask image download qemu_linux_aarch64 --output-dir tmp/images
53+ cargo xtask image download qemu_aarch64_linux --output-dir tmp/images
5454```
5555
5656AxVisor 所支持的客户机镜像的构建脚本和构建产物可以在 [ axvisor-guest] ( https://github.com/arceos-hypervisor/axvisor-guest ) 仓库中找到。
5757
5858### 准备开发板配置文件
5959
60- 开发板配置文件定义了 AxVisor 在特定硬件平台上的基本运行参数。对于 QEMU AArch64 环境,配置文件位于 ` configs/board/qemu-aarch64.toml ` ,我们直接使用这个配置文件,不需要改动。直接将开发板配置文件复制到 ` tmp/configs ` 目录即可。
60+ 开发板配置文件定义了 AxVisor 在特定硬件平台上的基本运行参数。对于 QEMU AArch64 环境,配置文件位于 [ ` configs/board/qemu-aarch64.toml ` ] ( configs/board/qemu-aarch64.toml ) ,我们直接使用这个配置文件,不需要改动。直接将开发板配置文件复制到 ` tmp/configs ` 目录即可。
6161
6262``` bash
6363# 复制开发板配置文件
@@ -80,19 +80,46 @@ cp configs/board/qemu-aarch64.toml tmp/configs/
8080
8181 ` ` ` bash
8282 # 修改 ArceOS 客户机配置
83- sed -i " s|kernel_path = \" path/arceos-aarch64-dyn-smp1.bin\" |kernel_path = \" ../images/qemu_arceos_aarch64 /qemu-aarch64\" |g" tmp/configs/arceos-aarch64-qemu-smp1.toml
83+ sed -i " s|kernel_path = \" path/arceos-aarch64-dyn-smp1.bin\" |kernel_path = \" ../images/qemu_aarch64_arceos /qemu-aarch64\" |g" tmp/configs/arceos-aarch64-qemu-smp1.toml
8484
8585 # 修改 Linux 客户机配置
86- sed -i " s|kernel_path = \" tmp/Image\" |kernel_path = \" ../images/qemu_linux_aarch64 /qemu-aarch64\" |g" tmp/configs/linux-aarch64-qemu-smp1.toml
86+ sed -i " s|kernel_path = \" tmp/Image\" |kernel_path = \" ../images/qemu_aarch64_linux /qemu-aarch64\" |g" tmp/configs/linux-aarch64-qemu-smp1.toml
8787 ` ` `
8888
89- # # 构建及启动
89+ # ## 准备 QEMU 配置文件
9090
91- 完成前期准备后,我们可以开始构建和启动 AxVisor。
91+ QEMU 配置文件定义了 QEMU 的启动参数,包括 CPU 类型、内存大小、设备配置等。我们需要将 QEMU 配置文件复制到工作目录,并根据实际情况修改 rootfs 路径。
92+
93+ 1. 复制 QEMU 配置文件:
94+ ` ` ` bash
95+ cp .github/workflows/qemu-aarch64.toml tmp/configs/qemu-aarch64-info.toml
96+ ` ` `
97+
98+ 2. 修改 QEMU 配置文件中的 rootfs 路径:
99+ ` ` ` bash
100+ # 获取 rootfs.img 的绝对路径
101+ ROOTFS_PATH=" $( pwd) /tmp/images/qemu_aarch64_linux/rootfs.img"
102+
103+ # 更新配置文件中的路径
104+ sed -i ' s|file=${workspaceFolder}/tmp/rootfs.img|file=' " $ROOTFS_PATH " ' |g' tmp/configs/qemu-aarch64-info.toml
105+
106+ # 验证修改
107+ grep " rootfs.img" tmp/configs/qemu-aarch64-info.toml
108+ ` ` `
109+
110+ ** 注意** :
111+ - 如果使用的客户机系统不需要 rootfs(如纯内存系统),可以从 QEMU 配置文件中删除相关的 ` -drive` 和 ` -device virtio-blk` 等配置项:
92112
93- # ## 生成配置
113+ ` ` ` bash
114+ # 移除 virtio-blk 设备配置
115+ sed -i ' /"virtio-blk-device,drive=disk0"/d' tmp/configs/qemu-aarch64-info.toml
116+ sed -i ' /id=disk0,if=none,format=raw/d' tmp/configs/qemu-aarch64-info.toml
117+ sed -i ' s/"root=\/dev\/vda rw init=\/init",//g' tmp/configs/qemu-aarch64-info.toml
118+ ` ` `
94119
95- 使用 ` cargo xtask defconfig qemu-aarch64` 命令设置 QEMU AArch64 为默认构建配置。实际上,这个命令会将 ` configs/board/qemu-aarch64.toml` 复制为 ` .build.toml` ,作为默认的构建配置。
120+ # # 构建及启动
121+
122+ 完成前期准备后,我们可以开始构建和启动 AxVisor。
96123
97124# ## 编译及启动
98125
@@ -103,7 +130,7 @@ AxVisor 构建系统集成了 QEMU 启动脚本,使用 `cargo xtask qemu` 命
103130 ` ` ` bash
104131 cargo xtask qemu \
105132 --build-config tmp/configs/qemu-aarch64.toml \
106- --qemu-config .github/workflows /qemu-aarch64.toml \
133+ --qemu-config tmp/configs /qemu-aarch64-info .toml \
107134 --vmconfigs tmp/configs/arceos-aarch64-qemu-smp1.toml
108135 ` ` `
109136
@@ -112,7 +139,7 @@ AxVisor 构建系统集成了 QEMU 启动脚本,使用 `cargo xtask qemu` 命
112139 ` ` ` bash
113140 cargo xtask qemu \
114141 --build-config tmp/configs/qemu-aarch64.toml \
115- --qemu-config .github/workflows /qemu-aarch64.toml \
142+ --qemu-config tmp/configs /qemu-aarch64-info .toml \
116143 --vmconfigs tmp/configs/linux-aarch64-qemu-smp1.toml
117144 ` ` `
118145
@@ -121,8 +148,9 @@ AxVisor 构建系统集成了 QEMU 启动脚本,使用 `cargo xtask qemu` 命
121148 ` ` ` bash
122149 cargo xtask qemu \
123150 --build-config tmp/configs/qemu-aarch64.toml \
124- --qemu-config .github/workflows/qemu-aarch64.toml \
125- --vmconfigs tmp/configs/arceos-aarch64-qemu-smp1.toml,tmp/configs/linux-aarch64-qemu-smp1.toml
151+ --qemu-config tmp/configs/qemu-aarch64-info.toml \
152+ --vmconfigs tmp/configs/arceos-aarch64-qemu-smp1.toml
153+ --vmconfigs tmp/configs/linux-aarch64-qemu-smp1.toml
126154 ` ` `
127155
128156# # 常见问题
@@ -131,26 +159,26 @@ AxVisor 构建系统集成了 QEMU 启动脚本,使用 `cargo xtask qemu` 命
131159
132160# ## KVM 不可用
133161
134- ** 问题现象** :
135- ```
136- warning: KVM not available, using TCG
137- ```
162+ - ** 问题现象** :
163+ ```
164+ warning: KVM not available, using TCG
165+ ```
138166
139- **原因分析**:KVM(Kernel-based Virtual Machine)是 Linux 内核的虚拟化模块,可以显著提高虚拟化性能。如果 KVM 不可用,QEMU 会回退到 TCG(Tiny Code Generator),这是一个纯软件模拟器,性能较差。
167+ - ** 原因分析** :KVM(Kernel-based Virtual Machine)是 Linux 内核的虚拟化模块,可以显著提高虚拟化性能。如果 KVM 不可用,QEMU 会回退到 TCG(Tiny Code Generator),这是一个纯软件模拟器,性能较差。
140168
141- **解决方案**:
142- ```bash
143- # 检查 KVM 模块是否已加载
144- lsmod | grep kvm
169+ - ** 解决方案** :
170+ ` ` ` bash
171+ # 检查 KVM 模块是否已加载
172+ lsmod | grep kvm
145173
146- # 加载 KVM 模块
147- sudo modprobe kvm-arm
174+ # 加载 KVM 模块
175+ sudo modprobe kvm-arm
148176
149- # 检查 CPU 是否支持硬件虚拟化
150- egrep -c '(vmx|svm)' /proc/cpuinfo
177+ # 检查 CPU 是否支持硬件虚拟化
178+ egrep -c ' (vmx|svm)' /proc/cpuinfo
151179
152- # 如果输出大于 0,表示 CPU 支持硬件虚拟化
153- ```
180+ # 如果输出大于 0,表示 CPU 支持硬件虚拟化
181+ ` ` `
154182
155183# ## 内存不足
156184
@@ -219,3 +247,19 @@ egrep -c '(vmx|svm)' /proc/cpuinfo
219247 cargo xtask build
220248 cargo xtask qemu --build-config tmp/configs/qemu-aarch64.toml --qemu-config .github/workflows/qemu-aarch64.toml --vmconfigs tmp/configs/客户机配置文件.toml
221249 ` ` `
250+
251+ # ## QEMU 找不到 rootfs.img 文件
252+
253+ - ** 问题现象** :
254+ ```
255+ qemu-system-aarch64: -drive id=disk0,if=none,format=raw,file=.../tmp/rootfs.img: Could not open ' ...tmp/rootfs.img' : No such file or directory
256+ ```
257+
258+ - ** 原因分析** :rootfs.img 文件不存在是由于配置路径错误。
259+
260+ - ** 解决方案** :
261+ ` ` ` bash
262+
263+ ` ` `
264+
265+ ** 注意** : 如果使用的客户机系统不需要 rootfs(如纯内存系统),可以从 QEMU 配置文件中删除相关的 ` -drive` 和 ` -device virtio-blk` 配置项。
0 commit comments