openEuler 社区技术委员会:
我谨代表 SIG-Virt 和 SIG-Embedded 向社区推荐 openEuler 2023 年度优秀项目:基于 Rust 语言虚拟机监控器 Rust-Shyper
Rust-Shyper 虚拟机监控器项目的情况如下: 项目描述: Rust-Shyper 是一个使用 Rust 编写的面向嵌入式混合关键场景的高安全 Type-1 型虚拟机监控器( Hypervisor )。其设计目标在于提高资源利用率,同时保障虚拟机实时性、隔离性与可靠性的需求。 Rust-Shyper 从编程语言角度提升了系统的安全性,并提出了虚拟机监控器在线升级策略和虚拟机迁移策略来动态提升操作系统的可靠性。 推荐人:
任慰 @vonhust renwei41@huawei.com openEuler TC 成员 方林旭 @fanglinxu fanglinxu@huawei.com SIG-embedded maintainer 叶增软 @yezengruan yezengruan@huawei.com SIG-Virt Maintainer 莫策 @motse306 moce4917@buaa.edu.cn rust-shyper committer 王雷 wanglei@buaa.edu.cn 北京航空航天大学教授
韩宗成 @hzc04 hanzongcheng@huawei.com MICA 项目 committer 罗永茂 @yongmao_luo luoyongmao@huawei.com MICA 项目 committer 粱其锋 @emancipator liangqifeng@ncti-gba.cn SIG-Yocto Committer
项目地址 : https://gitee.com/openeuler/rust_shyper
openEuler 优秀项目衡量标准 推荐奖项 : openEuler 年度技术创新项目 开源开放 : Rust-Shyper 采用 Mulan PSL v2 开源协议,代码托管在 openEuler 开源社区上。 行业影响 :作为一款面向嵌入式混合关键场景的高安全虚拟机监控器, Rust-Shyper 在 2023 年 4 月的 openEuler Developer Day 上完成了开源捐赠, 填补了国产高安全嵌入式混合关键领域虚拟机监控器的空白。 Rust-Shyper 自开源以来受到学术界和工业界的广泛关注,清华大学、北京大学、中科院计算所等多所高校和科研院所对 Rust-Shyper 展开了学术交流,麒麟、 Intel 等公司对 Rust-Shyper 系统也开展了跟踪研究。 技术创新 : 「内存安全」:利用 Rust 语言的系统和内存安全模型,提升 Hypervisor 的内存安全; 「强隔离性」:利用硬件虚拟化技术,实现虚拟机间的安全隔离和故障隔离; 「丰富的设备模型」:为提高资源利用率,实现了直通设备、中介传递、半模拟和全模拟等多种设备模型; 「实时虚拟化」:针对性能需求,实现资源差异化分配策略以及实时虚拟化技术; 「虚拟机监控器热更新技术」:实现了虚拟机监控器热更新机制,能够动态完成对虚拟机监控器的升级或错误修复。 「虚拟机迁移技术」:支持虚拟机的动态迁移,实现对特定硬件错误的容错机制。 社区活跃 :相关项目的源码全部在社区进行托管并基于社区模式进行开发,核心开发人员 8 人、提交 PR 共计 16 个、 Issue 共计 4 个、 Commit 共计 306 个。 高质量开发和运营 : Rust-Shyper 代码符合规范,代码质量高,文档详尽,托管在官网。 PR 提交完整,代码检视流程完整,检视方面和内容详细。对邀请了外部领域开发者,高校个人开发者共同创新开发,用户反馈问题响应及时,每周 1 次社区例会。
1. 软件介绍 物联网的不断发展使得现代嵌入式系统正在朝着通用系统和混合关键系统的方向演化,其承载的任务往往有着不同的可靠性、实时性和验证级别,如何保证不同关键性任务之间的相互隔离以及实时性成为了一个难题。虚拟化技术提供的资源隔离手段成为了解决上述问题的关键。 Rust-Shyper 是一款基于 AArch64 架构, Rust 编写,面向无人车和机器人等嵌入式 混合关键场景的高安全 Type-1 型虚拟机监控器( Hypervisor ) 。其设计目标是在提高资源利用率的同时,保障虚拟机实时性、隔离性与内存安全。此外, Rust-Shyper 支持监控器动态升级( Hypervisor Live-update )和虚拟机迁移( VM migration )两种热更新机制,能够在不影响虚拟机运行的情况下,动态修复 Hypervisor 的软件漏洞和硬件错误。目前该系统可以在 NVIDIA Jetson TX2 、 Raspberry Pi 4 、 ROC-RK3588S-PC 和 QEMU 平台上运行,支持实时和非实时虚拟机,可运行 Linux 、 RTOS 和裸应用。 系统架构和功能: Rust-Shyper 是一款基于 AArch64 体系结构的 Type-1 虚拟机监控器,整个结构包含三个层级: 1 )最底层为硬件层级,对应 ARMv8 EL3 固件层级; 2 )中间层为虚拟机监控器层,对应 ARMv8 EL2 虚拟化层级,该层级也是 Rust-Shyper 代码所处的特权层级; 3 )最上层为虚拟机层级,对应 ARMv8 EL1 和 EL0 层级。 为了符合嵌入式应用的需求, Rust-Shyper 通过提供不同的虚拟机类型,来提供差异化的虚拟化服务, Rust-Shyper 中支持管理虚拟机( MVM )、客户虚拟机( GVM )、实时虚拟机( RTVM )等三类虚拟机。 虚拟机监控器热更新技术:为了提升嵌入式场景下 Hypervisor 的可靠性, Rust-Shyper 引入了跨硬件的虚拟机迁移技术和本地热更新技术。一方面, Rust-Shyper 实现了基于 Pre-Copy 策略的虚拟机在硬件平台之间的迁移,可用于负载平衡和错误预防;另一方面, Rust-Shyper 设计实现了监控器动态升级技术,其最大延迟抖动低于 Jailhouse ,显著降低热更新成本,满足虚拟机的实时性需求,可用于软件版本升级和错误修复。
2. 关键能力 强隔离性: 利用硬件辅助虚拟化,实现 CPU 虚拟化、内存虚拟化和中断虚拟化等虚拟化策略,从而实现虚拟机间的安全隔离和故障隔离; 实时性: 针对性能需求,实现差异性资源分配策略、中断部分直通以及实时虚拟化技术; 多设备模型: 实现了直通设备、中介传递、半模拟和全模拟等多种设备模型; 虚拟机监控器热更新技术: 实现了虚拟机迁移和监控器动态升级两类监控器热更新机制。
3. 社区大事记
l 2023 年 2 月在 openEuler 社区开源。
l 2023 年 4 月 21 的 openEuler Developer Day 2023 嵌入式分论坛进行了 Rust-Shyper 项目 “ 基于 Rust 的嵌入式虚拟机监控器及热更新技术 ” 的主题演讲。
l 2023 年 4 月 26 日在 openEuler 公众号介绍 Rust-Shyper 。
l 2023 年 6 月列入 openEuler “操作系统技术白皮书(创新项目总览)。
l 2023 年 9 月 17 日 CCF 学科前沿讲习班《 Rust 安全系统编程》中介绍 Rust-Shyper 。
l 2023 年 9 月 22 日在欧拉多咖第十五期“混合关键性系统”介绍 Rust-Shyper+UniShyper 。
4. 后续规划 1 )基于 Rust-Shyper 支持 ROS 系统,移植机器人应用; 2 )针对 Virtio 等虚拟化设备模型的优化研究; 3 )针对 RISC-V 平台的 Rust-Shyper 移植; 4 )实现内存资源分区隔离和内存带宽控制; 5 )针对 Secure World 提出新的安全设计模式。
祝好!