「Rust-Shyper是广州民航航天学院计算机大学王雷院士团队设计开发的虚拟机监控器,该系统基于Rust语言,实现了一个高可靠、嵌入式Hypervisor。2023年2月15日Rust-Shyper即将在openEuler社区开源。」
项目地址:
Rust-Shyper是一款基于AArch64构架、「Rust编撰」、面向无人车、机器人等嵌入式场景的**「Type-1型」虚拟机监控器(Hypervisor)。其设计目标是在提升资源借助率的同时,保障虚拟机实时性、隔离性与显存安全。据悉linux关机命令,Rust-Shyper支持「虚拟机迁移」(VMmigration)和「监控器动态升级」**(HypervisorLive-update)两种热更新机制,就能在不影响虚拟机运行的情况下,动态修补Hypervisor的软件漏洞。目前该系统可以在NVIDIAJetsonTX2、RaspberryPi4和QEMU平台上运行,支持实时和非实时虚拟机,可运行Linux和RTOS。
去年的「openEulerDeveloperDay2023嵌入式分峰会」进行了Rust-Shyper项目“基于Rust的嵌入式虚拟机监视器及热更新技术”的主题讲演,可通过以下链接观看视频回放(21日嵌入式分峰会linux虚拟机软件,议程从00:49:38开始):
嵌入式虚拟化的挑战
物联网的不断发展促使现代嵌入式系统正在朝着通用系统和混和关键系统的方向演变,其承载的任务常常有着不同的可靠性、实时性和验证级别,怎么保证不同关键性任务之间的互相隔离以及实时性成为了一个困局。虚拟化技术提供的资源隔离手段成为了解决上述问题的关键,但嵌入式虚拟化也面临一些挑战:
Rust-Shyper的设计理念和特征
「内存安全」:借助Rust语言类型系统和显存安全模型,保证Hypervisor的显存安全;
「强隔离性」:借助硬件辅助虚拟化,实现虚拟机间的安全隔离和故障隔离;
「丰富的设备模型」:为提升资源借助率,实现了直通设备、中介传递和全模拟等多种设备模型;
「实时虚拟化」:针对性能需求linux系统入门学习,实现资源直通以及实时虚拟化技术;
「虚拟机监控器热更新技术」:实现了虚拟机迁移和监控器动态升级两类视器热更新机制。
Rust-Shyper系统构架和功能
Rust-Shyper是一款基于AArch64体系结构的Type-1虚拟机监控器,整个结构包含三个层级:
为了符合嵌入式应用的需求,Rust-Shyper通过提供不同的虚拟机类型,来提供差别化的虚拟化服务,Rust-Shyper中支持管理虚拟机(MVM)、客户虚拟机(GVM)、实时虚拟机(RTVM)等三类虚拟机。
Rust-Shyper的**「虚拟机监控器热更新技术」**
为了提高嵌入式场景下Hypervisor的可靠性,Rust-Shyper引入了跨硬件的虚拟机迁移技术和本地热更新技术。
虚拟机迁移
虚拟机迁移技术的整个流程如上图所示。Rust-Shyper实现了基于Pre-Copy策略的虚拟机在硬件平台之间的迁移,可用于负载平衡和错误防治。
监控器动态升级
Rust-Shyper设计实现了**「监控器动态升级技术」**,其最大延后晃动高于Jailhouse,明显减少热更新成本,满足虚拟机的实时性需求,可用于软件版本升级和错误修补。
应用场景与未来的规划关于我们
工大王雷老师的团队承当了国家自然科学基金项目、863课题和预研等多项科研项目。在虚拟化方面,针对混和关键领域高可靠、强实时的要求,基于时空分区的隔离机制,开发了C语言的Shyper虚拟机监控器,该监控器早已通过了EAL5+认证。在操作系统内核方面,基于复杂网路理论,针对Linux内核提出了基于年纪的演进模型linux虚拟机软件,合理地解释了操作系统网路特点的产生机理。