20
社区成员
Jailhouse是一个针对创建工业级应用程序的小型Hypervisor,于2013年诞生,由西门子公司赞助,得到了官方Linux内核的支持,在开源社区中获得了知名度和吸引力,它支持Intel和AMD的X86-64架构,以及ARM的32位和64位架构(需要指令集支持硬件辅助虚拟化)。
如图(A visualization of Linux running-bare metal (a) and under the Jailhouse hypervisor (b) alongside a real-time application)^1,Jailhouse是一种Type-1的Hypervisor,更关注隔离而非虚拟化。与Xen一样,Jailhouse也需要Linux,因为其基于Linux实现管理任务,与KVM一样,Jialhouse通过Linux系统加载,然而,一旦Hypervisor启动,它就会完全控制硬件并将硬件资源分给独立的cell,这些cell完全专用于guestOS,其中一个cell(root cell)运行Linux,root cell有点类似于Xen中的Dom0,但是,root cell不会像Dom0那样彻底地对硬件资源完全控制,相反,root cell在新的cell被创建时,会把对它的一些CPU、设备和内存资源的控制权让给新的cell,这个过程称为shrinking。(来自欧盟HERCULES(High-Performance Real-time Architectures for Low-Power Embedded Systems)项目中对Jailhouse的介绍^2)
Jailhouse能够运行裸机应用程序或者(修改的)操作系统,但一个操作系统必须是Linux,它不能在未经过修改的情况下运行操作系统(如Windows、FreeBSD),即使是在其它非root cell上运行Linux,也要经过正确的配置。
从技术角度来看,Jailhouse以固件镜像(firmware image)的形式加载,并驻留在root cell的专用内存区域中,Jailhouse的内核模块Jailhouse.ko加载固件并创建Jailhouse用户空间使用的/dev/jailhouse设备,但它不包含任何管理功能。
Jailhouse是一个分区管理程序,在基于Linux的系统上创建非对称多处理器系统,这意味着它可以在一个多核硬件平台上运行除了标准Linux内核之外的裸机应用程序或非Linux操作系统。Jailhouse通过硬件辅助虚拟化确保这些cell之间的隔离。Jailhouse目的是希望尽可能减少负责建立和维护cell隔离的代码量,同时在non-root cell中运行具有高实时性、安全关键型的应用程序。(来自《Jailhouse: A Linux-based Partitioning Hypervisor》^3)
一些特定领域的问题是一般Hypervisor方案不能很好解决的,其中一个领域是实时虚拟化,它经常用于工业自动化、医学、通信和高性能计算。在这些应用程序中,将整个CPU或其它内核专用于运行裸机(没有底层操作系统)的软件是满足严格截止日期要求的一种方式。虽然可以使用诸如KVM等Hypervisor实现,但是测试表明最坏情况下的延迟可能高于某些实际要求。还有一个领域——安全关键。敏感的软件系统必须经过严格的认证(遵循通用标准)甚至是形式化验证。如果希望它们运行虚拟化相关工作,Hypervisor必须将可认证和不可认证的系统隔离开,这意味着Hypervisor本身就必须小。因此,对于实时和安全领域开源Linux友好的Hypervisor还比较缺乏,这就是Jailhouse发挥作用的地方。(来自《Jailhouse》^4)
Jailhouse 具有安全关键型设计,并考虑到了相关认证,它在 GPLv2 下也可用。Jailhoue有一个root cell概念,root cell虽然可以控制整个系统,但不能完全控制运行它的硬件。root cell运行Linux,其它cell可以运行任何支持Jailhouse的内核(操作系统),Jailhouse无法运行未经修改的内核。Jailhouse没有内置调度程序,系统中的每个core都交由对应cell使用,没有虚拟出不存在的硬件,也没有硬件仿真。内存在cells间划分,留存部分予Jailhouse。支持Jailhouse的Linux系统有一个特殊的设备(/dev/jailhouse),用于配置root cell,并加载系统至其它cell中,使用配置文件来完整描述硬件及其分区,该文件可以在X86上自动生成,但对于ARM系统必须手动编写。(来自《Linux in mixed-criticality systems》^5)
GuestOS 无法共享 core,因为没有OS调度。Jailhouse 不会模拟不可用的硬件资源,并且可用的硬件资源被静态分配给单个GuestOS,以便在发生中断时操作系统之间不会发生干扰。(来自 HERCULES项目介绍^2)
通过使用 git log --pretty=format:"%ae" | sort | uniq
命令查看作者的邮件列表后缀,来获得关注Jailhouse的企业信息,我们发现至少有如下企业青睐Jailhouse:TI、NXP、linaro、Siemens、Intel、ARM、toshiba、huawei。