Step 0: 环境准备 - equation314/RVM-Tutorial GitHub Wiki
0.1 开发环境
- 硬件:
- 具有 Intel CPU 的计算机
- 支持 VT-x (一般都支持),并在 BIOS 中已起用
- 软件:
0.2 代码组织结构
hypervisor/
: hypervisor 的代码。在本阶段建立好执行环境后,之后的阶段将逐步实现 guest OS 的加载与并运行、guest OS 内存管理、VM exit 处理等 hypervisor 的基本功能。rvm/
: 实现虚拟化基本功能的独立的模块。提供了 vCPU、嵌套页表等结构的抽象。guest/
: 在 guest 模式运行的软件。bios/
: 一个简易 BIOS。用于从 16 位实模式切换到 32 位 保护模式,并通过 multiboot 协议启动 guest OS。nimbos/
: 一个用 Rust 语言编写的 x86_64 实验操作系统 NimbOS。支持时钟中断、串口外设、调度、多线程用户程序等功能。
0.3 建立执行环境
本教程将实现一个 type-1 的 hypervisor,即 hypervisor 可以直接访问硬件,无需其他 OS 的介入。因此,为了让 hypervisor 自身能够管理硬件资源,和传统 OS 一样,我们需要执行一些通用的启动和初始化流程,包括:
- 基于 multiboot 协议的启动。
- 初始化处理器所需数据结构,如 x86 的 GDT、IDT。
- 初始化串口输出、Local APIC 时钟,设置中断与异常处理程序。
- 初始化内存分配器,包括内核堆分配器和物理页帧分配器。
这些功能已在 step0 实现。本教程将侧重 hypervisor 功能的实现,因此不对以上的 OS 基本功能进行过多介绍。