首页 / 专利库 / 软件 / 引导装载程序 / 一种多Android系统的容器自动创建及其启动方法

一种多Android系统的容器自动创建及其启动方法

阅读:331发布:2020-05-12

专利汇可以提供一种多Android系统的容器自动创建及其启动方法专利检索,专利查询,专利分析的服务。并且本 发明 基于Linux 内核 容器技术和显示设备复用技术,具体涉及一种系统级容器技术的多Android系统的容器自动创建及其启动方法。本发明在Linux内核中自动创建容器,启动容器中的系统,确保每个容器独立运行一个Android系统。实现容器管理主 进程 和容器管理从进程的通信,在此 基础 上,实现容器管理主进程向容器管理从进程发送创建和启动消息,容器管理从进程接收并处理消息来完成的。本发明提供的多Android系统的创建及其启动方法,实现了自行地在Linux内核中创建,和启动容器;再次启动设备,容器管理模 块 根据系统中所创建的容器,启动容器。,下面是一种多Android系统的容器自动创建及其启动方法专利的具体信息内容。

1.一种多Android系统的容器自动创建及其启动方法,其过程如下:
步骤1、启动Android设备,待Linux内核启动完成后;init进程运行,解析脚本文件启动系统进程,容器管理主进程和容器管理从进程此时启动,统称为容器管理模,为后续系统启动作好准备;启动系统进程时主进程阻塞等待从进程准备就绪,当从进程完成初始化后唤醒主进程;该步骤包括以下分步骤:
步骤1-1、启动Android设备,进入引导程序,由引导程序装载Linux内核,内核启动完成后,根命名空间的init进程开始解析init.rc和其他启动脚本,启动系统服务进程;
步骤1-2、修改init.rc启动脚本,使得主进程autostart_pro以守护进程的形式运行在根命名空间;
步骤1-3、再次修改init.rc启动脚本,使得从进程container_pro以守护进程的形式运行在根命名空间;
步骤1-4、当从进程初始化完成之后,向主进程发送消息,表示准备就绪,唤醒主进程;
步骤2、主进程唤醒后读取容器系统配置文件,根据配置文件判断容器是否存在,如果容器不存在,则主进程向从进程发送容器创建消息,从进程在Linux内核中创建容器;
否则主进程向从进程发送容器启动消息,从进程根据发送过来的消息更新配置文件;
然后准备init进程运行环境并创建容器init进程,再结合Linux内核资源隔离机制和空间命名机制将init进程移入命名空间中运行,init进程解析启动脚本,逐步完成容器启动;
该步骤包括以下分步骤:
步骤2-1、主进程唤醒后读取容器系统配置文件,根据配置文件判断容器是否存在,并向从进程发送创建或启动消息;
若不存在,表明容器并未创建,主进程将创建消息中发送给从进程,从进程接受消息并解其,得到创建容器消息实体,进行创建容器:
a调用系统函数创建容器根目录;
b创建容器所必须的配置文件,并初始化配置文件;
否则,主进程将包装的启动消息发送给从进程,从进程解包发送过来的消息,得到启动容器消息实体,开始启动容器;
步骤2-2、解析启动消息,设置容器的内核资源隔离参数,更新配置文件,确保每个容器在完全独立的平台上执行;创建newcgroup,在所创建的newcgroup中初始化容器:
a为容器挂载文件系统,首先在容器根目录下挂载tmpfs用于容器的运行;然后对data目录进行绑定映射;接着映射叠加system目录,最后为容器挂载sd卡;
b将由内核生成的/proc和/sbin目录从根域中拷贝到容器中;
c将配置文件读取到内存中,根据配置文件开启资源隔离机制,设置父子进程隔离属性;
d将容器启动脚本拷贝到容器中;
e创建容器子进程,容器子进程进一步设置容器init进程环境,改变容器根目录和工作路径,将init进程实体加载到子进程中,运行init进程;
f创建newcgroup,将init进程移入其中,作为容器的首进程,保证容器所有进程都完全在所属的newcgroup中运行;
步骤3:待步骤2完成后,根据配置文件信息启动一个容器在前台,其余容器运行在后台;前台容器获取显示设备,初始化系统桌面;后台容器获取虚拟的显示设备,完成后台容器启动;至此,多个容器创建并启动完成,处于前台的Android系统进入运行状态。
2.如权利要求1所述多Android系统的容器自动创建及其启动方法,所述步骤3具体如下:
根据配置文件判断所要启动的容器处于前台还是后台;
若为前台容器,则进入:将所创建容器子进程进程号写入表示设备命名空间的文件中,触发容器获取显存设备;开始执行容器内init进程,init进程解析步骤2中的启动脚本,启动系统服务进程以及zygote进程,zygote进程启动Android Framework层systemserver系统服务进程,再由systemserver系统服务进程启动各个Android服务,最后获取显示设备启动桌面;Launcher完成后通知从进程,表明前台容器启动完成;
否则:执行容器内init进程,init进程解析启动脚本,启动系统服务进程以及zygote进程,zygote进程启动AndroidFramework层systemserver系统服务进程,再由systemserver系统服务进程启动各个Android服务,最后获取虚拟现实设备,完成后台容器启动。

