Wind River VxWorks系统框图

为VxWorks 7添加容器支持

1 简介

容器为你提供了一个方法来打包与系统其余部分隔离的应用程序,并可在不同的VxWorks目标板上移植和共享,VxWorks的容器支持是符合OCI兼容的的。

VxWorks是由风河(Wind River)提供的一个实时操作系统(RTOS),本文描述了如何配置VxWorks 7来支持容器,以及将一个容器部署到VxWorks的ROMFS文件系统上。虽然远程容器管理是支持的,本文并不会介绍如何从Docker Hub, Amazon或Harbor上来部署和获取容器,我们将会在另一篇文章中介绍。

2 前提条件

以下的指导步骤假设你正在使用:

一个Intel x86的目标机:
-有网络支持
-配置成能够启动VxWorks

一个Windows工作站:
-安装有Wind River VxWorks 7, SR21.03

我们认为你已经将你的工作站配置可以使用buildah的工具,这是用来编译一个OCI兼容的容器,更多细节信息,请参考VxWorks容器程序员执导,为容器配置编译工作站。

3 相关的文档

风河文档:
VxWorks容器程序员指南

4 准备使能了容器的VxWorks项目

4.1 创建并编译容器的VxWorks源码编译(VSB)项目

打开一个Windows命令行shell,配置编译环境,然后添加容器库到一个新创建的VxWorks源码编译(VSB)项目中:


cd <WIND_HOME>                  // your installation directory
wrenv -p vxworks\21.03 C:\Windows\sysnative\cmd.exe
cd <YOUR_WORKSPACE>             // your workspace
vxprj vsb create -S -bsp itl_generic -smp -lp64 containersVSB
cd containersVSB                // your VSB directory
                                // add the Containers runtime
vxprj vsb layer add CONTAINER_RUNTIME 
                                // add the Containers manager
vxprj vsb layer add CONTAINER_MANAGER      
                                // add the Containers Examples
vxprj vsb layer add PYTHON 
vxprj vsb layer add CONTAINER_EXAMPLES
vxprj vsb config -s -add _WRS_CONFIG_CONTAINER_PYTHON_WEB_SERVER=y 

                                // Build the VSB
make -j 16
cd ..       

4.2 创建并编译容器的VxWorks镜像项目(VIP)

按照如下步骤来创建VxWorks镜像项目(VIP)


vxprj vip create -vsb containersVSB itl_generic llvm -profile PROFILE_DEVELOPMENT containersVIP
cd containersVIP

// enable VIP container components
vxprj vip component add INCLUDE_CONTAINER_RUNTIME INCLUDE_CONTAINER_SHELL_CMD
vxprj vip component add INCLUDE_DISK_UTIL INCLUDE_RAM_DISK
vxprj parameter set RAM_DISK_SIZE 0x4000000

// enable PYTHON and ROMFS
vxprj component add INCLUDE_PYTHON_SUPPORT INCLUDE_ROMFS
mkdir romfs

4.3 拷贝例子容器到VIP


robocopy /s ..\containersVSB\usr\containers\web_server romfs

4.4 编译VIP


vxprj build

5 运行VxWorks容器

5.1 用此VIP VxWorks镜像文件来启动目标机

用常规的方法将你刚编译的VxWorks内核镜像部署到你的目标机上,然后启动目标机上的VxWorks.

5.2 识别目标机的网络IP地址

在VxWorks的内核shell上运行:


-> ifconfig
.
.
.
gei0      Link type:Ethernet HWaddr 7a:7a:9a:00:00:02
          inet 10.0.10.2 mask 255.255.255.0 broadcast 10.0.10.3
.
.
.

value = 0 = 0x0
->

5.3 解压缩并运行网页服务器的VxWorks容器

在VxWorks的内核shell上运行:

-> cmd
[vxWorks *]# vxc unpack --image /romfs/web_server.oci /ram0/bundle
[vxWorks *]# vxc run --detach --bundle /ram0/bundle web_server
Starting server using port 8888

5.4 在你的工作站上打开一个网页浏览器来验证例子容器正在运行

假设目标机的ip地址是 10.0.10.2,在你的浏览器框中输入 http://10.0.10.2:8888,你可以在浏览器上看到一个示例的Wind River网页。