基本概念
Jailhouse, a Linux-based partitioning hypervisor
jailhouse是一个用于嵌入式的系统虚拟化工具,由德国西门子公司于2013年11月开发,并以GPLv2 协议开源。到 2019 年更新到 0.12 版,之后就再没更新过,计划的相关文档也一直没有发布。
jaihouse是一种基于hyperisor的虚拟化技术,它将一个物理处理器分割成多个独立的虚拟处理器,每个虚拟处理器都可以运行一个独立的操作系统。在jaihouse中,每个虚拟处理器都有自己的内存空间和V0设备,它们之间通过IPC(linter-Process Communication)进行通信。jaihouse还提供了安全机制,防止虚拟处理器越界访问内存、防止虚拟处理器之间的于扰等。
Jailhouse是什
Jailhouse是一个开源的虚拟化解决方案,专门用于嵌入式系统中的安全隔离。它提供了一种轻量级的虚拟化技术,可以将多个操作系统或任务运行在同一硬件平台上,实现硬件资源的隔离和保护。
Jailhouse的设计目标是提供一个可靠、高效的虚拟化环境,适用于嵌入式系统中对安全性和实时性要求较高的场景。它采用基于硬件的虚拟化技术,通过划分物理资源和提供严格的隔离机制,确保不同的操作系统或任务之间相互独立运行,互不干扰。
Jailhouse的特点包括:
- 轻量级:Jailhouse本身非常小巧,只提供了必要的功能,避免了不必要的性能开销。
- 实时性:Jailhouse在设计上考虑了实时性需求,可以满足实时任务对时间敏感的要求。
- 安全性:Jailhouse提供了严格的资源隔离机制,确保不同的虚拟机之间无法相互干扰。
- 可扩展性:Jailhouse支持多核处理器和多个物理设备的虚拟化,可以满足不同规模的系统需求。
Jailhouse如何实现资源隔离和保护?
Jailhouse通过将系统划分为多个称为cell的虚拟机来实现资源隔离和保护。每个cell都是一个独立的执行环境,拥有自己的操作系统和应用程序。
Jailhouse实现资源隔离和保护的主要方式包括以下几个方面:
● 硬件分区:Jailhouse使用硬件支持的虚拟化技术,如Intel VT-x和ARM Virtualization Extensions,将物理硬件资源划分为多个cell。每个cell被分配一组专用的硬件资源,如处理器核心、内存、设备等。这样可以确保每个cell之间的资源互相隔离,防止彼此干扰。
● 严格的安全边界:Jailhouse通过严格限制cell之间的通信和访问权限来保护资源。每个cell只能访问其分配的硬件资源,无法直接访问其他cell的资源。这种安全边界可以防止恶意或错误行为对其他cell造成影响。
● 虚拟设备模拟:Jailhouse提供了一套虚拟设备模拟机制,使得每个cell可以访问和使用虚拟化的设备。这些设备可以是通用的,如串口、网络接口等,也可以是特定的,如GPIO控制器。通过虚拟设备模拟,Jailhouse实现了对设备资源的隔离和共享。
● 安全监控:Jailhouse内置了一个安全监控程序,负责管理和监控cell的运行。安全监控程序负责分配和释放硬件资源,确保cell之间的隔离和安全。它还提供了一套API,允许用户通过命令行或API接口管理和配置cell。
代码地址:
https://github.com/siemens/jailhouse
https://github.com/siemens/jailhouse-images
特点分析:
● 必须基于多核处理器上,每个虚拟系统至少独占一个 CPU 核,宿主 Linux 至少占一个 CPU 核。
● 基于 Linux 操作系统,宿主操作系统一定是 Linux。
● 宿主系统用来初始化并办理硬件,启动和管理个虚拟机系统。
● 内存、CPU 及其他外设硬件都是基于静态分区的。
● 基于硬件静态分区,每个硬件分区为一个 cell
● 每个分区直接访问自己的硬件分区,而不是通过虚拟化。
● 不需要 VMM 提供任务调度功能,完全由客户系统自己在自己的 CPU 上调度。
● 物理硬件资源无需在客户机之间共享
● 非 root cells 可以被动态创建、销毁或重新启动。root cell 需要一直运行。
● 需要硬件虚拟化支持。涉及四种主要架构:具有虚拟化扩展(VE)的 ARMv7、ARMv8、支持 VT-x 和 VT-d 的 Intel 64 位 x86,以及支持 SVM 的 amd64。
● cell 之间的通信通过共享内存区域和信号接口实现。
● 运行在 cell 内的裸机应用程序或操作系统称为 inmate
● Jailhouse 的第一个 cell 叫 Root Cell,这是一个特权Cell,内部运行的是一个 Linux 系统,依赖该 Linux 接管系统硬件资源,以及进行硬件的初始化和启动。 除了 Root Cell 的其它 cell 统一称为 Non-root Cell,从 Root Cell 中获取系统资源,可独占或与 Root Cell 共享。
类似方案:
● XtratuM
● PikeOS
● Pinto ARM TrustZone
● Quest-V
● Bao (http://www.bao-project.org/index.html)