说明书全文

一种多Android系统的容器自动创建及其启动方法

技术领域

[0001] 本发明基于Linux内核容器技术和显示设备复用技术,具体涉及一种系统级容器技术的多Android系统的容器自动创建及其启动方法。

背景技术

[0002] 目前,携带自己的设备办公BYOD(Bring Your Own Device)已成为潮流,但存在的最大问题是安全问题。于是,为了满足用户的需求,实现多个OS(OperatingSystem)同时运行在一个设备中成为热点研究。
[0003] 虚拟化技术旨在一个单一的设备上同时运行两个或多个OS系统,从而解决BYOD带来的安全问题。虚拟化技术分为传统的虚拟化技术和容器技术,由于传统的虚拟化技术都基于虚拟化硬件仿真机制,对系统要求很高。
[0004] 容器是一种轻量级的虚拟化技术,Linux容器在v2.6.29版本之后就加入到了内核之中。它可以提供资源的隔离,分为应用级和系统级安全容器。应用级的容器技术在容器与容器之间提供了共享机制,容器并没有完全隔离,依然存在着很大的安全隐患。相比应用级容器技术,系统级容器技术更加安全,它基于Linux内核的Cgroup和Namespace机制实现容器技术,使多个Android系统可以同时在相同的Linux内核之上隔离运行,以此提高系统安全性,并满足多样化的需求。但是,需要建立一套机制对这些容器进行自动的创建、启动和管理,才能够为多Android的运行提供支持。

发明内容

[0005] 针对上述存在问题或不足,本发明提供了一种多Android系统的容器自动创建及其启动方法。其基于Linux内核容器技术和显示设备复用技术实现多Android系统的管理。
[0006] 本发明主要包括容器的创建和启动,其过程如下:
[0007] 步骤1、启动Android设备,待Linux内核启动完成后;init进程运行,解析脚本文件启动系统进程,容器管理主进程和容器管理从进程此时启动,统称为容器管理模,为后续系统启动作好准备;启动系统进程时主进程阻塞等待从进程准备就绪,当从进程完成初始化后唤醒主进程;
[0008] 步骤2、主进程唤醒后读取容器系统配置文件,根据配置文件判断容器是否存在,如果容器不存在,则主进程向从进程发送容器创建消息,从进程在Linux内核中创建容器;
[0009] 否则主进程向从进程发送容器启动消息,从进程根据发送过来的消息更新配置文件;然后准备init进程运行环境并创建容器init进程,再结合Linux内核资源隔离机制和空间命名机制将init进程移入命名空间中运行,init进程解析启动脚本,逐步完成容器启动;
[0010] 步骤3:待步骤2完成后,根据配置文件信息启动一个容器在前台,其余容器运行在后台;
[0011] 前台容器获取显示设备,初始化系统桌面;后台容器获取虚拟的显示设备,完成后台容器启动;至此,多个容器创建并启动完成,处于前台的Android系统进入运行状态。
[0012] 所述步骤2中配置文件为容器启动参数,由主进程将启动信息包装到命令中发送给从进程,再由从进程写入到文件中来完成。
[0013] 本发明在Linux内核中自动创建容器,启动容器中的系统,确保每个容器独立运行一个Android系统。每个容器独立运行一个Android系统。在设备首次启动时,容器管理模块创建并启动多个容器中的系统;待关机后再次启动设备时,容器管理模块根据系统中所创建的容器,启动容器中的系统。
[0014] 通过容器管理模块的容器管理主进程autostart_pro检测容器是否存在,若不存在向容器管理从进程container_pro发送创建消息,从进程执行容器创建;否则,向其发送容器启动消息,执行容器启动。
[0015] 具体是在容器管理主进程和容器管理从进程通信的基础上,通过容器管理主进程向容器管理从进程发送创建和启动消息,容器管理从进程接收并处理消息来完成的。
[0016] 综上所述,本发明提供的多Android系统的创建及其启动方法,自行地在Linux内核中创建,和启动容器;再次启动设备,容器管理模块根据系统中所创建的容器,启动容器。附图说明
[0017] 图1为本发明提供的多Android系统容器管理模块交互图;
[0018] 图2为本发明提供的多Android系统启动详细流程图
[0019] 图3为本发明提供的多Android系统前后台启动判断流程图。

