目前的位置: 首页 实验室新闻 正文

ZVM支撑openEuler Embedded运行iSulad容器


一、前言

随着嵌入式系统的发展,虚拟化和容器化技术是提升设备效能和灵活性重要手段。ZVM(Zephyr-based Virtual Machine)作为新一代Type 1.5 RTOS虚拟化解决方案(Hypervisor),为单芯片多OS和多任务处理提供了实时且灵活的支持。同时,ZVM也是openEuler Embedded混合关键性部署框架(MICA)的基础——融合弹性底座的一部分,并已终端控制方式合入openEuler Embedded(ZVM/openEuler Embedded架构如图1所示),相关文档可参考:

https://embedded.pages.openeuler.org/master/features/zvm.html

2A3B4

图1:ZVM/openEuler Embedded总体架构

本文将展示ZVM支撑openEuler Embedded运行iSulad容器的实现。


二、iSulad & openEuler Embedded

5647

iSulad 是一个新的通用容器引擎,提供统一的架构设计来满足CT和IT领域的不同需求。它具有轻、快、易、灵的特点,这与子弹蚂蚁"小个头、大能量"的形象不谋而合。作为一款通用容器引擎,openEuler 已将其深度集成到其操作系统中。

iSulad结合openEuler Embedded轻量化和高性能特性,可为嵌入式设备、边缘计算节点及云原生场景提供高效、稳定的容器运行时支持,助力开发者快速构建和部署轻量化应用。

因此,ZVM+iSulad+openEuler Embedded,是一个具备实时性、强隔离性和安全性的解决方案。


三、实现方法

本处将展开介绍实现RK3568芯片上ZVM+iSulad+openEuler Embedded部署的过程,主要为构建openEuler Embedded镜像过程。

1.oebuild构建含iSulad的openEuler Embedded镜像

首先,oebuild是专门用于构建openEuler Embedded 系统的工具,利用了 Yocto的强大功能和灵活性的同时针对openEuler Embedded进行了优化。本文将在oebuild container中进行内核的配置与编译。前期准备可参考:https://embedded.pages.openeuler.org/master/oebuild/userguide/install/index.html

在oebuild中,可以一键式构建含容器的openEuler Embedded的系统,步骤如下:

  • 初始化oebuild构建环境:

    oebuild generate

      #随后即进入图形界面进行配置

    • 选择平台为ok3568

    • 选择特性systemd

    • 设置输出路径,此处为isulad

23273

图2:图形界面配置

保存配置并退出后,应有如下图3所示输出,表示已经初始化完成构建路径

F7D1

图3:初始化构建环境

  • 添加iSulad配置

当前openEuler Embedded标准镜像中默认不集成iSulad。可以进入容器在 local.conf 文件中添加iSulad配置。

oebuild bitbake
#添加 DISTRO_FEATURES:append = " isulad "vi conf/local.conf

1AA1A

图4:添加iSulad特性

  • 指定构建的根文件系统

于路径为build同级的src中,为yocto-meta-openeuler源码增加配置文件image-early-config-ok3568.inc,路径为:

src/yocto-meta-openeuler/meta-openeuler/recipes-core/images/

设置根文件系统为cpio.gz

17A4E

图5:添加image-early-config配置

  • 配置内核

在直接构建完整镜像之前,可以先进行linux内核的配置

bitbake -c menucofig linux-openeuler

与本文相关的主要有:

#> General setup >Control Group support

CONFIG_CGROUPS=y

#> File systems >Overlay filesystem support

CONFIG_OVERLAY_FS=y

以及ARM v8.x特性需要关闭,如下图6。

2A836

图6:Linux menuconfig界面

  • 构建openeuler-container-os:

bitbake openeuler-container-os

等待编译结束后,如图7所示,在输出路径中,可以找到ZVM启动Linux所需的Image以及含有iSulad的文件系统。

15260

图7:系统镜像构建结果

2.编译RK3568平台的ZVM

本处无需做额外修改,只需获得上文所述的Image与cpio.gz文件即可,启动方式与ZVM启动其他Linux系统方式一致。请参考ZVM文档:

https://gitee.com/openeuler/zvm/blob/master/zvm_doc/4_Run_on_ROC_RK3568_PC.rst


四、ZVM启动openEuler Embedded+iSulad

ZVM启动openEuler Embedded虚拟机后,启动iSulad容器演示如下图8所示,容器镜像为openeuler:23.09  

5095F

图8:ZVM启动openEuler Embedded&iSulad


8A726


上一条:ZVM完成与瑞芯微RK3568/RK3588处理器的软硬件兼容性证明 下一条:ZVM中的串口虚拟化实现

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学