Minos - Type 1 Hypervisor for ARMv8-A
笔者今天给大家介绍一款开源的轻量级的Type-1 Hypervisor,项目地址:
https://github.com/minos-project/minos-hypervisor
Minos是一款轻量级的面向移动及嵌入式系统的开源Type 1 Hypervisor, 直接运行于裸机环境。Minos实现了一套完整的虚拟化框架,可以在同一硬件平台上同时运行多个不同操作系统的VM(Linux or RTOS). Minos提供了包括CPU虚拟化; 中断虚拟化; 内存虚拟化; Timer虚拟化; 以及一些常用外设虚拟化的支持。
Minos提供一个运行于VM0上的应用程序"mvm"来支持Guest VM的管理。同时mvm提供基于virtio的半虚拟化解决方案, 支持virtio-console, virtio-blk,virtio-net等设备,当前已经同时支持64位和32位的guest VM。
Minos适用于移动及嵌入式平台,目前只支持ARMv8-A架构。硬件上支持Marvell的Esspressobin开发板,且理论上ARMv8-A + GICV3或者GICV2组合的硬件平台都可以被支持。软件调试平台支持ARM官方的Fix Virtual Platform (简称FVP), 开发者可以用ARM DS5工具来进行仿真和调试。
Download Source Code And Tools for Minos
-
创建工作目录
# mkdir ~/minos-workspace # cd ~/minos-workspace
-
安装gcc交叉编译工具
# wget https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz # tar xjf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz # sudo mv gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu /opt # echo "export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH" >> ~/.bashrc # source ~/.bashrc
-
安装abootimg工具
# sudo apt-get install abootimg
abootimg 工具用来制作Linux VM的bootimge,mvm使用此格式image来加载linux内核,ramdisk和dtb文件
-
安装device tree代码编译工具
# sudo apt-get install device-tree-compiler
-
下载Minos sample
# git clone https://github.com/minos-project/minos-samples.git
minos-sample提供了Guest VM的dts/dtb文件,以及制作好的Guest VM boot.img文件
-
下载Minos hypervisor 源码
# git clone https://github.com/minos-project/minos-hypervisor.git
-
下载Linux Kernel 源码
# git clone https://github.com/minos-project/linux-marvell.git # cd linux-marvell # git checkout -b minos origin/minos
默认下载的是添加了Minos驱动的Marvell平台的Linux Kernel, 如果用的是别的硬件平台,只需要添加Minos驱动就行,下面命令可以获取Minos驱动以及必要的Kernel Patch
# git clone https://github.com/minos-project/minos-linux-driver.git