之前,为了学习 Docker,自己造轮子使用 Shell 脚本实现了一个最小的 Docker,该工程的名字为 docker.sh,我放在了 Github上。仓库地址如下:

https://github.com/pandengyang/docker.sh.git

同时,我把自己的创作过程发表为文章《使用 Shell 脚本实现 Docker》,该文章广受好评,我的大部分粉丝都由该文章引来。

随着安全容器的出现,在精简系统虚拟机中运行容器越来越受到关注,激发了我对硬件虚拟化技术的兴趣。

我阅读了《系统虚拟化:原理与实现》,该书系统介绍了虚拟化的历史、分类以及各种虚拟化的原理,但是,整本书几乎全是理论,读完之后,给人的感觉是,都学会了,但又什么都不会。我也曾尝试阅读 KVM 源码,但是代码过于庞大,涉及的技术众多,根本无法理出头绪。

于是,我萌生了一个想法,硬件虚拟化技术分为 CPU 虚拟化、内存虚拟化、中断虚拟化、设备虚拟化等。我何不像学习 Docker 那样,自己写一个最小的Demo,用最少的代码去实践这些技术,通过造轮子的方式来学习呢。说干就干,从2020年下半年开始一直到2022年初,我查阅教材、阅读Intel开发者手册,终于,实现了一个最小的 Demo,我将其命名为桃花源,英文名为peach。peach实现了如下功能:

我将其开源放在了 Github 上,仓库地址如下:

https://github.com/pandengyang/peach.git

后续还将实现中断虚拟化、设备虚拟化等。像 docker.sh 一样,我也将创作过程在网上发表为《自己动手写虚拟机》系列文章。

虚拟化方面的基本知识(虚拟化技术太难)(1)

,