随着物联网规模呈指数级增长,物联网开发者需要支持各种不同的硬件资源、操作系统、软件工具/应用程序。这是一个很大的挑战,因为许多互联的物联网设备在资源上会受到各种限制的,例如运行内存空间,闪存大小,CPU核的个数。虚拟化有助于满足这些广泛的需求,但是现有的虚拟化方案无法为物联网开发提供同时满足尺寸、灵活性和功能的适当的组合。
ACRN的设计有所不同。在2018年的Linux嵌入式大会上发布的ACRN,是一款灵活的、轻量级的参考hypervisor,以实时性和关键的安全性为设计出发点,并且通过开源平台为精简嵌入式开发进行优化。
ACRN的最大优势之一是尺寸小,发布时大约只有25K行代码。英特尔开源技术中心为项目的发布贡献了源代码。英特尔公司副总裁兼开源技术中心总经理Imad Sousou表示,“ACRN的想法来自于我们为用户提供虚拟技术的工作。嵌入式物联网开发工作量很大。使用hypervisor技术,具有不同重要性的负载可以被整合到一个平台上,从而降低开发和部署成本,并且允许更精简的系统架构。”
关于名字:ACRN不是缩写,发音为“acorn”,(acorn英文意思为橡子)寓意虽然开始很小,但最终可以长的很大,与该项目希望通过社区参与成长的方式相似。ACRN有两个关键组成:hypervisor和ACRN设备模块。ACRN Hypervisor是一个Type 1的hypervior,可以直接运行于裸机上。ACRN设备模块是针对虚拟设备仿真的参考框架实现,它提供丰富的I/O虚拟化支持,目前计划支持音频、视频、图形和USB。随着社区发展,预计会有更多设备虚拟化功能加入。
ACRN Hypervisor运行在裸机上,然后在其上可以运行一个基于Linux 的服务操作系统(SOS),然后可以同时运行多个客户操作系统,以便整合工作负载。ACRN hypervisor为Service OS创造了第一个虚拟环境,然后启动Guest OS。Service OS运行本地设备驱动程序来管理硬件,向Guest OS提供I/O mediation。
Service OS以系统最高优先级的虚拟机运行,以满足时间对敏感需求和系统服务质量(QoS)的要求。Service OS目前可以运行Clear Linux,但是ACRN也支持其它Linux 的发行版或者专有RTOS作为Service OS或Guest OS。诚邀社区帮助来一起开发支持其他版本的Service OS,并使用ACRN参考堆栈支持其他版本的Guest OS,例如:其它Linux 发行版、Android、Windows* 或者 专有 RTOS。
为了保持ACRN hypervisor代码库尽可能小且高效,大部分设备模块的实现驻留在Service OS,用来提供设备共享和其它功能。目的是保证在资源受限的设备上实现小尺寸,低延迟的代码库的优化,为物联网开发平台构建虚拟化特定功能,如图形、媒体、音频、图像以及其它需要分享资源的I/O设备。通过这种方法,ACRN填补了用于大数据中心的hypervisor和直接硬件分区hypervisor之间的空白,是各种物联网开发的理想选择。
一个实例是车辆中的软件定义驾驶舱(SDC)。使用ACRN作为参考实现,供应商可以构建解决方案,包括仪表盘、车载娱乐系统(IVI)、一个或者更多的后排乘客娱乐系统(RSE)等。考虑到整体系统安全问题,IVI和RSE系统可以作为隔离的虚拟机(VM)运行。软件定义工业系统(SDIS)是另一个很好的例子,包括网络物理系统、物联网、云计算和认知计算。ACRN可以帮助SDIS整合工业工作负载,并且可以跨系统实现灵活调度。这有助于为用户带来益处,包括低功耗、简化安全性、提高可靠性,以及简化系统管理等。
ACRN的早期支持者包括英特尔、ADLink凌华科技、Aptiv、LG电子和东软。社区开发者也欢迎下载代码,并参与ACRN GitHub的贡献。更多的使用案例信息和参与信息,请访问ACRN官网。欢迎参加于2018年10月22-24日在英国爱丁堡举办的开源峰会兼嵌入式Linux大会(欧洲),届时会针对Linux、云、容器、AI、社区等举办100多场会议。
(本文由Linux基金会撰写,其中部分内容由英特尔开源中心首席工程师Eddie Dong提供。)