Skip to content

Commit e131b80

Browse files
committed
update docs
1 parent 683e241 commit e131b80

File tree

2 files changed

+96
-68
lines changed

2 files changed

+96
-68
lines changed

docs/quickstart/qemu/aarch64.md

Lines changed: 72 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,17 @@ mkdir -p tmp/{configs,images}
4747
cargo 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

5656
AxVisor 所支持的客户机镜像的构建脚本和构建产物可以在 [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` 配置项。

docs/quickstart/qemu/x86_64.md

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ sidebar_label: "x86_64"
1212
### 硬件要求
1313

1414
- **主机系统**:支持 KVM 的 Linux 主机系统(可选,用于加速虚拟化性能)
15-
- **内存**:至少 8GB 可用内存,以确保 AxVisor 和客户机操作系统能够流畅运行
15+
- **内存**:至少 128M 可用内存,以确保 AxVisor 和客户机操作系统能够流畅运行
1616
- **存储空间**:至少 2GB 可用磁盘空间,用于存储源代码、构建产物和客户机镜像
1717

1818
### 软件要求
@@ -46,11 +46,8 @@ mkdir -p tmp/{configs,images}
4646
# 列出所有可用镜像
4747
cargo xtask image ls
4848

49-
# 下载 ArceOS 镜像
50-
cargo xtask image download qemu_arceos_x86_64 --output-dir tmp/images
51-
52-
# 下载 Linux 镜像
53-
cargo xtask image download qemu_linux_x86_64 --output-dir tmp/images
49+
# 下载 NimbOS 镜像
50+
cargo xtask image download qemu_x86_64_nimbos --output-dir tmp/images
5451
```
5552

5653
AxVisor 所支持的客户机镜像的构建脚本和构建产物可以在 [axvisor-guest](https://github.com/arceos-hypervisor/axvisor-guest) 仓库中找到。
@@ -66,63 +63,50 @@ cp configs/board/qemu-x86_64.toml tmp/configs/
6663

6764
### 准备客户机配置文件
6865

69-
客户机配置文件定义了每个虚拟机的具体参数,包括内存布局、CPU 分配和设备访问等,相关客户机配置文件全部位于 `configs/vms` 目录下。我们需要将适用于 QEMU x86_64 的客户机配置文件复制到 `tmp/configs` 目录,并修改其中的 `kernel_path` 参数
66+
客户机配置文件定义了每个虚拟机的具体参数,包括内存布局、CPU 分配和设备访问等,相关客户机配置文件全部位于 `configs/vms` 目录下。我们需要将适用于 QEMU x86_64 的客户机配置文件复制到 `tmp/configs` 目录。
7067

7168
1. 复制客户机配置文件:
7269

7370
```bash
74-
cp configs/vms/arceos-x86_64-qemu-smp1.toml tmp/configs/
75-
76-
cp configs/vms/linux-x86_64-qemu-smp1.toml tmp/configs/
71+
cp configs/vms/nimbos-x86_64-qemu-smp1.toml tmp/configs/
7772
```
7873

79-
2. 修改客户机配置文件中的 `kernel_path`,使其指向我们下载的客户机镜像:
74+
### 准备 QEMU 配置文件
75+
76+
QEMU 配置文件定义了 QEMU 的启动参数,包括 CPU 类型、内存大小、设备配置等。我们需要将 QEMU 配置文件复制到工作目录,并根据实际情况修改 rootfs 路径。
8077

78+
1. 复制 QEMU 配置文件:
8179
```bash
82-
# 修改 ArceOS 客户机配置
83-
sed -i "s|kernel_path = \"path/arceos-x86_64-dyn-smp1.bin\"|kernel_path = \"../images/qemu_arceos_x86_64/qemu-x86_64\"|g" tmp/configs/arceos-x86_64-qemu-smp1.toml
80+
cp .github/workflows/qemu-x86_64.toml tmp/configs/qemu-x86_64-info.toml
81+
```
8482

85-
# 修改 Linux 客户机配置
86-
sed -i "s|kernel_path = \"tmp/Image\"|kernel_path = \"../images/qemu_linux_x86_64/qemu-x86_64\"|g" tmp/configs/linux-x86_64-qemu-smp1.toml
83+
2. 修改 QEMU 配置文件中的 rootfs 路径:
84+
```bash
85+
# 获取 rootfs.img 的绝对路径
86+
ROOTFS_PATH="$(pwd)/tmp/images/qemu_x86_64_nimbos/rootfs.img"
87+
88+
# 更新配置文件中的路径
89+
sed -i 's|file=${workspaceFolder}/tmp/rootfs.img|file='"$ROOTFS_PATH"'|g' tmp/configs/qemu-x86_64-info.toml
90+
91+
# 验证修改
92+
grep "rootfs.img" tmp/configs/qemu-x86_64-info.toml
8793
```
8894

8995
## 构建及启动
9096

9197
完成前期准备后,我们可以开始构建和启动 AxVisor。
9298

93-
### 生成配置
94-
95-
使用 `cargo xtask defconfig qemu-x86_64` 命令设置 QEMU x86_64 为默认构建配置。实际上,这个命令会将 `configs/board/qemu-x86_64.toml` 复制为 `.build.toml`,作为默认的构建配置。
96-
9799
### 编译及启动
98100

99101
AxVisor 构建系统集成了 QEMU 启动脚本,使用 `cargo xtask qemu` 命令即可启动 QEMU 虚拟机。该命令会自动先编译 AxVisor 及其所有依赖项,生成适合在 QEMU x86_64 环境中运行的二进制文件然后在 QEMU 中启动。
100102

101-
1. 启动单个 ArceOS 客户机
102-
103-
```bash
104-
cargo xtask qemu \
105-
--build-config tmp/configs/qemu-x86_64.toml \
106-
--qemu-config .github/workflows/qemu-x86_64.toml \
107-
--vmconfigs tmp/configs/arceos-x86_64-qemu-smp1.toml
108-
```
109-
110-
2. 启动单个 Linux 客户机
111-
112-
```bash
113-
cargo xtask qemu \
114-
--build-config tmp/configs/qemu-x86_64.toml \
115-
--qemu-config .github/workflows/qemu-x86_64.toml \
116-
--vmconfigs tmp/configs/linux-x86_64-qemu-smp1.toml
117-
```
118-
119-
3. 启动多个客户机
103+
启动单个 NimbOS 客户机
120104

121105
```bash
122106
cargo xtask qemu \
123107
--build-config tmp/configs/qemu-x86_64.toml \
124-
--qemu-config .github/workflows/qemu-x86_64.toml \
125-
--vmconfigs tmp/configs/arceos-x86_64-qemu-smp1.toml,tmp/configs/linux-x86_64-qemu-smp1.toml
108+
--qemu-config tmp/configs/qemu-x86_64-info.toml \
109+
--vmconfigs tmp/configs/nimbos-x86_64-qemu-smp1.toml
126110
```
127111

128112
## 常见问题

0 commit comments

Comments
 (0)