具体实施方式

[0020] 下面结合附图和具体的实施例对本发明做进一步的说明。
[0021] 本发明基于Linux内核容器技术和显示设备复用技术,实现多Android系统的创建,和启动。容器的创建和启动由容器管理模块完成,容器管理主进程和容器管理从进程。容器管理主进程向容器管理从进程发送消息,从进程根据接收的消息,完成创建和启动过程。具体包括如下步骤:
[0022] 步骤1、启动容器管理模块,如图1所示。用进程间通信机制控制主、从进程之间通信。当主进程完成初始化后,主动地阻塞其,等待从进程唤醒;在从进程初始化后,向主进程发送消息,唤醒主进程。
[0023] 步骤1-1、启动Android设备,进入引导程序,由引导程序装载Linux内核,内核启动完成后,根命名空间的init进程开始解析init.rc和其他启动脚本,启动系统服务进程;
[0024] 步骤1-2、修改init.rc启动脚本,使得主进程autostart_pro以守护进程的形式运行在根命名空间;
[0025] 步骤1-3、再次修改init.rc启动脚本,使得从进程container_pro以守护进程的形式运行在根命名空间;
[0026] 步骤1-4、当从进程初始化完成之后,向主进程发送消息,表示准备就绪,唤醒主进程。
[0027] 步骤2、创建及启动容器,如图2所示。
[0028] 步骤2-1、主进程唤醒后读取容器系统配置文件,根据配置文件判断容器是否存在,并向从进程发送创建或启动消息;
[0029] 若不存在,表明容器并未创建,主进程将创建消息中发送给从进程,从进程接受消息并解其,得到创建容器消息实体,进行创建容器:
[0030] a调用系统函数创建容器根目录;
[0031] b创建容器所必须的配置文件,并初始化配置文件;
[0032] 否则,主进程将包装的启动消息发送给从进程,从进程解包发送过来的消息,得到启动容器消息实体,开始启动容器;
[0033] 步骤2-2、解析启动消息,设置容器的内核资源隔离参数,更新配置文件,确保每个容器在完全独立的平台上执行;创建newcgroup,在所创建的newcgroup中初始化容器:
[0034] a.设置容器的内核资源隔离参数,更新配置文件;
[0035] b为容器挂载文件系统,首先在容器根目录下挂载tmpfs用于容器的运行;然后对data目录进行绑定映射;接着映射叠加system目录,最后为容器挂载sd卡;
[0036] c将由内核生成的/root和/sbin目录从根域中拷贝到容器中;
[0037] d将配置文件读取到内存中,根据配置文件开启资源隔离机制,设置父子进程隔离属性;
[0038] e将容器启动脚本拷贝到容器中;
[0039] f创建容器子进程,容器子进程进一步设置容器init进程环境,改变容器根目录和工作路径,将init进程实体加载到子进程中,运行init进程;
[0040] g创建newcgroup,将init进程移入其中,进一步设置init进程执行环境,使作为容器的首进程执行,保证容器所有进程都完全在所属的newcgroup中运行。
[0041] 通过步骤2-2d开启的内核资源隔离机制实现了步骤2-2g的技术效果;
[0042] 通过步骤2-2e实现了容器在启动过程中根据定制的启动脚本启动系统服务;
[0043] 步骤3:根据配置文件判断所要启动的容器处于前台还是后台,如图3所示;
[0044] 若为前台容器,则进入:将所创建容器子进程进程号写入表示设备命名空间的文件中,触发容器获取显存设备;开始执行容器内init进程,init进程解析步骤2中的启动脚本,启动系统服务进程以及zygote进程,zygote进程启动Android  Framework层systemserver系统服务进程,再由systemserver系统服务进程启动各个Android服务,最后获取显示设备,启动桌面;Launcher完成后通知从进程,表明前台容器启动完成;
[0045] 否则:执行容器内init进程,init进程解析启动脚本,启动系统服务进程以及zygote进程,zygote进程启动AndroidFramework层systemserver系统服务进程,再由systemserver系统服务进程启动各个Android服务,最后获取虚拟的显示设备,完成后台容器启动。
[0046] 至此,多容器启动完成。
[0047] 综上所述,本发明提出了一种基于Linux内核容器技术和framebuffer设备复用技术的多Android系统之间的创建,启动方法。通过此方法,在手机首次启动时,容器管理模块创建并启动多个容器中的系统;待关机后再次启动手机,容器管理模块根据系统中所创建的容器,启动容器中的系统。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