CN115981795A - 一种在安卓设备上通过容器实现系统隔离的方法 - Google Patents
一种在安卓设备上通过容器实现系统隔离的方法 Download PDFInfo
- Publication number
- CN115981795A CN115981795A CN202310126816.8A CN202310126816A CN115981795A CN 115981795 A CN115981795 A CN 115981795A CN 202310126816 A CN202310126816 A CN 202310126816A CN 115981795 A CN115981795 A CN 115981795A
- Authority
- CN
- China
- Prior art keywords
- container
- isolation
- containers
- subsystem
- android
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种在安卓设备上通过容器实现系统隔离的方法,包括步骤S1:安卓设备的Linux内核层通过namespace和cgroups机制,在Linux内核层之上实现多个容器并且由容器为应用层不同使用环境提供隔离的运行空间,容器将完整操作系统所需的资源进行分隔并且管理及协调对共享资源的访问。本发明公开的一种在安卓设备上通过容器实现系统隔离的方法,通过容器技术可以实现在一套物理硬件设备的情况下,按需虚拟出多个操作系统容器,利用虚拟化的隔离性特点实现系统级隔离,极大提高了系统间的隔离性和安全性,并且极大提高待机时间,有效增强设备的可用性。
Description
技术领域
本发明属于系统隔离技术领域,具体涉及一种在安卓设备上通过容器实现系统隔离的方法。
背景技术
近几年来5G通信技术和智能手机在我国得到了快速发展,由此也带动了以智能手机为核心的移动计算应用迅速普及。与此同时,随着行业应用的不断深入,一些对信息安全要求较高的行业,如政府、公安及司法等在使用移动应用过程中对设备提出了更高的行业安全要求,如需要对手机的工作环境和个人使用的生活环境进行区分和隔离,工作环境禁止接入互联网,禁止安装个人应用程序禁止复制工作文件等;个人生活环境除了需要与工作环境进行隔离外,没有其他任何限制。
为了实现以上需求,目前主流的技术手段包括通过在应用通过沙箱方式实现工作、个人环境隔离,其他方式包括KVM及XEN等。这些方式都存在一些明显缺陷,应用沙箱方式是在应用层面实现,隔离性较弱容易突破设定规则;全虚拟化技术同时运行多个系统,电池消耗较大,可用时间短等,且需要CPU支持,而且需要对内核做大量修改。
因此,针对上述问题,予以进一步改进。
发明内容
本发明的主要目的在于提供一种在安卓设备上通过容器实现系统隔离的方法,通过容器技术可以实现在一套物理硬件设备的情况下,按需虚拟出多个操作系统容器,利用虚拟化的隔离性特点实现系统级隔离,极大提高了系统间的隔离性和安全性,并且极大提高待机时间,有效增强设备的可用性。
为达到以上目的,本发明提供一种在安卓设备上通过容器实现系统隔离的方法,包括以下步骤:
步骤S1:安卓设备的Linux内核层通过namespace和cgroups机制,在Linux内核层之上实现多个(Android)容器并且由容器为应用层不同使用环境提供隔离的运行空间,容器将完整操作系统所需的资源进行分隔并且管理及协调对共享资源的访问;
步骤S2:安卓设备的Android框架层基于宿主系统和Linux内核层的接口实现对容器的管理;
步骤S3:对硬件及驱动、输出设备、输入设备和网络设备均进行虚拟化,从而实现以容器的方式在一个安卓设备上运行多个容器的子系统。
作为上述技术方案的进一步优选的技术方案,步骤S1中对于容器的生成具体实施为以下步骤:
步骤S1.1在宿主系统创建一个目录当做容器的根目录,将所有系统的相关系统资源复制到该容器(如init进程等)并且对相应的系统资源进行标注;
步骤S1.2:将宿主系统的system目录装载成容器的子系统的system分区;
步骤S1.3在宿主系统中再创建一个目录,然后把该目录装载成容器的子系统的data分区,启动容器前通过rootfs将新建的容器的根目录切换为根节点,并且通过cgroups读取配置文件,从而控制容器的子系统的资源访问权限,进而完成对一个容器的生成;
步骤S1.4:重复步骤S1.1-步骤S1.3生成预设数量的容器。
作为上述技术方案的进一步优选的技术方案,在步骤S1中,对于系统资源管理具体实施为:
通过cgroups实现基于进程组的资源管理框架,为特定的进程分配(可)使用的系统资源;
通过namespace将全局资源通过命名空间进行管理,通过将进程放到容器中,以实现对进程进行标注和隔离。
作为上述技术方案的进一步优选的技术方案,在步骤S2中容器的管理包括容器切换,其中:
当容器从前台切到后台时,给当前容器的子系统设置退出标志,清理各种共享系统服务(如显示服务)并且停止并记录当前的系统服务和各种进程,然后获取下个选择容器的子系统namespace的资源并且设置为激活状态,调用系统的PowerManagerService唤醒该容器的子系统,启动选择容器的子系统所需的系统服务和各种进程并且激活共享系统服务,以完成容器切换,从而通过停止后台容器的系统服务和各种进程实现硬件设备的整体低消耗状态。
作为上述技术方案的进一步优选的技术方案,在步骤S3中,对硬件及驱动进行虚拟化具体实施为:
修改重构Binder驱动的数据结构,使得每个容器均有独立的标志,从而使得宿主系统正确的为相应的容器的子系统提供驱动服务。
作为上述技术方案的进一步优选的技术方案,在步骤S3中,对输出设备的虚拟化具体实施为:
在修改重构后的Binder驱动的基础之上进行输出设备虚拟化,将容器的输出请求提交给宿主系统进行输出,同时将无需输出的容器的输出内容保存下来,当需要容器切换时再进行交换输出。
作为上述技术方案的进一步优选的技术方案,在步骤S3中,对输入设备的虚拟化具体实施为:
修改输入设备驱动的数据结构,以新增不同容器的标识,从而在宿主系统中阻截非当前容器的子系统的输入事件
作为上述技术方案的进一步优选的技术方案,在步骤S3中,对网络设备的虚拟化具体实施为:
创建虚拟网卡并且分别连接宿主系统和容器,通过路由转发数据实现连通网络,并且构造一个数据结构提供给网络设备的相关服务,从而使得各种网络服务获取相应的网络信息并且通知网络的连通信息。
附图说明
图1是本发明的一种在安卓设备上通过容器实现系统隔离的方法的系统架构示意图。
图2是本发明的一种在安卓设备上通过容器实现系统隔离的方法的容器生成示意图。
图3是本发明的一种在安卓设备上通过容器实现系统隔离的方法的硬件及驱动虚拟化示意图。
具体实施方式
以下描述用于揭露本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变型。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案。
在本发明的优选实施例中,本领域技术人员应注意,本发明所涉及的安卓设备等可被视为现有技术。
优选实施例。
本发明公开了一种在安卓设备上通过容器实现系统隔离的方法,包括以下步骤:
步骤S1:安卓设备的Linux内核层通过namespace和cgroups机制,在Linux内核层之上实现多个(Android)容器并且由容器为应用层不同使用环境提供隔离的运行空间,容器将完整操作系统所需的资源进行分隔并且管理及协调对共享资源的访问;
值得一提的是,为了在同一个设备的Linux系统上运行多个Android容器,需要首先在Linux内核上生成多个容器,容器高效地将完整操作系统所需资源划进行分隔,并管理及协调隔离容器对的共享资源的访问。由于多个容器与宿主系统共同使用一个Linux内核,因此性能损耗小,且容器可以在CPU本地运行,不需要其他虚拟化机制,同时也避免了准虚拟化和系统替换的复杂性。
步骤S2:安卓设备的Android框架层基于宿主系统和Linux内核层的接口实现对容器的管理;
步骤S3:对硬件及驱动、输出设备、输入设备和网络设备均进行虚拟化,从而实现以容器的方式在一个安卓设备上运行多个容器的子系统。
值得一提的是,本发明专利申请涉及的安卓设备等技术特征应被视为现有技术,这些技术特征的具体结构、工作原理以及可能涉及到的控制方式、空间布置方式采用本领域的常规选择即可,不应被视为本发明专利的发明点所在,本发明专利不做进一步具体展开详述。
具体的是,步骤S1中对于容器的生成具体实施为以下步骤,如图2所示,:
步骤S1.1在宿主系统创建一个目录当做容器的根目录,将所有系统的相关系统资源复制到该容器(如init进程等)并且对相应的系统资源进行标注;
步骤S1.2:将宿主系统的system目录装载成容器的子系统的system分区;
步骤S1.3在宿主系统中再创建一个目录,然后把该目录装载成容器的子系统的data分区,启动容器前通过rootfs将新建的容器的根目录切换为根节点,并且通过cgroups读取配置文件,从而控制容器的子系统的资源访问权限,进而完成对一个容器的生成;
步骤S1.4:重复步骤S1.1-步骤S1.3生成预设数量的容器。
更具体的是,在步骤S1中,对于系统资源管理具体实施为:
通过cgroups实现基于进程组的资源管理框架,为特定的进程分配(可)使用的系统资源;
通过namespace将全局资源通过命名空间进行管理,通过将进程放到容器中,以实现对进程进行标注和隔离。
进一步的是,在步骤S2中容器的管理包括容器切换,其中:
(由于在宿主系统上启动了若干Android的实例,系统对各种硬件如CPU、电池等的消耗比单系统高了许多,因此必须对切换到后台的容器进行休眠管理,阻止其进一步对资源进行消耗)当容器从前台切到后台时,给当前容器的子系统设置退出标志,清理各种共享系统服务(如显示服务)并且停止并记录当前的系统服务和各种进程,然后获取下个选择容器的子系统namespace的资源并且设置为激活状态,调用系统的PowerManagerService唤醒该容器的子系统,启动选择容器的子系统所需的系统服务和各种进程并且激活共享系统服务,以完成容器切换,从而通过停止后台容器的系统服务和各种进程实现硬件设备的整体低消耗状态。
更进一步的是,在步骤S3中,对硬件及驱动进行虚拟化具体实施为,如图3所示,:
(由于启动多个容器必然会有多个系统运行,因此必须对硬件的驱动进行虚拟化,否则可能出现类似多个系统抢占屏幕等情况。通常硬件虚拟化可以在两个层面实现,一个是Linux内核层,这是正常实现驱动硬件的方式,但在硬件层实现需要调整所有驱动源代码,成本高昂且难以获取驱动源代码,因此本发明在Android的服务层实现驱动的虚拟化。而Binder设备的虚拟化则是实现的关键。Binder驱动是Android系统的核心,因为重要的系统服务都会注册到Binder驱动中,需要将容器系统服务注册到宿主的Binder驱动中的,但这就会导致宿主系统无法区分为哪个容器提供驱动服务,因此需要)修改重构Binder驱动的数据结构,使得每个容器均有独立的标志,从而使得宿主系统正确的为相应的容器的子系统提供驱动服务。
优选地,在步骤S3中,对输出设备的虚拟化具体实施为:
在修改重构后的Binder驱动的基础之上进行输出设备虚拟化,将容器的输出请求提交给宿主系统进行输出,同时将无需输出的容器的输出内容保存下来,当需要容器切换时再进行交换输出(可以在修改后的Binder的驱动基础之上实现。以显示驱动为例,Android显示的核心是SurfaceFlinger,所有显示内容最终都是由SF交给GPU进行绘制。因此需要做的是真正的SF还是由宿主机实现,但因为已经修改过Binder驱动,每个容器的显示请求都可以被正确识别,因此只需要将容器显示请求提交给宿主系统进行显示,同时将无需显示的容器显示内容保存下来;当需要切换时再进行交换)。
优选地,在步骤S3中,对输入设备的虚拟化具体实施为:
修改输入设备驱动的数据结构,以新增不同容器的标识,从而在宿主系统中阻截非当前容器的子系统的输入事件(如触摸屏驱动是通用的,实现相对比较简单,主要实现方式是修改触摸驱动的数据结构,新增不同容器的标识,在宿主系统中阻截非当前系统的事件即可)。
优选地,在步骤S3中,对网络设备的虚拟化具体实施为:
创建虚拟网卡并且分别连接宿主系统和容器,通过路由转发数据实现连通网络,并且构造一个数据结构提供给网络设备的相关服务,从而使得各种网络服务获取相应的网络信息并且通知网络的连通信息(则通过创建虚拟网卡,分别连接宿主系统和容器,通过路由转发数据实现连通网络。但存在的问题是由于通过路由转发数据使得各种网络服务无法直接获取相应的网络信息,如连接哪个网络通道,ip地址或路由信息等,因此还需要构造一个数据结构提供给设备的相关服务,通知网络的连通信息)。
优选地,本发明基于Linux的容器技术在Android系统层实现系统的容器化,通过虚拟化技术支持多个Android容器子系统高效同时运行。本发明基于Linux原生namespace、cgroup技术实现,多个Android共享一个Linux内核,因此Android系统的虚拟化是从Android底层的Linux开始,复制系统启动的init进程,使得在用户态空间,存在多个用户态共用同一个系统内核,各个init根进程各自启动系统核心服务,及挂载文件系统,之后再完成创建两个Android的用户态,实现Android的多容器子系统。
整个系统架构如图1所示共分四层,自底向上分别为硬件层、Linux内核层、Android框架层及容器应用层。其中在Linux内核层实现了最主要的功能:
通过Linux的namespace和cgroups机制,在Linux内核之上实现多个Android容器,由容器为前端不同使用环境提供隔离的运行空间。
提供Android层容器创建、销毁及启停等功能。
底层硬件资源如CPU、存储、屏幕或其他传感器等公共资源的虚拟化和复用。
Android框架层则基于宿主系统和Linux的接口实现对容器的管理和对容器子系统的安全功能定制,如工作系统禁用WiFi和蓝牙,生活系统不做管控等。
应用层则完全设计成透明模式,与正常系统一样使用,但两个容器间是完全隔离不可访问的。
本发明的优点为:
1、在一个硬件设备上同时隔离运行多Android容器的子系统。
2、每个容器相互隔离、互不影响,且容器中的数据和程序也互相隔离,实现了工作系统和生活系统存的彻底隔绝。
3、当一个生活系统的容器安装恶意应用,其他容器安全性完全不受到影响。
4、此提高了系统的安全性。
5、设备效率更高,电池待机时间更长。
对于本领域的技术人员而言,依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围。
Claims (8)
1.一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,包括以下步骤:
步骤S1:安卓设备的Linux内核层通过namespace和cgroups机制,在Linux内核层之上实现多个容器并且由容器为应用层不同使用环境提供隔离的运行空间,容器将完整操作系统所需的资源进行分隔并且管理及协调对共享资源的访问;
步骤S2:安卓设备的Android框架层基于宿主系统和Linux内核层的接口实现对容器的管理;
步骤S3:对硬件及驱动、输出设备、输入设备和网络设备均进行虚拟化,从而实现以容器的方式在一个安卓设备上运行多个容器的子系统。
2.根据权利要求1所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,步骤S1中对于容器的生成具体实施为以下步骤:
步骤S1.1在宿主系统创建一个目录当做容器的根目录,将所有系统的相关系统资源复制到该容器并且对相应的系统资源进行标注;
步骤S1.2:将宿主系统的system目录装载成容器的子系统的system分区;
步骤S1.3在宿主系统中再创建一个目录,然后把该目录装载成容器的子系统的data分区,启动容器前通过rootfs将新建的容器的根目录切换为根节点,并且通过cgroups读取配置文件,从而控制容器的子系统的资源访问权限,进而完成对一个容器的生成;
步骤S1.4:重复步骤S1.1-步骤S1.3生成预设数量的容器。
3.根据权利要求2所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,在步骤S1中,对于系统资源管理具体实施为:
通过cgroups实现基于进程组的资源管理框架,为特定的进程分配使用的系统资源;
通过namespace将全局资源通过命名空间进行管理,通过将进程放到容器中,以实现对进程进行标注和隔离。
4.根据权利要求3所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,在步骤S2中容器的管理包括容器切换,其中:
当容器从前台切到后台时,给当前容器的子系统设置退出标志,清理各种共享系统服务并且停止并记录当前的系统服务和各种进程,然后获取下个选择容器的子系统namespace的资源并且设置为激活状态,调用系统的PowerManagerService唤醒该容器的子系统,启动选择容器的子系统所需的系统服务和各种进程并且激活共享系统服务,以完成容器切换,从而通过停止后台容器的系统服务和各种进程实现硬件设备的整体低消耗状态。
5.根据权利要求4所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,在步骤S3中,对硬件及驱动进行虚拟化具体实施为:
修改重构Binder驱动的数据结构,使得每个容器均有独立的标志,从而使得宿主系统正确的为相应的容器的子系统提供驱动服务。
6.根据权利要求5所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,在步骤S3中,对输出设备的虚拟化具体实施为:
在修改重构后的Binder驱动的基础之上进行输出设备虚拟化,将容器的输出请求提交给宿主系统进行输出,同时将无需输出的容器的输出内容保存下来,当需要容器切换时再进行交换输出。
7.根据权利要求6所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,在步骤S3中,对输入设备的虚拟化具体实施为:
修改输入设备驱动的数据结构,以新增不同容器的标识,从而在宿主系统中阻截非当前容器的子系统的输入事件。
8.根据权利要求7所述的一种在安卓设备上通过容器实现系统隔离的方法,其特征在于,在步骤S3中,对网络设备的虚拟化具体实施为:
创建虚拟网卡并且分别连接宿主系统和容器,通过路由转发数据实现连通网络,并且构造一个数据结构提供给网络设备的相关服务,从而使得各种网络服务获取相应的网络信息并且通知网络的连通信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310126816.8A CN115981795B (zh) | 2023-02-17 | 2023-02-17 | 一种在安卓设备上通过容器实现系统隔离的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310126816.8A CN115981795B (zh) | 2023-02-17 | 2023-02-17 | 一种在安卓设备上通过容器实现系统隔离的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115981795A true CN115981795A (zh) | 2023-04-18 |
CN115981795B CN115981795B (zh) | 2023-08-25 |
Family
ID=85968166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310126816.8A Active CN115981795B (zh) | 2023-02-17 | 2023-02-17 | 一种在安卓设备上通过容器实现系统隔离的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981795B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446159A (zh) * | 2017-02-16 | 2018-08-24 | 中标软件有限公司 | 基于Docker容器的移动端双系统实现系统及方法 |
CN114254305A (zh) * | 2021-12-21 | 2022-03-29 | 北京蔚领时代科技有限公司 | Android系统应用隔离方法及装置 |
CN115774603A (zh) * | 2022-12-23 | 2023-03-10 | 中国电子科技集团公司第五十四研究所 | 一种基于命名空间划分的安卓隔离方法 |
-
2023
- 2023-02-17 CN CN202310126816.8A patent/CN115981795B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446159A (zh) * | 2017-02-16 | 2018-08-24 | 中标软件有限公司 | 基于Docker容器的移动端双系统实现系统及方法 |
CN114254305A (zh) * | 2021-12-21 | 2022-03-29 | 北京蔚领时代科技有限公司 | Android系统应用隔离方法及装置 |
CN115774603A (zh) * | 2022-12-23 | 2023-03-10 | 中国电子科技集团公司第五十四研究所 | 一种基于命名空间划分的安卓隔离方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115981795B (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3514689B1 (en) | Memory management method and apparatus | |
US7421533B2 (en) | Method to manage memory in a platform with virtual machines | |
US9164853B2 (en) | Multi-core re-initialization failure control system | |
US8381002B2 (en) | Transparently increasing power savings in a power management environment | |
CN101493781B (zh) | 一种虚拟机系统及其启动方法 | |
KR20070100367A (ko) | 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템 | |
CN104598294B (zh) | 用于移动设备的高效安全的虚拟化方法及其设备 | |
JP2000330806A (ja) | 計算機システム | |
CN102053857A (zh) | 虚拟机器的管理装置及其相关切换方法 | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
CN1658185A (zh) | 相互独立地共存多个操作系统的计算机系统与其切换方法 | |
CN102110196A (zh) | 并行运行多用户操作系统间的数据安全传输方法及系统 | |
US9959134B2 (en) | Request processing using VM functions | |
CN109474467B (zh) | 网络自动化管理方法、装置、存储介质及电子设备 | |
CN102779074A (zh) | 基于内存空洞机制的虚拟机内存资源分配方法 | |
CN101488113B (zh) | 一种设备驱动域的实现方法、系统及装置 | |
CN107220102A (zh) | 虚拟机的休眠与唤醒方法及系统 | |
CN106844008A (zh) | 一种数据操作的方法、设备及系统 | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
CN111213127A (zh) | 用于直接分配的设备的虚拟化操作 | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
CN103049546B (zh) | 一种管理、访问系统日志的方法和装置 | |
CN108304248A (zh) | 一种多系统虚拟化的移动设备 | |
US20140245291A1 (en) | Sharing devices assigned to virtual machines using runtime exclusion |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |