CN108614701B - 一种Linux操作系统定制方法及装置 - Google Patents

一种Linux操作系统定制方法及装置 Download PDF

Info

Publication number
CN108614701B
CN108614701B CN201611218808.2A CN201611218808A CN108614701B CN 108614701 B CN108614701 B CN 108614701B CN 201611218808 A CN201611218808 A CN 201611218808A CN 108614701 B CN108614701 B CN 108614701B
Authority
CN
China
Prior art keywords
software package
customized
compiling
target
customization
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
Application number
CN201611218808.2A
Other languages
English (en)
Other versions
CN108614701A (zh
Inventor
张胜举
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201611218808.2A priority Critical patent/CN108614701B/zh
Publication of CN108614701A publication Critical patent/CN108614701A/zh
Application granted granted Critical
Publication of CN108614701B publication Critical patent/CN108614701B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种Linux操作系统定制方法,包括:获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包,生成定制化系统。本发明还公开了一种Linux操作系统定制装置。

Description

一种Linux操作系统定制方法及装置
技术领域
本发明涉及Linux操作系统领域,尤其涉及一种Linux操作系统定制方法及装置。
背景技术
近年来,Linux操作系统依赖其开源、稳定、安全等特点,在各个领域得到了广泛的使用。当前存在很多Linux发行版,比较主流的有Redhat、SUSE、CentOS、Ubuntu等。这些发行版基于开源社区的软件成果,集成了丰富软件包,提供了通用的操作系统功能。然而在现实生活中,针对特定的使用场景和应用领域,对Linux操作系统有不同的需求。为了满足这种特殊使用场景的特殊需求,需要对Linux操作系统进行定制化和裁剪。
Linux操作系统的定制化指的是根据操作系统的使用场景对其进行修改和配置,以提供适合其需求的系统。定制化可深可浅,浅度定制化是针对上层某一个或者多个应用程序的定制化,比如对安装界面的修改等一般层次的定制;深度的定制化是对Linux操作系统核心代码和逻辑的定制化,比如对内核等底层代码的改动。通用的操作系统为了满足大部分用户的使用需求,会提供尽可能多而全的功能,而有些功能在定制化系统中并不需要。Linux操作系统的裁剪指的是有选择性地丢弃一些操作系统功能或者软件包,从而使得定制化得到的系统尽可能地小而精。
Linux操作系统的定制化和裁剪,可以从最基础的开源软件做起,通过配置和编译一步步构建属于自己的发行版,这就是LFS(Linux From Scratch)的做法。这种方法允许更灵活的配置,但是定制过程复杂,定制周期长且不方便。
因此,亟需一种进Linux操作系统定制的技术方案,能够基于上游发行版进行定制化和裁剪,缩短定制周期,更加方便和高效。
发明内容
有鉴于此,本发明实施例希望提供一种Linux操作系统定制方法及装置,能够基于上游发行版进行定制化和裁剪,缩短定制周期。
第一方面,本发明实施例提供的一种Linux操作系统定制方法,所述方法包括:
获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;
由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包生成定制化系统。
在上述方案中,所述方法还包括:
根据定制目标软件包信息确定定制代码文件;所述定制目标软件包信息为根据定制需求确定的软件包信息;其中,
当上游发行版或开源文件中包括所述定制目标软件包信息对应的定制目标软件包时,所述定制代码软件为根据定制需求对所述定制目标软件包的源代码进行修改得到;当所述上游发行版或开源文件中不包括所述定制目标软件信息对应的定制目标软件包时,所述定制代码软件根据定制需求得到。
在上述方案中,所述方法还包括:
对所述定制软件包进行分析,确定编译所述定制软件包所依赖的依赖编译软件包的软件包信息,根据所述依赖编译软件包的软件包信息和所述定制软件包的配置文件获取所述依赖编译软件包;所述配置文件包括存储依赖编译软件包的地址信息;
将所述依赖编译软件包安装到模拟编译环境中生成所述定制模拟编译环境。
在上述方案中,所述方法还包括:
根据所述定制软件包创建所述定制软件包对应的定制软件包仓库。
在上述方案中,所述由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:
获取定制配置脚本,由所述镜像制作工具根据所述定制配置脚本的目标软件包列表分别从所述定制软件包仓库中和所述上游发行版的基础软件包仓库中抽取所述目标软件包,所述目标软件包包括定制软件包和基础软件包。
在上述方案中,当所述目标软件包列表对应的目标软件包存在于所述定制软件包仓库中且存在于所述基础软件包仓库中时,所述由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:
由所述镜像制作工具从所述定制软件包仓库中抽取所述目标软件包。
第二方面,本发明实施例提供了一种Linux操作系统定制装置,所述装置包括:编译单元和安装镜像单元;其中,
所述编译单元,用于获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;
所述安装镜像单元,用于由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包生成定制化系统。
在上述方案中,所述装置还包括:代码确定单元,用于:
根据定制目标软件包信息确定定制代码文件;所述定制目标软件包信息为根据定制需求确定的软件包信息;其中,
当上游发行版或开源文件中包括所述定制目标软件包信息对应的定制目标软件包时,所述定制代码软件为根据定制需求对所述定制目标软件包的源代码进行修改得到;当所述上游发行版或开源文件中不包括所述定制目标软件信息对应的定制目标软件包时,所述定制代码软件根据定制需求得到。
在上述方案中,所述装置还包括:搭建单元,用于:
对所述定制软件包进行分析,确定编译所述定制软件包所依赖的依赖编译软件包的软件包信息,根据所述依赖编译软件包的软件包信息和所述定制软件包的配置文件获取所述依赖编译软件包;所述配置文件包括存储依赖编译软件包的地址信息;
将所述依赖编译软件包安装到模拟编译环境中生成所述定制模拟编译环境。
在上述方案中,所述装置还包括:创建单元,用于根据所述定制软件包创建所述定制软件包对应的定制软件包仓库。
在上述方案中,所述安装镜像单元由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:
获取定制配置脚本,由所述镜像制作工具根据所述定制配置脚本的目标软件包列表分别从所述定制软件包仓库中和所述上游发行版的基础软件包仓库中抽取所述目标软件包,所述目标软件包包括定制软件包和基础软件包。
在上述方案中,当所述目标软件包列表对应的目标软件包存在于所述定制软件包仓库中且存在于所述基础软件包仓库中时,所述安装镜像单元由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:
由所述镜像制作工具从所述定制软件包仓库中抽取所述目标软件包。
本发明实施例的Linux操作系统定制方法装置,获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包生成定制化系统。如此,将根据定制需求在定制模拟编译环境中编译的定制软件包和从上游发行版中获取的基础软件包通过镜像制作工具的制作,生成定制Linux操作系统定制,基于上游发行版进行定制化和裁剪,充分利用上游发行版的成果,缩短了定制化周期,更加方便和高效,并且能够在一套系统下同时编译和制作出隶属不同版本的软件包。
附图说明
图1为本发明实施例一提供的Linux操作系统定制方法的流程示意图;
图2为本发明实施例二提供的Linux操作系统定制方法的流程示意图;
图3为本发明实施例三提供的一种Linux操作系统定制装置的结构示意图;
图4为本发明实施例三提供的另一种Linux操作系统定制装置的结构示意图。
具体实施方式
在本发明提供的实施例中,获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包生成定制化系统。
需要说明的,在本发明提供的Linux操作系统定制方法中,涉及的软件包包括两类软件包:定制软件包和基础软件包;定制软件包为需要对操作系统的源代码进行修改的软件包,基础软件包是不需要对操作系统的源码做修改的软件包。其中,定制软件包不能直接使用上游发行版所提供的,需要重新编译制作出满足定制需求的软件包,基础软件包由于没有对源码做改动,完全可以直接使用上游发行版的软件包。
下面结合附图对技术方案的实施作进一步的详细描述。
实施例一
本发明实施例一提供一种Linux操作系统定制方法,如图1所示,所述方法包括:
S101、获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码进行编译生成定制软件包;
这里,首先需要根据定制化需求,筛选出哪些软件包需要被定制,以CentOS发行版为例,如果需要对安装界面或者安装逻辑做修改,则可以对anaconda软件包做定制化。如果需要对内核代码或者内核模块做定制,则可以对kernel软件包进行定制。筛选出的需要被定制的软件包的软件包信息,即确定定制目标软件包信息。这里的软件包信息可为软件包名称等标识软件包的参数。
在确定了哪些软件包需要被定制化之后,确定定制软件包的源代码文件,这里,在本发明实施例中,所述方法还包括:根据定制目标软件包信息确定定制代码文件;所述定制目标软件包信息为根据定制需求确定的软件包信息;其中,当上游发行版或开源文件中包括所述定制目标软件包信息对应的定制目标软件包时,所述定制代码软件为根据定制需求对所述定制目标软件包的源代码进行修改得到;当所述上游发行版或开源文件中不包括所述定制目标软件信息对应的定制目标软件包时,所述定制代码软件根据定制需求得到。
这里,根据筛选出的需要被定制的软件包在上游发行版或开源社区的开源文件中的情况来确定获取包括源代码的定制代码文件的途径。具体的:
当上游发行版或开源文件中包括定制目标软件包时,则上游发行版或开源文件中提供定制目标软件包,通过对定制目标软件包的源代码的改动得到定制软件包的源代码;这里的改动包括:增加、删除等根据定制需求进行的修改,可以添加新的功能,也可以删除一些不需要的功能,将定制目标软件包的源代码修改成满足定制需求的定制代码文件。这里,当上游发行版或开源文件中不包括定制目标软件包时,则上游发行版或开源文件中不提供定制目标软件包,根据定制需求来进行代码的编写,得到定制软件包的源代码。这里,对定制目标软件包的源代码做的所有修改都可以补丁的形式进行存放。
当得到定制软件包的源代码对应的定制代码文件时,在定制模拟编译环境中对定制代码文件进行编译生成定制软件包,这里,进行定制软件包编译的定制模拟编译环境也是根据定制需求创建。具体的:
对所述定制软件包进行分析,确定编译所述定制软件包所依赖的依赖编译软件包的软件包信息,根据所述依赖编译软件包的软件包信息和所述定制软件包的配置文件获取所述依赖编译软件包;所述配置文件包括存储依赖编译软件包的地址信息;将所述依赖编译软件包安装到模拟编译环境中生成所述定制模拟编译环境。
这里,在定制软件包的编译过程中,需要依赖一些其他的软件包,这里,将这些软件包称为依赖编译软件包。对于定制化系统设置有一个配置文件,在该配置文件中,指定了搭建该定制版本的模拟编译环境需要安装哪些基础编译软件包以及从什么地方获取这些基础编译软件包以及依赖编译软件包。在获取依赖编译软件包之前,对定制软件包进行解析,确定编译定制软件包所依赖的依赖软件包的软件包信息,在获取这些软件包信息后,在配置文件中设置的地址信息中获取依赖编译软件包。
在获取依赖编译软件包后,通过依赖编译软件包和搭建的模拟编译环境来搭建定制模拟编译环境。其中,模拟编译环境为通过编译环境所需要的一些基础编译软件包搭建而成,基础编译软件包的获取可通过对配置文件实现,这里,搭建编辑环境可通过软件包管理器(Yellow dog Updater,Modified,YUM)将编译软件包安装在某一目录下实现。
在进行定制软件包的编译之前,通过改变根目录(chroot)的方式将依赖编译软件包安装到模型编译环境中,从而搭建定制模拟编译环境。
在定制模拟编译环境完成后,即定制软件包的编译条件具备后,在该环境中对定制代码文件进行编译,生成对应的定制软件包。这里,生成的定制软件包可为红帽软件包管理器(Red Hat Package Manager,RPM)包。
在本发明实施例中,当定制软件包为从上游发行版中获取的定制目标软件包的修改而得到的软件包时,还可从上游发行版中获取将该定制目标软件包对应的源代码编译成软件包的脚本,从而方便定制软件包的制作过程。
在实际应用中,当生成定制软件包后,将定制软件包保存,同时可将定制模拟环境删除,从而节省终端设备的存储空间。
S102、由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包生成定制化系统;
在得到定制软件包后,根据所述定制软件包创建所述定制软件包对应的定制软件包仓库。
当进行安装镜像的制作时,通过镜像制作工具抽取制作安装进行制作的软件包,这里,所述由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:获取定制配置脚本,由所述镜像制作工具根据所述定制配置脚本的目标软件包列表分别从所述定制软件包仓库中和所述上游发行版的基础软件包仓库中抽取所述目标软件包,所述目标软件包包括定制软件包和基础软件包。
这里,定制配置脚本中包括根据定制需求确定的定制软件包的软件包信息以及基础软件包的软件包信息,即组成定制化系统的所有软件包的软件包列表。定制配置脚本中的软件包部分列出的是完成定制化功能需要的最小软件包集合。镜像工具根据定制配置脚本从定制软件包仓库和基础软件包仓库中自动抽取定制化系统需要的软件包。
在本发明实施例中,镜像制作工具从定制软件包仓库和基础软件包仓库中抽取目标软件包的过程为自动抽取的过程,具体的,抽取定制配置脚本中的软件包列表对应的目标软件包后,对抽取的目标软件包进行分析,当确定目标软件包存在关联软件包时,以关联软件包为目标软件包基础继续抽取关联软件包。需要说明的时,直到确定抽取的目标软件包不存在关联软件包或与目标软件包关联的关联软件包已收取后,不在进行目标软件包的抽取。比如:当定制配置脚本中的目标软件包列表中包括软件包A和软件包D时,镜像制作工具进行软件包A和软件包D的抽取,当抽取到软件包A和软件包D后,对软件包A和软件包D进行解析确定软件包A存在关联软件包B,软件包D不存在关联软件包,镜像制作工具进行软件包B的抽取,当抽取到软件B后,对软件包B进行解析确定软件包B存在关联软件包C和软件包D,在已抽取软件包D的情况下,则镜像制作工具继续进行软件包C的抽取,直到确定抽取的目标软件包不存在关联软件包为止,实现镜像制作工具对软件包的自动抽取。
在本发明实施例中,当所述目标软件包列表对应的目标软件包存在于所述定制软件包仓库中且存在于所述基础软件包仓库中时,所述由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:由所述镜像制作工具从所述定制软件包仓库中抽取所述目标软件包。这里,如果定制软件包仓库中存在与基础软件包仓库中存在相同的软件包,则优先选择定制软件包,从而确保了定制化修改不会丢失,并自动解决软件包之间的依赖问题。
当完成目标软件包的抽取后,通过镜像制作工具完成目标软件包的镜像制作生成定制化系统安装镜像,完成定制化系统的定制。这里,生成的安装镜像可为ISO镜像文件。
在本发明实施例中,安装镜像的制作过程中,首先将定制软件包制作成软件包仓库,基础软件包由于未做改动,直接使用上游发行版提供的软件包仓库。然后从定制化配置脚本中获得定制化系统需要安装的软件包列表。然后从上述的两个软件包仓库中获取所需目标软件包,生成定制化操作系统安装镜像。进一步的,自动解决软件包之间的依赖问题,如果定制软件包仓库中存在与基础软件包仓库中相同的软件包,则优先选择定制化的软件包,从而确保了定制化修改不会丢失。
实施例二
本发明实施例中以具体的应用场景对本发明实施例提供的Linux操作系统定制方法进行说明,如图2所示,包括:
S201、获取定制软件包的定制代码文件;
操作系统的定制化本质上其实是对软件包的定制化。首先需要根据定制化需求,筛选出哪些软件包需要被定制。例如对于CentOS发行版,如果需要对安装界面或者安装逻辑做修改,则可以对anaconda软件包做定制化。如果需要对内核代码或者内核模块做定制,则可以修改kernel软件包。当然,也可以添加上游发行版不提供的软件包,从而为定制化的操作系统提供额外功能。
在确定了哪些软件包需要被定制化之后,下一步就是获取这些定制目标软件包的源代码。源代码可以从软件相应的开源社区直接获取,也可以从上游发行版中获取。例如对于CentOS发行版,它除了提供编译后的RPM包之外,还提供对应的源码包以及将源码包编译制作成软件包的脚本,也即SRPM包。这里,当从上游发行版获取源码时,其中附带有编译脚本,可以方便软件包的制作过程。
在获取了定制目标软件包源码之后,就开始根据定制化需求对定制目标软件包源码做修改,可以添加新的功能,也可以删除一些不需要的功能。总之,将定制目标软件包修改成满足定制需求的定制软件包的定制代码文件为止。这里,对软件源码做的所有修改都以补丁的形式存放。
S202、在定制模拟编译环境中编译制作定制软件包;
需要说明的是,发行版每个版本中软件的版本不同,编译依赖的环境也不同。例如:假设当前的宿主机环境使用的CentOS 6.0的发行版,我们需要基于CentOS 6.8做定制化。如果直接在宿主机CentOS 6.0环境中编译和制作6.8的软件包,可能会出现软件包的依赖问题。
这里,通过在宿主机中搭建模拟的编译环境,解决了编译软件包的依赖问题。还是以CentOS为例,对系统支持的所有定制化版本都存有一个配置文件,指定了搭建该版本的模拟编译环境即定制模拟环境需要安装哪些基础编译软件包以及从什么地方获取这些基础编译软件包和编译定制软件包所依赖的依赖编译软件包。基于此配置文件,在进行软件包的编译和制作之前,会首先创建一个模拟编译环境,这个环境是通过YUM的方式将基础编译软件包安装在宿主机某一目录下实现的。在进行定制软件包(定制化软件包)的编译之前,将依赖定制软件包chroot到模拟的编译环境中,在该环境中安装定制软件包编译依赖的其他软件包(依赖编译软件包),这些依赖编译软件包也是通过YUM源方式安装进chroot环境的。其中,依赖编译软件包的软件包信息可通过对定制软件包的信息确定;比如:在定制软件包A中包括中编译定制软件包A所依赖的软件包的依赖编译软件包列表。在编译条件具备后,在定制模拟环境中依次对定制化的源RPM(SRPM)包进行编译,并生成对应的RPM包,完成定制软件包的编译。
生成RPM包后,将所有的定制化RPM包拷贝到指定目录下。此时,模拟的编译环境已经完成了它的全部使命,可以将其删除以节省宿主机存储空间。
S203、创建定制软件包仓库;
在S202中将所有的定制软件包都存放在同一个目录下,为了便于后续的安装镜像制作,需要为其创建软件包仓库。这里,对于CentOS发行版,可以直接调用createrepo命令实现。
S204、创建基础软件包仓库;
这里,未做定制化的基础软件包,可以直接使用上游发行版提供的软件包。这部分软件包上游发行版已经提供了软件包仓库,这个仓库可以在宿主机本地,也可以在远程的服务器。
S205、获取定制化配置脚本;
很多发行版提供了操作系统的自动化安装和配置方法,例如CentOS发行版中的kickstart脚本。这里,可基于上游发行版提供的机制,为定制化系统提供自动化安装和配置脚本。咋获取定制化配置脚本时,会自动抽取配置脚本中的软件包部分,得到定制化系统需要安装的目标软件包的软件包列表。
以CentOS发行版为例,对定制配置脚本进行说明,比如:在kickstart脚本中可以指定的配置项有以下几部分:指令部分、软件包部分和脚本部分。其中,
指令部分指定了操作系统安装需要进行的配置,它将在安装过程中需要手动设定的部分,通过指令的方式指定。例如键盘类型通过keyboard命令,语言通过lang命令等等。
软件包部分列出了需要安装的目标软件包的软件包列表,支持组的形式。例如@base,表明安装所有隶属base组的软件包。
脚本部分是安装系统时可以执行的脚本,分为pre和post两部分。pre指的是在安装系统前执行的脚本,post指的是安装系统之后执行的脚本。这部分一般存放的是对安装后系统的配置脚本。
S206、通过镜像制作工具抽取目标软件包;
基于S204和S204创建的软件包仓库,通过解析定制化配置脚本中的软件包部分,自动将目标软件包及其依赖的其他软件包下载到本地,并创建本地的软件包仓库。然后基于创建的本地的软件包仓库,制作安装镜像中需要的镜像文件,例如initrd等等。
以CentOS 6版本为例,介绍安装镜像中包含的主要部分以及其作用:
vmlinuz内核镜像文件,来源于内核软件包。
initrd.img initrd.img是被压缩的cpio格式的文件,其中包含了内核在挂载真实的文件系统之前,依赖的工具和驱动程序。
install.img这个文件中一般称之为stage2镜像,其中包含了安装程序anaconda。由于这些镜像文件是通过软件包生成的,如果在定制化阶段对anaconda软件包做了修改,则这个镜像文件中已经包含了对应的修改。
Packages和repodate目录
这两个目录中存放的是当前光盘中的软件仓库,其中的软件包是基于定制化配置脚本中的配置项筛选出来的,包含了完成定制化系统需要的最小软件包集合。
S207、生成定制化的安装镜像;
最后将本地的软件包仓库和镜像文件,制作成可安装ISO镜像。定制化镜像可以是一种ISO格式的安装镜像,其中包含了定制化配置脚本,可以实现定制化系统的自动化安装和配置。
在实际应用中,可不包括S204步骤,而是直接使用上游发行版提供的基础软件包仓库。当需要抽取基础软件包时,在S206中通过镜像制作工具从上游发行版提供的基础软件包仓库中直接抽取基础软件包。
需要说明的是,本发明实施例提供的系统定制化过程分为两步:第一步是对软件包的定制化,包括:S201和S202;第二步是安装镜像(ISO镜像)的制作,包括S203-S207。
这里,本发明实施例提供的Linux操作系统定制方法具有以下优势:
1、支持发行版多个版本的软件包制作:在同一系统中针对不同版本的发行版提供了模拟的编译和制作软件包的环境,可以在一套系统下可以同时编译和制作出隶属版本发行版的软件包。
2、定制化系统的自动化配置:基于上游发行版提供的机制,也为定制化的系统提供自动化安装和配置脚本。
3、定制化系统软件包列表的自动抽取:自动抽取配置脚本中的软件包部分,得到定制化系统需要安装的软件包列表。配置脚本中的软件包部分列出的是完成定制化功能需要的最小软件包集合,其中已经剔除了上游发行版中无关的软件包。得到软件包列表后,将这些软件包以及其依赖的其他软件包从软件包仓库中自动下载到本地,并制作本地的软件包仓库,最后将本地的软件包仓库放入安装镜像中,从而实现了系统的定制化和裁剪目的。
4、定制化安装镜像的自动生成:将定制软件包和基础软件包制作成软件包仓库,基础软件包仓库可以直接使用上游发行版提供的仓库。对于两者都包含的软件包,定制软件包仓库具有更高的优先级,确保优先使用定制化的软件包。安装镜像中涉及到的文件是从软件包中提取出的,例如isolinux相关的文件来自syslinux软件包,本方案基于软件包仓库,自动生成安装镜像所需文件,如initrd和install.img文件等等,并最终制作安装镜像文件。
需要说明的是,相比基于ISO镜像的定制方法,本方案基于软件包进行定制化,允许从源代码级别对定制化过程进行控制,扩大了可定制化的范围和粒度。此外,本方案对于软件包的选择采用了自动化的方式,自动解决软件包的依赖问题,实现了安装镜像的自动化创建。相对于基于LFS的定制化方法,本方案基于上游发行版进行定制化,充分利用上游发行版提供的软件包和特性,只是对需要定制化的软件包进行了重新编译和制作,节省了大量时间,定制化过程更加简洁高效。
实施例三
为实现上述Linux操作系统定制方法,本发明实施例还提供一种Linux操作系统定制所述装置,如图3所示,所述装置包括:编译单元301和安装镜像单元302;其中,
编译单元301,用于获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;
安装镜像单元302,用于由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包,在所述镜像制作工具中根据所述定制软件包和所述基础软件包生成定制化系统。
在本发明提供的其他实施例中,如图4所示,所述装置还包括:代码确定单元303,用于:根据定制目标软件包信息确定定制代码文件;所述定制目标软件包信息为根据定制需求确定的软件包信息;其中,当上游发行版或开源文件中包括所述定制目标软件包信息对应的定制目标软件包时,所述定制代码软件为根据定制需求对所述定制目标软件包的源代码进行修改得到;当所述上游发行版或开源文件中不包括所述定制目标软件信息对应的定制目标软件包时,所述定制代码软件根据定制需求得到。
在本发明提供的其他实施例中,如图4所示,所述装置还包括:搭建单元304,用于:对所述定制软件包进行分析,确定编译所述定制软件包所依赖的依赖编译软件包的软件包信息,根据所述依赖编译软件包的软件包信息和所述定制软件包的配置文件获取所述依赖编译软件包;所述配置文件包括存储依赖编译软件包的地址信息;将所述依赖编译软件包安装到模拟编译环境中生成所述定制模拟编译环境。
在本发明提供的其他实施例中,如图4所示,所述装置还包括:创建单元305,用于根据所述定制软件包创建所述定制软件包对应的定制软件包仓库。
安装镜像单元302由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:获取定制配置脚本,由所述镜像制作工具根据所述定制配置脚本的目标软件包列表分别从所述定制软件包仓库中和所述上游发行版的基础软件包仓库中抽取所述目标软件包,所述目标软件包包括定制软件包和基础软件包。
当所述目标软件包列表对应的目标软件包存在于所述定制软件包仓库中且存在于所述基础软件包仓库中时,安装镜像单元302由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:由所述镜像制作工具从所述定制软件包仓库中抽取所述目标软件包。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (8)

1.一种Linux操作系统定制方法,其特征在于,所述方法包括:
获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;
根据所述定制软件包创建所述定制软件包对应的定制软件包仓库;
由镜像制作工具根据定制配置脚本的目标软件包列表分别从所述定制软件包仓库中和上游发行版的基础软件包仓库中抽取所述目标软件包,所述目标软件包包括所述定制软件包和基础软件包;
对抽取的所述目标软件包进行分析,当确定所述目标软件包存在关联软件包时,继续抽取所述关联软件包;
在所述镜像制作工具中根据所述定制软件包、所述基础软件包和所述关联软件包生成定制化系统。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据定制目标软件包信息确定定制代码文件;所述定制目标软件包信息为根据定制需求确定的软件包信息;其中,
当上游发行版或开源文件中包括所述定制目标软件包信息对应的定制目标软件包时,所述定制代码文件为根据定制需求对所述定制目标软件包的源代码进行修改得到;当所述上游发行版或开源文件中不包括所述定制目标软件信息对应的定制目标软件包时,所述定制代码文件根据定制需求得到。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述定制软件包进行分析,确定编译所述定制软件包所依赖的依赖编译软件包的软件包信息,根据所述依赖编译软件包的软件包信息和所述定制软件包的配置文件获取所述依赖编译软件包;所述配置文件包括存储依赖编译软件包的地址信息;
将所述依赖编译软件包安装到模拟编译环境中生成所述定制模拟编译环境。
4.根据权利要求1所述的方法,其特征在于,当所述目标软件包列表对应的目标软件包存在于所述定制软件包仓库中且存在于所述基础软件包仓库中时,所述由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:
由所述镜像制作工具从所述定制软件包仓库中抽取所述目标软件包。
5.一种Linux操作系统定制装置,其特征在于,所述装置包括:编译单元和安装镜像单元;其中,
所述编译单元,用于获取定制软件包的定制代码文件,所述定制代码文件为表征定制需求的代码文件,在定制模拟编译环境中对所述定制代码文件进行编译生成定制软件包;
所述安装镜像单元,用于根据所述定制软件包创建所述定制软件包对应的定制软件包仓库;
由镜像制作工具根据定制配置脚本的目标软件包列表分别从所述定制软件包仓库中和上游发行版的基础软件包仓库中抽取所述目标软件包,所述目标软件包包括所述定制软件包和基础软件包;
对抽取的所述目标软件包进行分析,当确定所述目标软件包存在关联软件包时,继续抽取所述关联软件包;
在所述镜像制作工具中根据所述定制软件包、所述基础软件包和所述关联软件包生成定制化系统。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:代码确定单元,用于:
根据定制目标软件包信息确定定制代码文件;所述定制目标软件包信息为根据定制需求确定的软件包信息;其中,
当上游发行版或开源文件中包括所述定制目标软件包信息对应的定制目标软件包时,所述定制代码文件为根据定制需求对所述定制目标软件包的源代码进行修改得到;当所述上游发行版或开源文件中不包括所述定制目标软件信息对应的定制目标软件包时,所述定制代码文件根据定制需求得到。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:搭建单元,用于:
对所述定制软件包进行分析,确定编译所述定制软件包所依赖的依赖编译软件包的软件包信息,根据所述依赖编译软件包的软件包信息和所述定制软件包的配置文件获取所述依赖编译软件包;所述配置文件包括存储依赖编译软件包的地址信息;
将所述依赖编译软件包安装到模拟编译环境中生成所述定制模拟编译环境。
8.根据权利要求5所述的装置,其特征在于,当所述目标软件包列表对应的目标软件包存在于所述定制软件包仓库中且存在于所述基础软件包仓库中时,所述安装镜像单元由镜像制作工具抽取所述定制软件包,并从上游发行版抽取基础软件包包括:
由所述镜像制作工具从所述定制软件包仓库中抽取所述目标软件包。
CN201611218808.2A 2016-12-26 2016-12-26 一种Linux操作系统定制方法及装置 Active CN108614701B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611218808.2A CN108614701B (zh) 2016-12-26 2016-12-26 一种Linux操作系统定制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611218808.2A CN108614701B (zh) 2016-12-26 2016-12-26 一种Linux操作系统定制方法及装置

Publications (2)

Publication Number Publication Date
CN108614701A CN108614701A (zh) 2018-10-02
CN108614701B true CN108614701B (zh) 2021-08-24

Family

ID=63658333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611218808.2A Active CN108614701B (zh) 2016-12-26 2016-12-26 一种Linux操作系统定制方法及装置

Country Status (1)

Country Link
CN (1) CN108614701B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189418A (zh) * 2018-11-08 2019-01-11 郑州云海信息技术有限公司 一种Linux操作系统软件生成、安装方法及系统
CN109358899B (zh) * 2018-12-05 2021-07-30 江苏风云科技服务有限公司 共享货架中资源版本的更新方法及装置
CN109683904A (zh) * 2018-12-20 2019-04-26 惠州Tcl移动通信有限公司 客制化智能电子设备的方法及系统
CN110888650B (zh) * 2019-10-12 2022-08-16 苏州浪潮智能科技有限公司 一种操作系统镜像的定制方法及系统
CN110990049A (zh) * 2019-11-15 2020-04-10 烽火通信科技股份有限公司 一种差异化Android软件生成方法及系统
CN110990020A (zh) * 2019-11-24 2020-04-10 苏州浪潮智能科技有限公司 一种软件编译方法、装置及电子设备和存储介质
CN111142888A (zh) * 2019-12-29 2020-05-12 浪潮电子信息产业股份有限公司 服务器系统灌装方法、装置、设备及计算机可读存储介质
CN111880781A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种rpm安装包的生成方法、装置、设备及存储介质
CN112328301B (zh) * 2020-10-28 2022-04-12 北京百度网讯科技有限公司 维护运行环境一致性的方法、装置、存储介质及电子设备
CN114968931A (zh) * 2022-04-19 2022-08-30 展讯通信(上海)有限公司 一种配置文件生成方法及相关装置
CN114780950B (zh) * 2022-06-20 2022-09-06 中国人民解放军国防科技大学 应用软件跨版本兼容运行的方法、系统、装置及存储介质
CN115344275A (zh) * 2022-08-15 2022-11-15 广州鼎甲计算机科技有限公司 操作系统的镜像文件生成方法、装置和计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1724682A1 (en) * 2005-05-19 2006-11-22 Novell, Inc. System for Creating a Customized Software Installation On Demand
CN102053831A (zh) * 2010-12-10 2011-05-11 浪潮(北京)电子信息产业有限公司 一种Linux操作系统的定制方法及系统
CN102722391A (zh) * 2012-06-07 2012-10-10 浪潮电子信息产业股份有限公司 自动一体化系统配置与软件安装方法
CN103530151A (zh) * 2013-10-10 2014-01-22 上海爱数软件有限公司 一种可切换业务软件系统的Linux操作系统定制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1724682A1 (en) * 2005-05-19 2006-11-22 Novell, Inc. System for Creating a Customized Software Installation On Demand
CN102053831A (zh) * 2010-12-10 2011-05-11 浪潮(北京)电子信息产业有限公司 一种Linux操作系统的定制方法及系统
CN102722391A (zh) * 2012-06-07 2012-10-10 浪潮电子信息产业股份有限公司 自动一体化系统配置与软件安装方法
CN103530151A (zh) * 2013-10-10 2014-01-22 上海爱数软件有限公司 一种可切换业务软件系统的Linux操作系统定制方法

Also Published As

Publication number Publication date
CN108614701A (zh) 2018-10-02

Similar Documents

Publication Publication Date Title
CN108614701B (zh) 一种Linux操作系统定制方法及装置
US10797967B2 (en) Managing service deployment
US10324696B2 (en) Dynamic container deployment with parallel conditional layers
CN108388445B (zh) 一种基于“平台+应用”模式的持续集成方法
CN107908542B (zh) 测试用例创建方法、装置、计算机设备及存储介质
US7765542B2 (en) Method and system for describing and extracting application information
CN107506221B (zh) 应用程序升级方法、装置及设备
CN109542556B (zh) 一种基于Activiti的流程与表单交互方法及系统
CN109491662A (zh) 代码打包方法、计算机装置及计算机可读存储介质、代码打包系统
CN107733985B (zh) 一种云计算系统功能组件部署方法及装置
CN109871213A (zh) 基于国产平台的OpenStack容器化系统及方法
CN109739616A (zh) 一种云平台容器镜像批量制作方法
CN106155651A (zh) 应用程序版本的自动化发布及更新的方法和系统
KR20070049095A (ko) 서비스 패키지로 소프트웨어 제품을 업데이트하는 방법 및컴퓨터 판독가능 매체
CN106371881B (zh) 一种用于服务器内程序版本更新的方法和系统
US11113050B2 (en) Application architecture generation
US20200057654A1 (en) Method and system for mirror image package preparation and application operation
WO2009044971A1 (en) Method and system for determining interface compatibility based on component model
EP2955627A1 (en) Managing versions of components of a software suite
US20170012819A1 (en) System and method for provisioning cloud services across heterogeneous environments
CN109976803B (zh) 一种文件的生成方法及装置
CN111068328A (zh) 游戏广告配置表格的生成方法、终端设备及介质
US20210182174A1 (en) System and method for application transformation to cloud based on semi-automated workflow
EP3447635A1 (en) Application architecture generation
US20170371641A1 (en) Multi-tenant upgrading

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