CN111367854A - 一种多容器根文件系统的构建方法 - Google Patents
一种多容器根文件系统的构建方法 Download PDFInfo
- Publication number
- CN111367854A CN111367854A CN201811590027.5A CN201811590027A CN111367854A CN 111367854 A CN111367854 A CN 111367854A CN 201811590027 A CN201811590027 A CN 201811590027A CN 111367854 A CN111367854 A CN 111367854A
- Authority
- CN
- China
- Prior art keywords
- root
- file system
- root file
- partition
- files
- 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
-
- 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.一种多容器根文件系统的构建方法,其特征在于,包括:
将用于实现多容器的多系统的根文件系统文件与单系统根文件系统文件一同保存在根文件系统分区中;其中,所述多系统的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 true CN111367854A (zh) | 2020-07-03 |
CN111367854B 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 (11)
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 | 深圳市开立科技有限公司 | 一种基于可移动存储介质的操作系统的启动系统和方法 |
CN103777953A (zh) * | 2014-01-26 | 2014-05-07 | 宝龙计算机系统(湖南)有限公司 | 一种制作类Unix操作系统升级包的方法和装置 |
CN105138362A (zh) * | 2015-08-20 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 一种linux系统下保存用户配置的方法及装置 |
CN105183551A (zh) * | 2015-09-10 | 2015-12-23 | 电子科技大学 | 基于Linux容器技术的多Android系统之间切换方法 |
CN106095530A (zh) * | 2016-06-08 | 2016-11-09 | 电子科技大学 | 一种多Android系统的容器自动创建及其启动方法 |
US20160359955A1 (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 |
CN106598651A (zh) * | 2016-11-25 | 2017-04-26 | 上海斐讯数据通信技术有限公司 | 一种嵌入式系统及该系统的升级方法 |
CN106776128A (zh) * | 2016-11-29 | 2017-05-31 | 邦彦技术股份有限公司 | 一种保障Linux操作系统正常启动的方法 |
CN106991321A (zh) * | 2017-04-18 | 2017-07-28 | 北京元心科技有限公司 | 多容器系统中无痕运行应用程序的方法及装置 |
US20180137308A1 (en) * | 2016-11-16 | 2018-05-17 | 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 |
-
2018
- 2018-12-25 CN CN201811590027.5A patent/CN111367854B/zh active Active
Patent Citations (11)
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 | 深圳市开立科技有限公司 | 一种基于可移动存储介质的操作系统的启动系统和方法 |
CN103777953A (zh) * | 2014-01-26 | 2014-05-07 | 宝龙计算机系统(湖南)有限公司 | 一种制作类Unix操作系统升级包的方法和装置 |
US20160359955A1 (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 |
CN105138362A (zh) * | 2015-08-20 | 2015-12-09 | 浪潮(北京)电子信息产业有限公司 | 一种linux系统下保存用户配置的方法及装置 |
CN105183551A (zh) * | 2015-09-10 | 2015-12-23 | 电子科技大学 | 基于Linux容器技术的多Android系统之间切换方法 |
CN106095530A (zh) * | 2016-06-08 | 2016-11-09 | 电子科技大学 | 一种多Android系统的容器自动创建及其启动方法 |
US20180137308A1 (en) * | 2016-11-16 | 2018-05-17 | 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 |
CN106598651A (zh) * | 2016-11-25 | 2017-04-26 | 上海斐讯数据通信技术有限公司 | 一种嵌入式系统及该系统的升级方法 |
CN106776128A (zh) * | 2016-11-29 | 2017-05-31 | 邦彦技术股份有限公司 | 一种保障Linux操作系统正常启动的方法 |
CN106991321A (zh) * | 2017-04-18 | 2017-07-28 | 北京元心科技有限公司 | 多容器系统中无痕运行应用程序的方法及装置 |
Non-Patent Citations (4)
Title |
---|
HURT--: "Docker原理----深入了解容器镜像", 《CSND(HTTPS://BLOG.CSDN.NET/WEIXIN_40907382/ARTICLE/DETAILS/82707940)》 * |
RYAN SHEA等: "Understanding the impact of Denial of Service attacks on Virtual Machines", 《2012 IEEE 20TH INTERNATIONAL WORKSHOP ON QUALITY OF SERVICE》 * |
彭博等: "基于Docker的ARM嵌入式平台性能评测与分析", 《计算机应用》 * |
陈晓: "基于LinuxContainer的Android移动终端虚拟化", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111367854B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8407702B2 (en) | Computer system for managing virtual machine migration | |
US8914785B2 (en) | Providing virtual appliance system firmware images | |
US8086836B2 (en) | Method and apparatus for virtualization of appliances | |
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 | |
US8752039B1 (en) | Dynamic upgrade of operating system in a network device | |
EP3895008A1 (en) | Container migration in computing systems | |
US20120011513A1 (en) | Implementing a versioned virtualized application runtime environment | |
CN101313277A (zh) | 用于携带多个挂起的运行时映像的方法与系统 | |
CN105739961B (zh) | 一种嵌入式系统的启动方法和装置 | |
CN111522569B (zh) | 基于Hypervisor的嵌入式多系统升级方法及计算机可读存储介质 | |
CN103365696A (zh) | Bios镜像文件获取方法及装置 | |
CN107329792B (zh) | 一种Docker容器启动方法及装置 | |
US20140047222A1 (en) | Method and device for recombining runtime instruction | |
CN103049295A (zh) | 一种龙芯平台Linux操作系统网络安装方法 | |
CN104866324A (zh) | 一种便携操作系统构建方法及便携存储器 | |
CN101490645A (zh) | 用以设备虚拟化的方法及设备 | |
CN115543224A (zh) | 基于zns ssd的文件系统控制方法、装置及设备 | |
CN114124739B (zh) | 部署FreeSWITCH服务的方法、装置、电子设备及存储介质 | |
US20150127916A1 (en) | Dynamic memory allocation | |
US10831524B2 (en) | Virtual host migration system and method, computer apparatus and computer readable storage medium | |
CN111367854B (zh) | 一种多容器根文件系统的构建方法 | |
CN105045595A (zh) | 一种集成插件的方法和装置 | |
CN109656679B (zh) | 一种虚拟机的存储访问方法及装置 |
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 |