CN111367854B - 一种多容器根文件***的构建方法 - Google Patents
一种多容器根文件***的构建方法 Download PDFInfo
- Publication number
- CN111367854B CN111367854B CN201811590027.5A CN201811590027A CN111367854B CN 111367854 B CN111367854 B CN 111367854B CN 201811590027 A CN201811590027 A CN 201811590027A CN 111367854 B CN111367854 B CN 111367854B
- Authority
- CN
- China
- Prior art keywords
- root
- partition
- file system
- root file
- file
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种多容器根文件***的构建方法,包括:将用于实现多容器的多***的根文件***文件保存在根文件***分区中;其中,所述多***的ROOT***文件保存在根文件***分区中新创建的一个目录下,所述多***的前台***文件保存在根文件***分区中新创建的另一个目录下,在***内核代码中指定设备上电后加载多***的ROOT***所在目录下的初始化init程序。在***启动时,直接加载***内核和ROOT***。应用本申请,能够更高效地利用LXC创建多***。
Description
技术领域
本申请涉及Linux***技术,特别涉及一种多容器根文件***的构建方法。
背景技术
Linux容器(Linux Container,LXC)技术是操作***级虚拟化在单个Linux主机上提供多个独立Linux环境的技术。容器使用Linux内核特性,例如名称空间、Apparmor、SELinux概要文件、chroot和CGroups来提供类似VM的隔离环境。
当前利用LXC技术构建的多容器方案中,一般做法是在单***根文件***分区之外,额外增加一个分区A,用于存放多个***的根文件***文件。其中,多个***的根文件***文件具体包括:后台运行的ROOT***的根文件***和对应的多个前台***的根***文件,ROOT***是用户不可见的后台***,对于多个***只需要一个ROOT***,前台***是用户可见的。例如,当需要创建工作区和生活区两个***时,额外增加的分区中存放的多个***的根文件***文件包括ROOT***的根文件***、对应于工作区的前台***的根文件***和对应于生活区的前台***的根文件***。
采用上述多容器的根文件***构建方案的话,***启动流程就是先加载运行单***根文件***分区文件,然后通过switch_root切换到新分区A的根目录,后面再通过LXC来创建多个容器。具体启动流程包括(以建立双***环境为例说明):
1.上电进入bootloader引导程序,然后加载内核和单***根文件***分区中的ramdisk(根文件***),该单***的根文件***的init程序是shell脚本,主要工作是:
a.准备双***root***的根文件***,即将root***的根文件***文件拷贝到内存文件***中;
b.准备双***工作区和生活区(或者更多***)的根文件***,即将工作区和生活区相应的根文件***文件拷贝到内存文件***中;
c.通过switch_root命令切换单***根文件***到root***的根文件***,同时开始执行root***的init程序;
2.切换根文件***到root***后,init程序开始执行,解析init.rc,启动一些基础的本地服务进程,包括vboxd(一个创建容器的本地服务程序);
3.Vboxd会创建出工作区和生活区两个***(或者更多***)。
至此,启动流程结束,创建出两个***。
上述多容器的根文件***构建方案中存在如下问题:
1、首先存在安全性的问题,通过switch_root切换到新分区根目录这个过程,按照目前的开源代码是没有进行安全启动检查,因此,安全性存在隐患;而如果增加安全启动检查,则需要对LXC开源代码进行修改;
2、其次,上述方案需要新增加一个分区A,将占用更多空间,而且***升级过程变得复杂,升级包变得更大;
3、最后,启动时额外增加了一个步骤,因此,启动时间也进一步拉长。
发明内容
本申请提供一种多容器根文件***的构建方法,能够更高效地利用LXC创建多***。
为实现上述目的,本申请采用如下技术方案:
一种多容器根文件***的构建方法,包括:
将用于实现多容器的多***的根文件***文件与单***根文件***文件一同保存在根文件***分区中;其中,所述多***的ROOT***文件保存在根文件***分区中新创建的一个目录下,所述多***的各前台***文件分别保存在根文件***分区中新创建的其他目录下,在***内核代码中指定设备上电后加载所述ROOT***所在目录下的初始化init程序;
在设备上电启动时,直接加载***内核和ROOT***。
较佳地,将所述ROOT***中的system内容保存在system分区中,和/或,将所述ROOT***中的vendor内容保存在vendor分区中。
由上述技术方案可见,本申请中,将用于实现多容器的多***的根文件***文件保存在根文件***分区中;其中,所述多***的ROOT***文件保存在根文件***分区中新创建的一个目录下,所述多***的前台***文件保存在根文件***分区中新创建的另一个目录下,在***内核代码中指定设备上电后加载所述ROOT***所在目录下的初始化init程序。在***启动时,直接加载***内核和ROOT***。通过上述处理,一方面不需要额外的分区存储多***的根文件***文件,另一方面在设备上电启动时不需要加载单***根文件***,节省了启动时间,也不需要通过switch_root进行切换,避免了安全性问题。
附图说明
图1为按照现有方式构建多容器根文件***时的分区表;
图2为按照本申请方式构建多容器根文件***时的分区表。
具体实施方式
为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。
在背景技术中的多容器根文件***的构建中,为根文件***设立了两个分区,一个分区用于保存单***根文件***文件,另一个分区用于保存多***的根文件***文件。具体分区表如下图1所示。在图1中,kernel分区用于存储Linux内核和单***的根文件***文件;rootfs分区用于存储多***的根***文件;system表示system分区,vendor表示vendor分区。
本申请中,对上述分区方案进行了改进,根文件***分区采用与单***相同的方式,不再为根文件***设立两个分区,而是仅设立一个分区,在这一个分区中保存单***根文件***文件以及用于实现多容器的多***的根文件***文件,如图2所示。在图2中,kernel分区和rootfs分区合并,用于保存Linux内核、单***根文件***文件以及用于实现多容器的多***的根文件***文件。其中,单***根文件***仍然保存在根目录下,多***的根文件***文件保存在其他目录下,具体地,可以将多***的ROOT***文件保存在该分区的一个新建目录下,将多***的各个前台***文件分别保存在其他新建目录下,一个新建目录下保存一个前台***文件。在内核代码中指定设备上电后加载ROOT***所在目录下的init程序,也就是ROOT***的init程序。接下来,在设备上电启动时,直接加载***内核和ROOT***的init程序。
通过LXC的升级将上述根文件***的构建方式写入设备中,下面给出基于上述根文件***构建方式下的多容器启动流程,具体包括(仍然以工作区和生活区的双***为例):
1.上电进入bootloader引导程序,然后加载内核和ramdisk(根文件***)的init程序;
2.Root***下的init程序会解析init.rc,启动基础的本地服务进程,包括vboxd;
3.vboxd会创建出工作区和生活区两个***(或者更多***)。
如上,在根文件***结构上,不需要额外的分区存储多***的根文件***文件;在多容器启动时,不需要加载单***根文件***,节省了启动时间,也不需要通过switch_root进行切换,避免了安全性问题,从而更高效地利用LXC创建多***。
另外,考虑到将上述根文件***的构建方式进一步与***版本和芯片平台的不同解耦,使得***版本和芯片平台进行修改或改进时不需要修改上述根文件***内容,优选地,可以将ROOT***中的system内容保存在system分区中,和/或,将ROOT***中的vendor内容保存在vendor分区中。如图2中system分区和vendor分区所示。由于system内容在***版本发生改变时需要修改,而vendor内容在芯片平台发生变化或修改时也需要随之修改,通过上述对system和vendor内容的迁移,使***版本和/或芯片平台发生改变时,不需要修改ROOT***文件,从而不需要对根文件***分区内容做修改。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (2)
1.一种多容器根文件***的构建方法,其特征在于,包括:
将Linux内核、用于实现多容器的多***的根文件***文件与单***根文件***文件一同保存在根文件***分区中;其中,所述根文件***分区为kernel分区和rootfs分区合并后的分区,所述多***的ROOT***文件保存在根文件***所述分区中新创建的一个目录下,所述多***的各前台***文件分别保存在所述根文件***分区中新创建的其他目录下,在***内核代码中指定设备上电后加载所述ROOT***所在目录下的初始化init程序;
在设备上电启动时,直接加载***内核和ROOT***。
2.根据权利要求1所述的方法,其特征在于,将所述ROOT***中的system内容保存在system分区中,和/或,将所述ROOT***中的vendor内容保存在vendor分区中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811590027.5A CN111367854B (zh) | 2018-12-25 | 2018-12-25 | 一种多容器根文件***的构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811590027.5A CN111367854B (zh) | 2018-12-25 | 2018-12-25 | 一种多容器根文件***的构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111367854A CN111367854A (zh) | 2020-07-03 |
CN111367854B true CN111367854B (zh) | 2023-02-28 |
Family
ID=71207925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811590027.5A Active CN111367854B (zh) | 2018-12-25 | 2018-12-25 | 一种多容器根文件***的构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367854B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226477A (zh) * | 2007-01-16 | 2008-07-23 | 北京共创开源软件有限公司 | 一种适合移动应用的Linux操作***的实现方法 |
CN103106091A (zh) * | 2013-01-31 | 2013-05-15 | 深圳市开立科技有限公司 | 一种基于可移动存储介质的操作***的启动***和方法 |
CN105138362A (zh) * | 2015-08-20 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 一种linux***下保存用户配置的方法及装置 |
CN105183551A (zh) * | 2015-09-10 | 2015-12-23 | 电子科技大学 | 基于Linux容器技术的多Android***之间切换方法 |
CN106598651A (zh) * | 2016-11-25 | 2017-04-26 | 上海斐讯数据通信技术有限公司 | 一种嵌入式***及该***的升级方法 |
CN106991321A (zh) * | 2017-04-18 | 2017-07-28 | 北京元心科技有限公司 | 多容器***中无痕运行应用程序的方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103777953B (zh) * | 2014-01-26 | 2017-07-14 | 北京国电通网络技术有限公司 | 一种制作类Unix操作***升级包的方法和装置 |
WO2016197069A1 (en) * | 2015-06-05 | 2016-12-08 | Nutanix, Inc. | Architecture for managing i/o and storage for a virtualization environment using executable containers and virtual machines |
CN106095530B (zh) * | 2016-06-08 | 2019-10-22 | 电子科技大学 | 一种多Android***的容器自动创建及其启动方法 |
US10474845B2 (en) * | 2016-11-16 | 2019-11-12 | Foundation Of Soongsil University-Industry Cooperation | Duo operating system for android security, mobile device having the same, method of securing mobile device having the same |
CN106776128B (zh) * | 2016-11-29 | 2020-04-21 | 邦彦技术股份有限公司 | 一种保障Linux操作***正常启动的方法 |
-
2018
- 2018-12-25 CN CN201811590027.5A patent/CN111367854B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226477A (zh) * | 2007-01-16 | 2008-07-23 | 北京共创开源软件有限公司 | 一种适合移动应用的Linux操作***的实现方法 |
CN103106091A (zh) * | 2013-01-31 | 2013-05-15 | 深圳市开立科技有限公司 | 一种基于可移动存储介质的操作***的启动***和方法 |
CN105138362A (zh) * | 2015-08-20 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 一种linux***下保存用户配置的方法及装置 |
CN105183551A (zh) * | 2015-09-10 | 2015-12-23 | 电子科技大学 | 基于Linux容器技术的多Android***之间切换方法 |
CN106598651A (zh) * | 2016-11-25 | 2017-04-26 | 上海斐讯数据通信技术有限公司 | 一种嵌入式***及该***的升级方法 |
CN106991321A (zh) * | 2017-04-18 | 2017-07-28 | 北京元心科技有限公司 | 多容器***中无痕运行应用程序的方法及装置 |
Non-Patent Citations (3)
Title |
---|
Docker原理----深入了解容器镜像;hurt--;《CSND(https://blog.csdn.net/weixin_40907382/article/details/82707940)》;20180914;第1-13页 * |
基于Docker的ARM嵌入式平台性能评测与分析;彭博等;《计算机应用》;20171231;第37卷(第S1期);第325-330页 * |
基于LinuxContainer的Android移动终端虚拟化;陈晓;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20140615(第06期);I138-529 * |
Also Published As
Publication number | Publication date |
---|---|
CN111367854A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8914785B2 (en) | Providing virtual appliance system firmware images | |
US10922123B2 (en) | Container migration in computing systems | |
US9158567B2 (en) | System and method for reconfigurable network services using modified network configuration with modified bandwith capacity in dynamic virtualization environments | |
US8171280B2 (en) | Method of running multiple operating systems on an X86-based computer system having a dedicated memory region configured as a do not use region | |
US20170308330A1 (en) | Container migration utilizing state storage of partitioned storage volume | |
US9395973B2 (en) | Virtual machine deployment method, recording medium, and information processing apparatus | |
JP2009544072A (ja) | アプライアンスの仮想化のための方法と装置 | |
CN101313277A (zh) | 用于携带多个挂起的运行时映像的方法与*** | |
CN111522569B (zh) | 基于Hypervisor的嵌入式多***升级方法及计算机可读存储介质 | |
CN103365696A (zh) | Bios镜像文件获取方法及装置 | |
CN100549957C (zh) | 一种类装载隔离的方法及一种类装载隔离的装置 | |
CN107329792B (zh) | 一种Docker容器启动方法及装置 | |
CN103049295A (zh) | 一种龙芯平台Linux操作***网络安装方法 | |
CN104866324A (zh) | 一种便携操作***构建方法及便携存储器 | |
CN101490645A (zh) | 用以设备虚拟化的方法及设备 | |
US10831524B2 (en) | Virtual host migration system and method, computer apparatus and computer readable storage medium | |
CN111367854B (zh) | 一种多容器根文件***的构建方法 | |
US20120011350A1 (en) | Controlling kernel symbol visibility and accessibility across operating system linkage spaces | |
CN108958814A (zh) | 一种多模冗余的嵌入式操作***启动方法 | |
CN105045595A (zh) | 一种集成插件的方法和装置 | |
US7757030B2 (en) | Simulating hardware dynamic partitioning capabilities | |
CN111176689B (zh) | 信息处理方法和电子设备 | |
CN110928582B (zh) | 信息处理设备和配置信息处理设备的目标装置的方法 | |
CN114726719B (zh) | 网元操作***部署方法、装置、电子设备及存储介质 | |
US8799616B2 (en) | Method and system for preferred CPU binding on virtual partitions |
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 |