首页 / 用于开发和运行开源鸿蒙系统的Linux容器化镜像文件的方法

用于开发和运行开源鸿蒙系统的Linux容器化镜像文件的方法公开 发明

技术领域

[0001] 本发明涉及开源鸿蒙系统领域,尤其是涉及一种用于开发开源鸿蒙系统的Linux容器化镜像文件的方法,一种用于开发开源鸿蒙系统的Linux容器化镜像文件的系统,一种用于运行开源鸿蒙系统的Linux容器化镜像文件的方法,一种运行开源鸿蒙系统的标准Linux容器化镜像文件的系统,以及一种计算机程序产品,其用于至少辅助地实现根据本发明所述的方法的步骤。

相关背景技术

[0002] 开源鸿蒙系统是一款适用于移动终端、智能穿戴设备、智能家居设备和/或车载娱乐系统等IoT设备的开源分布式操作系统,其能够实现各个类型的设备、云服务和应用的无缝协同。目前,开源鸿蒙系统的安装高度依赖于安装设备的硬件驱动模块(例如CPU、GPU、Wifi、蓝牙、声卡等),该安装设备的硬件驱动模块尤其需符合开源鸿蒙系统设计的驱动框架,这极大地限制了开源鸿蒙系统的跨设备和跨平台的安装和运行。
[0003] 因此,如何实现开源鸿蒙系统的跨设备和跨平台的安装和运行成为目前需要解决的技术难题。

具体实施方式

[0045] 为了使本发明所要解决的技术问题、技术方案以及有益的技术效果更加清楚明白,以下将结合附图以及多个示例性实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,而不是用于限定本发明的保护范围。
[0046] 图1示出了根据本发明的一个示例性实施例的用于开发开源鸿蒙系统的Linux容器化镜像文件的方法的工作流程图。以下示例性的实施例更详细地描述根据本发明的方法。
[0047] 所述方法可以包括步骤S1至S4。在步骤S1中,在第一宿主系统上配置Linux容器的开发环境,并在所述开发环境中创建标准Linux容器。在本发明的意义中,Linux容器(Linux Container,缩写LXC)是一种内核虚拟化技术,其中,一个Linux容器可以被定义为一个单一的操作系统镜像,其捆绑了一组隔离的应用程序及其依赖的资源,以便在宿主系统的隔离空间中运行,Linux容器的安全机制可以保证不同容器之间的数据不会被泄漏,且运行环境不会被破坏,由此实现进程和资源的隔离。
[0048] 在此,可以在第一宿主系统中安装Linux容器运行的依赖库liblxc,并下载Linux容器的标准库组件,所述标准库组件是一组用于创建Linux容器的标准工具。对所下载的标准库组件进行解压、编译和安装,由此可以在建立的开发环境中基于所安装的标准库组件创建标准Linux容器。
[0049] 在步骤S2中,将开源鸿蒙系统的文件系统的内核目录基于Linux容器化标准生成开源鸿蒙系统的根文件系统目录。在此,Linux容器化标准可以理解为给定的Linux容器模板,其是用于创建标准Linux容器的基础镜像。在此,可以将开源鸿蒙系统的原文件系统的内核目录基于Linux容器化标准进行整合,使得所生成的根文件系统目录适配于按照给定的Linux容器模板创建的标准Linux容器。
[0050] 示例性地,将开源鸿蒙系统的原文件系统的arch目录和init目录整合至符合Linux容器化标准的boot目录,其中,基于arch目录的路径可以存储开源鸿蒙系统架构、主板硬件关联代码等,基于init目录的路径可以存储例如开源鸿蒙系统版本、boot option选择、初始setup等相关功能源码;将开源鸿蒙系统的原文件系统的block目录、firmware目录和kernel目录整合至符合Linux容器化标准的sys目录,其中,基于block目录的路径可以存储例如开源鸿蒙系统分区操作的相关代码等,基于firmware目录的路径可以存储固件信息和配置,基于kernel目录的路径可以存储开源鸿蒙系统的内核事件、电源管理、时间管理、时间片管理、系统外部中断事件处理等相关源码;将开源鸿蒙系统的原文件系统的drivers目录、net目录和sound目录整合至符合Linux容器化标准的dev目录,其中,基于drivers目录的路径可以存储例如设备驱动设备接口等相关代码,基于net目录的路径可以存储所述网卡、蓝牙、IPv4/IPv6登录网络通信模块等相关源码,基于sound目录的路径可以存储例如音频格式协议、AC97标准、I2C协议、spi协议等相关源码;将开源鸿蒙系统的原文件系统的fs目录整合至符合Linux容器化标准的sbin目录,基于fs目录的路径可以存储文件系统、文件相关操作、文件压缩解压、格式转换等相关源码;将开源鸿蒙系统的原文件系统的includes目录整合至符合Linux容器化标准的lib64目录,基于includes目录的路径可以存储kvm内核访问、音视频文件播放api、内存操作api、网络接口操作API等相关源码;将开源鸿蒙系统的原文件系统的ipc目录整合至符合Linux容器化标准的proc目录,基于ipc目录的路径可以存储系统消息队列处理、系统call、系统进程通信等相关操作源码;将开源鸿蒙系统的原文件系统的lib目录整合至符合Linux容器化标准的lib目录,基于lib目录的路径可以存储zlib函数库、字体库、独立磁盘冗余阵列管理库等内容;将开源鸿蒙系统的原文件系统的security目录整合至符合Linux容器化标准的selinux目录,基于security目录的路径可以存储系统资源安全相关、系统服务进程可访问资源管控等相关源码;将开源鸿蒙系统的原文件系统的samples目录整合至符合Linux容器化标准的home目录,基于samples目录的路径可以存储音频、视频播放器、麦克风、时钟等相关应用sample源码;将开源鸿蒙系统的原文件系统的scripts目录整合至符合Linux容器化标准的run目录,基于scripts目录的路径可以存储系统编译脚本gcc插件、gdb调试工具库等组件源码;将开源鸿蒙系统的原文件系统的usr目录整合至符合Linux容器化标准的usr目录,基于urs目录的路径可以存储用户安装的软件和文件、系统预装软件目录等;将开源鸿蒙系统的原文件系统的virt目录整合至符合Linux容器化标准的srv目录,基于virt目录的路径可以存储虚拟CPU、内存、磁盘和网络设备管理等的相关源码,等等。需要说明的是,以上目录仅仅是示例性的。
[0051] 在步骤S3中,将开源鸿蒙系统的文件系统的源码根据所生成的根文件系统目录迁移并封装至所创建的标准Linux容器中。由于所生成的根文件系统目录指示了开源鸿蒙系统的原文件系统的源码在所创建的标准Linux容器中的存储路径,因此可以根据所述根文件系统目录实施开源鸿蒙系统的文件系统的源码至所创建的标准Linux容器的迁移。
[0052] 在此,首先可以将开源鸿蒙系统的文件系统的源码基于所生成的根文件系统目录树进行整合,然后将经整合的源码根据所生成的根文件系统目录树迁移并封装至在所述开发环境中创建的标准Linux容器中,由此完成开源鸿蒙系统的文件系统的源码的迁移过程。
[0053] 可选地,将所述开源鸿蒙系统的根文件系统目录可以根据所述开源鸿蒙系统的层级进行划分,并基于划分结果分别迁移和封装至所创建的标准Linux容器中,其中,所述层级包括内核层、系统服务层、框架层和/或应用层等。示例性地,将arch目录和firmware目录配属于框架层;将kernel目录配属于内核层;将fs目录配属于系统服务层;将samples目录配属于应用层,等等。
[0054] 在步骤S4中,将所述标准Linux容器打包成开源鸿蒙系统的标准Linux容器化镜像文件。在此,“打包”可以理解为将所述标准Linux容器包含的一个或多个文件利用压缩软件压制成一个压缩文件包,该压缩文件包即为开源鸿蒙系统的标准Linux容器化镜像文件。
[0055] 根据本发明的当前实施例,在开发阶段通过将开源鸿蒙系统的文件系统的源码基于根文件系统目录迁移并迁移至标准Linux容器,并打包成标准Linux容器化镜像文件。由于Linux容器可以与宿主系统共享相同的内核,这极大地降低了Linux容器的开发和运行开销,尤其是与虚拟机相比消耗更少的内存和处理器资源,由此提供轻量级的虚拟化。相比之下,在虚拟机中需要建立软件或硬件的仿真层才能够建立开源鸿蒙系统镜像,这不仅会消耗大量的内存和处理器资源,而且在虚拟机每次运行开源鸿蒙系统镜像时都需要长的启动时间。同时,Linux容器可以在安装各类操作系统的智能设备上移植,而不依赖宿主系统的硬件资源和服务。通过这种方式,实现只需一次封装开源鸿蒙系统的镜像文件,就可以不受宿主系统的硬件平台限制地无限次移植复用和快速部署开源鸿蒙系统。
[0056] 图2示出了根据本发明的另一示例性实施例的用于开发开源鸿蒙系统的Linux容器化镜像文件的方法的工作流程图。以下仅阐述与图1中所示的实施例的区别,而相同的步骤为了简洁起见而不再重复描述。
[0057] 如图2所示,所述方法还可以包括步骤S21,在步骤S21中,在所述开源鸿蒙系统的根文件系统目录中创建自定义目录,其中,所述自定义目录包括第三方应用的应用目录和/或工具目录。示例性地,可以在开源鸿蒙系统的根文件系统目录中例如创建licences目录作为自定义目录。当在安装标准Linux操作系统的其他宿主系统上运行该Linux容器,可以基于所述自定义目录将在开源鸿蒙系统中要使用的第三方应用下载到对应的应用目录和/或工具目录下并进行安装,这为构建以该Linux容器为中心的IoT生态系统奠定了基础。
[0058] 图3示出了根据本发明的一个示例性实施例的用于开发开源鸿蒙系统的Linux容器化镜像文件的系统的示意性框图。
[0059] 如图3所示,所述系统1可以包括以下构件:
[0060] ‑开发环境创建模块11,其被配置用于在第一宿主系统上配置Linux容器的开发环境,并在所述开发环境中创建标准Linux容器;
[0061] ‑目录生成模块12,其被配置用于将开源鸿蒙系统的文件系统的内核目录基于Linux容器化标准生成开源鸿蒙系统的根文件系统目录;
[0062] ‑源码迁移模块13,其被配置用于将开源鸿蒙系统的文件系统的源码根据所生成的根文件系统目录迁移并封装至所创建的标准Linux容器中;和
[0063] ‑镜像文件生成模块14,其被配置用于将所述标准Linux容器打包成开源鸿蒙系统的标准Linux容器化镜像文件。
[0064] 以上描述了开源鸿蒙系统的Linux容器化镜像文件的开发过程,所开发的Linux容器化镜像文件可以被发布,以供安装标准Linux操作系统的其他宿主系统下载、安装和使用。以下结合图4描述了根据本发明的一个示例性实施例的用于运行开源鸿蒙系统的Linux容器化镜像文件的方法的工作流程图。
[0065] 如图4所示,所述方法可以包括步骤S1’至S4’。在步骤S1’中,在第二宿主系统上配置Linux容器的运行环境。在此,Linux容器被定义为一个单一的操作系统镜像,该Linux容器可以共享安装标准Linux操作系统的第二宿主系统的内核,并在该内核上运行。以下结合图5示出的根据本发明的另一示例性实施例的用于运行开源鸿蒙系统的Linux容器化镜像文件的方法的工作流程图详细阐述步骤S1’。
[0066] 所述步骤S1’可以包括步骤S11’至S13’。在步骤S11’中,在第二宿主系统中安装Linux容器运行的依赖库liblxc。考虑到该依赖库liblxc通常并未编译到标准的Linux操作系统中,其可以通过输入相应的控制指令从共享库池中加载。
[0067] 在步骤S12’中,在所述第二宿主系统中下载Linux容器的标准库组件,并对所下载的Linux容器的标准库组件进行解压、编译和安装。所述标准库组件是一组用于控制Linux容器的标准工具,其例如包括用于开启Linux容器内的开源鸿蒙系统的LXC‑start‑n imageName命令、用于关闭Linux容器内的开源鸿蒙系统的LXC‑stop‑n imageName命令、用于登录开源鸿蒙系统的Linux容器的LXC‑attach imageName命令,等等。
[0068] 在步骤S13’中,查询并判断所安装的Linux容器的标准库组件的版本和第二宿主系统的Linux系统的内核支持状态是否适用。如果所安装的Linux容器的标准库组件的版本或第二宿主系统的Linux系统的内核支持状态不适用,则返回步骤S11’,在所述第二宿主系统中重新配置Linux容器的运行环境。
[0069] 在步骤S2’中,基于所述运行环境生成用于创建标准Linux容器的配置信息。所述配置信息例如可以包括所述运行环境中创建标准Linux容器的架构配置信息(例如kvm内核访问和系统位数等)、容器特性配置信息(例如Linux容器文件系统路径和默认用户名等)和/或网络配置信息(例如网络类型、网络地址和网络设置标识符等),等等。
[0070] 在步骤S3’中,下载和/或复制通过根据本发明的用于开发开源鸿蒙系统的Linux容器化镜像文件的方法生成的标准Linux容器化镜像文件。在此,可以通过第二宿主系统的通信网络下载所述标准Linux容器化镜像文件,可以从外接设备复制所述标准Linux容器化镜像文件。
[0071] 在步骤S4’中,在所述第二宿主系统的运行环境中基于所述配置信息运行所述开源鸿蒙系统的标准Linux容器化镜像文件。在此,可以基于所述配置信息为该Linux容器分配和共享该宿主系统的处理器和存储器等硬件资源和服务,例如为该Linux容器分配特定比例的CPU时间、GPU时间、NPU时间、内存大小等,又例如调用第二宿主系统的Wifi、蓝牙、声卡、显卡、USB等驱动硬件模块。还可以为该Linux容器提供独立的命名空间,例如网络、进程标识符PID、进程间通信IPC、外设挂载点MNT和/或统一数据传输系统UTS等。
[0072] 在运行所述开源鸿蒙系统的标准Linux容器化镜像文件时,例如可以使用所述标准库组件中的LXC‑start‑n imageName命令开启Linux容器内的开源鸿蒙系统,使用LXC‑stop‑n imageName命令关闭Linux容器内的开源鸿蒙系统,使用LXC‑attach imageName命令登录开源鸿蒙系统的Linux容器,并在登录后使用相应的命令开启、运行Linux容器内的开源鸿蒙系统的应用或服务,可选地还可以基于创建的自定义目录下载并安装第三方应用,从而实现与周边的IoT设备(例如移动终端、蓝牙耳机、智能手表、智能手环等)的通信连接、数据利用和控制,构建以该Linux容器为中心的IoT生态系统。可选地,也可以使用标准的shell命令对该Linux容器内的文件进行复制、删除和/或迁移等。
[0073] 根据本发明的当前实施例,在安装标准Linux操作系统的宿主系统上下载、安装并运行所生成的标准Linux容器化镜像文件,并利用宿主系统的内核和外设资源实现开源鸿蒙系统的功能应用,从而剥离开源鸿蒙系统的原始系统文件运行所依赖的硬件组件和服务,使得开源鸿蒙系统可以在安装各类操作系统的智能设备上快速地移植、部署和运行,推动了开源鸿蒙系统的快速市场化应用,并且开源鸿蒙系统的应用的开发不再与运行开源鸿蒙系统的硬件平台相关联,有效地节省了应用开发者的精力,尤其是开发者可以更加专注于上层的应用开发和迭代,例如开源鸿蒙系统的UI元素绘制和人机交互编码。
[0074] 另外,应注意到,在此描述的步骤序号并不必然代表先后顺序,而仅仅是一种附图标记,根据具体情况,顺序可以更改,只要能够实现本发明的技术目的即可。
[0075] 图6示出了根据本发明的一个示例性实施例的用于运行开源鸿蒙系统的Linux容器化镜像文件的系统2的示意性框图。
[0076] 如图6所示,所述系统2可以包括以下构件:
[0077] ‑运行环境配置模块21,其被配置用于在第二宿主系统上配置Linux容器的运行环境;
[0078] ‑配置信息生成模块22,其被配置用于基于所述运行环境生成用于创建标准Linux容器的配置信息;
[0079] ‑镜像文件接收模块23,其被配置用于下载和/或复制根据本发明的用于开发开源鸿蒙系统的Linux容器化镜像文件的方法生成的标准Linux容器化镜像文件;和[0080] ‑镜像文件运行模块24,其被配置用于在所述第二宿主系统的运行环境中基于所述配置信息运行所述开源鸿蒙系统的标准Linux容器化镜像文件。
[0081] 尽管在此详细描述了本发明的特定实施方式,但它们仅仅是为了解释的目的而给出的,而不应认为它们对本发明的范围构成限制。在不偏离本发明的核心和范围的前提下,可以提出各种替换方案和修改方案。

当前第1页 第1页 第2页 第3页