# ArceOS + AxVisor 虚拟化自学手册

这套手册面向希望独立完成一个真实虚拟化项目的学习者。默认教学平台为 **AArch64 + QEMU `virt`**，最终目标是在 AxVisor 上同时运行 Linux 与 RTOS 客体，并让 Linux 自动启动两个用户程序。

## 如何使用

建议按以下顺序阅读和执行：

1. [实验基线与环境](handbook/00_BASELINE.md)
2. [系统化理论教材](handbook/TEXTBOOK.md)
3. [源码阅读手册](handbook/SOURCE_READING.md)
4. [逐步实验手册](handbook/LAB_MANUAL.md)
5. [故障诊断手册](handbook/DEBUG_PLAYBOOK.md)
6. [考核与毕业验收](handbook/ASSESSMENT.md)

配套模板与示例：

- [每周学习记录模板](handbook/templates/WEEKLY_REPORT.md)
- [实验记录模板](handbook/templates/EXPERIMENT_RECORD.md)
- [源码阅读卡片](handbook/templates/SOURCE_CARD.md)
- [Linux App A 示例](handbook/assets/linux/app-a.c)
- [Linux App B 示例](handbook/assets/linux/app-b.c)
- [initramfs `/init` 示例](handbook/assets/linux/init)
- [多客体资源表示例](handbook/assets/resource-map.example.toml)
- [串口日志验收脚本](handbook/assets/check-serial-log.sh)

## 手册覆盖范围

| 部分 | 内容 | 完成标志 |
|---|---|---|
| 基础 | Rust `no_std`、QEMU、GDB、ARMv8-A | 能断点查看 EL2 寄存器 |
| ArceOS | 组件模型、启动、内存、任务、驱动 | 能修改并解释 ArceOS 应用 |
| AxVisor | VM、vCPU、Stage-2、Exit、vIRQ | 能追踪一台 VM 的生命周期 |
| Linux | Image、DTB、initramfs、init | 自动启动 App A 与 App B |
| RTOS | 入口、BSS、时钟、中断、调度器 | 两个周期任务稳定运行 |
| 多客体 | CPU/内存/IRQ/设备分区 | Linux + RTOS 并发且相互隔离 |
| 工程化 | 脚本、日志、故障注入、验收 | 干净环境下一键复现 |

## 学习纪律

- 所有实验必须保存 commit、命令、配置和完整日志。
- 每次只改变一个主要变量。
- 不以“看到了 shell”作为唯一成功标准；必须能解释启动路径和资源映射。
- 文档中的地址和函数名是教学示例，必须与当前 checkout 的源码和平台配置核对。
- 官方仓库首次拉取后立即记录 commit；不要长期在移动的分支头上学习。

## 最终作品

最终仓库应至少包含：

```text
hypervisor-capstone/
├── README.md
├── versions.lock
├── docs/
│   ├── architecture.md
│   ├── boot-flow.md
│   ├── source-map.md
│   └── troubleshooting.md
├── configs/
│   ├── linux.*
│   ├── rtos.*
│   └── resource-map.*
├── guests/
│   ├── linux/
│   │   ├── app-a/
│   │   ├── app-b/
│   │   └── initramfs/
│   └── rtos/
├── scripts/
│   ├── build-all.sh
│   ├── run.sh
│   └── smoke-test.sh
└── logs/
    └── accepted-run.log
```

当你能够在没有照抄步骤的情况下重新建立上述系统，并解释一次 VM Exit、一次 Stage-2 fault 和一次虚拟中断注入时，才算真正完成本课程。
