CN112130930B - 镜像系统生成方法、装置、设备及介质 - Google Patents
镜像系统生成方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112130930B CN112130930B CN202011011873.4A CN202011011873A CN112130930B CN 112130930 B CN112130930 B CN 112130930B CN 202011011873 A CN202011011873 A CN 202011011873A CN 112130930 B CN112130930 B CN 112130930B
- Authority
- CN
- China
- Prior art keywords
- file
- starting
- request
- mirror image
- target
- 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
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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及操作系统技术领域,揭示了一种镜像系统生成方法、装置、设备及介质,其中方法包括:在实模式下启动系统内核;根据系统内核启动完成信号加载周边文件系统的文件;通过执行周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号;根据驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;根据操作系统启动完成信号获取镜像系统生成请求;根据镜像系统生成请求生成目标镜像系统文件;将目标镜像系统文件存储在光盘中。实现了在没有系统内核源码的情况下通过对操作系统进行改进,使目标镜像系统文件满足了定制需求,提高了工作和生产的效率。
Description
技术领域
本申请涉及到操作系统技术领域,特别是涉及到一种镜像系统生成方法、装置、设备及介质。
背景技术
在设备的生产与维护过程中,都需要安装操作系统,为了提高效率,采用镜像系统进行安装。部分操作系统厂商不会公布自己的操作系统的内核源码,没有内核源码无法按定制需求进行操作系统改进,导致生成的镜像系统不满足定制需求,给工作和生产带来不便。
发明内容
本申请的主要目的为提供一种镜像系统生成方法、装置、设备及介质,旨在解决现有技术中没有内核源码无法按定制需求进行操作系统改进,导致生成的镜像系统不满足定制需求,给工作和生产带来不便的技术问题。
为了实现上述发明目的,本申请提出一种镜像系统生成方法,所述方法包括:
获取操作系统启动请求;
响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;
根据所述系统内核启动完成信号,加载周边文件系统的文件;
通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号;
根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;
根据所述操作系统启动完成信号,获取镜像系统生成请求;
根据所述镜像系统生成请求,生成目标镜像系统文件;
将所述目标镜像系统文件存储在光盘中。
进一步的,所述获取操作系统启动请求的步骤之前,还包括:
获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件;
响应所述文件导入请求,将所述目标定制驱动模块文件导入解压后的所述周边文件系统的文件的lib目录下。
进一步的,所述获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件的步骤之前,还包括:
获取定制需求脚本;
对所述定制需求脚本采用C语言进行封装,得到封装完成信号;
根据所述封装完成信号,获取make命令;
执行所述make命令,将封装完成后的所述定制需求脚本进行编译,生成所述目标定制驱动模块文件。
进一步的,所述通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号的步骤,包括:
执行所述周边文件系统的文件的init文件,获取及加载目标定制驱动模块文件,得到所述驱动模块加载结束信号。
进一步的,所述根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号的步骤,包括:
根据所述驱动模块加载结束信号,从rootfs文件系统切换到操作系统根目录,得到所述操作系统启动完成信号。
进一步的,所述根据所述镜像系统生成请求,生成目标镜像系统文件的步骤,包括:
根据所述镜像系统生成请求,将成功启动的操作系统对应的文件导出成打包文件,将所述打包文件作为所述目标镜像系统文件。
进一步的,所述将所述目标镜像系统文件存储在光盘中的步骤之后,包括:
获取镜像操作系统启动请求;
根据所述镜像操作系统启动请求,基于所述光盘中的所述目标镜像系统文件进行操作系统启动。
本申请还提出了一种镜像系统生成装置,所述装置包括:
请求获取模块,用于获取操作系统启动请求;
系统内核启动模块,用于响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;
周边文件系统启动模块,用于根据所述系统内核启动完成信号,加载周边文件系统的文件,通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;
镜像系统生成模块,用于根据所述操作系统启动完成信号,获取镜像系统生成请求,根据所述镜像系统生成请求,生成目标镜像系统文件,将所述目标镜像系统文件存储在光盘中。
本申请还提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请的镜像系统生成方法、装置、设备及介质,通过在实模式下启动系统内核,获取系统内核启动完成信号,根据系统内核启动完成信号,加载周边文件系统的文件,通过执行周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,实现了在没有系统内核源码的情况下通过加载目标定制驱动模块文件对操作系统进行改进;根据驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号,根据操作系统启动完成信号,获取镜像系统生成请求,根据镜像系统生成请求,生成目标镜像系统文件,将目标镜像系统文件存储在光盘中,也就是说光盘中的目标镜像系统文件是改进后的操作系统文件,从而使目标镜像系统文件满足了定制需求,提高了工作和生产的效率。
附图说明
图1为本申请一实施例的镜像系统生成方法的流程示意图;
图2为本申请一实施例的镜像系统生成装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请使用到的专业术语解释如下:
本申请的BIOS,是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。
本申请的Grub,也称为GNU Grub(GRand Unified Bootloader简称“Grub”),是一个来自GNU项目的多操作系统启动程序。Grub是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。Grub可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
本申请的嵌入式Linux系统的sys文件系统,本质上和proc文件系统是一样的,都是虚拟文件系统。都在根目录下有个目录(一个是/proc目录,另一个是/sys目录),因此都不是硬盘中的文件,都是内核中的数据结构的可视化接口。
本申请的嵌入式Linux系统的rootfs文件系统,也称为根文件系统,根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是系统内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。
本申请嵌入式Linux系统的initrd,英文含义是boot loader initialized RAMdisk,就是由boot loader初始化的内存盘,在系统内核启动前,boot loader会将存储介质中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统(也就是周边文件系统)。initrd分为两种,2.4系统内核及以前的版本中的initrd.img的文件需要先用zip方式解压得到initrd文件,这里获得到的initrd文件已经是个标准的image文件了(这个文件我们称为image-initrd),在Linux下需要进行挂载,然后可以直接访问。2.5系统内核及其以后的版本中的initrd.img文件(这里称为cpio-initrd),initrd.img是个gz压缩文件,initrd.img改名为initrd.gz能用windows下的winrar或Linux下的gunzip解压,解压后会得到一个initrd文件。这个文件就是cpio格式的文件,只能在Linux下用cpio命令解压,执行cpio-i<initrd。
本申请的Shell,是一个用C语言编写的程序,它是用户使用Linux的桥梁。
本申请为了解决现有技术中没有内核源码无法按定制需求进行操作系统改进,导致生成的镜像系统不满足定制需求,给工作和生产带来不便的技术问题,本申请提出了一种镜像系统生成方法,方法应用于操作系统技术领域。方法通过启动系统内核后,在加载周边文件系统的文件时加载根据定制需求制作的驱动模块,在没有系统内核源码的情况下通过加载根据定制需求制作的驱动模块以实现对操作系统进行改进;再根据已改进的操作系统生成镜像系统,从而使镜像系统满足了定制需求,提高了工作和生产的效率。
参照图1,所述镜像系统生成方法包括:
S1:获取操作系统启动请求;
S2:响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;
S3:根据所述系统内核启动完成信号,加载周边文件系统的文件;
S4:通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号;
S5:根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;
S6:根据所述操作系统启动完成信号,获取镜像系统生成请求;
S7:根据所述镜像系统生成请求,生成目标镜像系统文件;
S8:将所述目标镜像系统文件存储在光盘中。
本实施例通过在实模式下启动系统内核,获取系统内核启动完成信号,根据系统内核启动完成信号,加载周边文件系统的文件,通过执行周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,实现了在没有系统内核源码的情况下通过加载目标定制驱动模块文件对操作系统进行改进;根据驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号,根据操作系统启动完成信号,获取镜像系统生成请求,根据镜像系统生成请求,生成目标镜像系统文件,将目标镜像系统文件存储在光盘中,也就是说光盘中的目标镜像系统文件是改进后的操作系统文件,从而使目标镜像系统文件满足了定制需求,提高了工作和生产的效率。
对于S1,可以获取用户发送的操作系统启动请求。
所述操作系统启动请求,是指启动操作系统的请求。
优选的,所述操作系统是嵌入式操作系统。
优选的,所述操作系统是嵌入式Linux系统。可以理解的是,所述操作系统还可以是其他嵌入式操作系统,在此不做具体限定。
对于S2,响应所述操作系统启动请求,在实模式下启动系统内核,系统内核启动完成得到所述系统内核启动完成信号。
CPU(处理器)复位(reset)或加电(power on)的时候以实模式启动,处理器以实模式工作。在实模式下,内存寻址方式和8086相同,由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物理地址,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。在实模式下,所有的段都是可以读、写和可执行的。
优选的,所述响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号的步骤,包括:当所述操作系统启动请求是启动嵌入式Linux系统时,响应所述操作系统启动请求,在实模式下依次进行加载BIOS、上电自检、读取主引导记录、加载Boot Loader、通过Boot Loader启动系统内核,系统内核启动完成得到所述系统内核启动完成信号;其中,系统内核也就是VmLinux。
所述加载BIOS,因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等。通过BIOS的设置,计算机就知道去读取哪个硬件设备了。
所述上电自检,也称为开机自检,指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU、系统主板、基本内存、扩展内存、系统ROM BIOS等器件的测试。如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速启动。
所述读取主引导记录,BIOS将控制权交给Grub引导程序,在实模式下将Bootse文件(也称为引导文件)和Setup文件(也称为硬件寄存器的值)拷贝到内存0x7C00的位置,Bootse文件运行时将自己和Setup文件分别拷贝到0X90000和0X90200,Setup文件执行时将BIOS中的中断向量表保存并执行Head代码(是指引导环境的代码,用于硬件初始化)中的kernel_start(也就是内核代码)进入VmLinux(系统内核)的启动。
所述Boot Loader,在操作系统内核运行之前运行的一段小程序,通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
通过Boot Loader启动系统内核,VmLinux(系统内核)启动的过程其实也是文件系统的初始化,先识别sys文件系统,并保存相关的文件描述符,进而执行rootfs文件系统并切换成根目录,刚才初始化的sys相关环境保持使用。
对于S3,所述根据所述系统内核启动完成信号,加载周边文件系统的文件的步骤包括:当所述操作系统启动请求是启动嵌入式Linux系统时,加载initrd文件系统的initrd.img文件。
对于S4,通过执行所述周边文件系统的文件中的脚本,从所述周边文件系统获取目标定制驱动模块文件,然后加载所述目标定制驱动模块文件,加载结束得到驱动模块加载结束信号。
可以理解的是,通过执行所述周边文件系统的文件中的脚本还可以获取和加载其他驱动模块,比如,硬盘驱动模块,在此举例不做具体限定。
对于S3和S4,当所述操作系统启动请求是启动嵌入式Linux系统时,VmLinux在启动后会挂载initrd文件系统来切换根目录,将rootfs文件系统作为initrd文件系统的根目录以加载相应的内核模块(包括驱动模块),在这个阶段实现了initrd文件系统与VmLinux的信息更新,而通过在这个阶段加载目标定制驱动模块文件,实现了将目标定制驱动模块文件更新到VmLinux中,从而实现了对VmLinux的定制,而且在对VmLinux的定制过程中未更改系统内核源码。
对于S5,根据所述驱动模块加载结束信号,将根文件系统的根目录切换到硬盘文件系统,切换完成得到操作系统启动完成信号。也就是说,得到所述操作系统启动完成信号意味着操作系统已经成功启动。
对于S6,在获得所述操作系统启动完成信号之后,获取镜像系统生成请求。
所述镜像系统生成请求,是指生成镜像系统的请求。
所述生成镜像系统的请求包括:文件导出指令、镜像系统制作指令。
对于S7,根据所述文件导出指令,根据成功启动的操作系统对应的文件生成目标镜像系统文件。
对于S8,根据所述镜像系统制作指令,将所述目标镜像系统文件发送给光盘。
在一个实施例中,上述获取操作系统启动请求的步骤之前,还包括:
S011:获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件;
S012:响应所述文件导入请求,将所述目标定制驱动模块文件导入解压后的所述周边文件系统的文件的lib目录下。
本实施例实现了将目标定制驱动模块文件导入周边文件系统,为后续加载提供了基础。
对于S011,可以获取用户发送的文件导入请求。
所述文件导入请求,是指将目标定制驱动模块文件导入周边文件系统的请求。
对于S012,所述响应所述文件导入请求,将所述目标定制驱动模块文件导入解压后的所述周边文件系统的文件的lib目录下的步骤,包括:
当所述操作系统启动请求是启动嵌入式Linux系统时,响应所述文件导入请求,将所述目标定制驱动模块文件导入解压后的initrd文件的lib目录下。
在一个实施例中,上述获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件的步骤之前,还包括:
S0111:获取定制需求脚本;
S0112:对所述定制需求脚本采用C语言进行封装,得到封装完成信号;
S0113:根据所述封装完成信号,获取make命令;
S0114:执行所述make命令,将封装完成后的所述定制需求脚本进行编译,生成所述目标定制驱动模块文件。
本实施例实现了根据定制目标定制驱动模块文件,为对操作系统改进提供了基础。
对于S0111,可以直接获取用户输入的定制需求脚本,也可以从数据库获取定制需求脚本。
所述定制需求脚本是根据定制需求制作的脚本文件。
优选的,所述定制需求脚本采用Shell编程语言编写。所述定制需求脚本还可以采用其他编程语言编写,在此不做具体限定。
对于S0112,对所述定制需求脚本采用C语言按驱动模块的格式进行封装,得到封装完成信号;
对于S0114,将完成后的所述定制需求脚本通过执行所述make命令进行编译,编译结束生成所述目标定制驱动模块文件。
在一个实施例中,上述通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号的步骤,包括:
执行所述周边文件系统的文件的init文件,获取及加载目标定制驱动模块文件,得到所述驱动模块加载结束信号。
当所述操作系统启动请求是启动嵌入式Linux系统时,通过执行initrd.img文件的init文件,通过init文件获取及加载目标定制驱动模块文件,加载结束得到所述驱动模块加载结束信号。
在一个实施例中,上述根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号的步骤,包括:
根据所述驱动模块加载结束信号,从rootfs文件系统切换到操作系统根目录,得到所述操作系统启动完成信号。
本实施例实现了当所述操作系统启动请求是启动嵌入式Linux系统时,将当前根目录(也就是rootfs文件系统)切换到操作系统根目录(也就是硬盘文件系统)。
在一个实施例中,上述根据所述镜像系统生成请求,生成目标镜像系统文件的步骤,包括:
根据所述镜像系统生成请求,将成功启动的操作系统对应的文件导出成打包文件,将所述打包文件作为所述目标镜像系统文件。
本实施例实现了生成目标镜像系统文件。
在一个实施例中,上述将所述目标镜像系统文件存储在光盘中的步骤之后,包括:
S91:获取镜像操作系统启动请求;
S92:根据所述镜像操作系统启动请求,基于所述光盘中的所述目标镜像系统文件进行操作系统启动。
本实施例实现了在通过镜像系统启动时加载到了改进后的操作系统。
对于S91,可以获取用户发送的镜像操作系统启动请求。
所述镜像操作系统启动请求,是指通过目标镜像系统文件启动操作系统的请求。
对于S92,根据所述镜像操作系统启动请求,根据所述光盘中的所述目标镜像系统文件启动镜像系统。
参照图2,本申请还提出了一种镜像系统生成装置,所述装置包括:
请求获取模块100,用于获取操作系统启动请求;
系统内核启动模块200,用于响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;
周边文件系统启动模块300,用于根据所述系统内核启动完成信号,加载周边文件系统的文件,通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;
镜像系统生成模块400,用于根据所述操作系统启动完成信号,获取镜像系统生成请求,根据所述镜像系统生成请求,生成目标镜像系统文件,将所述目标镜像系统文件存储在光盘中。
本实施例通过在实模式下启动系统内核,获取系统内核启动完成信号,根据系统内核启动完成信号,加载周边文件系统的文件,通过执行周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,实现了在没有系统内核源码的情况下通过加载目标定制驱动模块文件对操作系统进行改进;根据驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号,根据操作系统启动完成信号,获取镜像系统生成请求,根据镜像系统生成请求,生成目标镜像系统文件,将目标镜像系统文件存储在光盘中,也就是说光盘中的目标镜像系统文件是改进后的操作系统文件,从而使目标镜像系统文件满足了定制需求,提高了工作和生产的效率。
在一个实施例中,所述装置还包括:定制驱动模块导入模块;
所述定制驱动模块导入模块,用于获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件,响应所述文件导入请求,将所述目标定制驱动模块文件导入解压后的所述周边文件系统的文件的lib目录下。
在一个实施例中,所述装置还包括:定制驱动模块生成模块,所述定制驱动模块生成模块,用于获取定制需求脚本,对所述定制需求脚本采用C语言进行封装,得到封装完成信号,根据所述封装完成信号,获取make命令,执行所述make命令,将封装完成后的所述定制需求脚本进行编译,生成所述目标定制驱动模块文件。
在一个实施例中,所述周边文件系统启动模块300包括:定制驱动模块加载子模块;
所述定制驱动模块加载子模块,用于执行所述周边文件系统的文件的init文件,获取及加载目标定制驱动模块文件,得到所述驱动模块加载结束信号。
在一个实施例中,所述周边文件系统启动模块300还包括:根目录切换子模块;
所述根目录切换子模块,用于根据所述驱动模块加载结束信号,从rootfs文件系统切换到操作系统根目录,得到所述操作系统启动完成信号。
在一个实施例中,所述镜像系统生成模块400包括:文件打包子模块;
所述文件打包子模块,用于根据所述镜像系统生成请求,将成功启动的操作系统对应的文件导出成打包文件,将所述打包文件作为所述目标镜像系统文件。
在一个实施例中,所述装置还包括:镜像系统启动模块;
所述镜像系统启动模块,用于获取镜像操作系统启动请求,根据所述镜像操作系统启动请求,基于所述光盘中的所述目标镜像系统文件进行操作系统启动。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于储存镜像系统生成方法等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种镜像系统生成方法。所述镜像系统生成方法,包括:获取操作系统启动请求;响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;根据所述系统内核启动完成信号,加载周边文件系统的文件;通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号;根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;根据所述操作系统启动完成信号,获取镜像系统生成请求;根据所述镜像系统生成请求,生成目标镜像系统文件;将所述目标镜像系统文件存储在光盘中。
本实施例通过在实模式下启动系统内核,获取系统内核启动完成信号,根据系统内核启动完成信号,加载周边文件系统的文件,通过执行周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,实现了在没有系统内核源码的情况下通过加载目标定制驱动模块文件对操作系统进行改进;根据驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号,根据操作系统启动完成信号,获取镜像系统生成请求,根据镜像系统生成请求,生成目标镜像系统文件,将目标镜像系统文件存储在光盘中,也就是说光盘中的目标镜像系统文件是改进后的操作系统文件,从而使目标镜像系统文件满足了定制需求,提高了工作和生产的效率。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种镜像系统生成方法,包括步骤:获取操作系统启动请求;响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;根据所述系统内核启动完成信号,加载周边文件系统的文件;通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号;根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;根据所述操作系统启动完成信号,获取镜像系统生成请求;根据所述镜像系统生成请求,生成目标镜像系统文件;将所述目标镜像系统文件存储在光盘中。
上述执行的镜像系统生成方法,通过在实模式下启动系统内核,获取系统内核启动完成信号,根据系统内核启动完成信号,加载周边文件系统的文件,通过执行周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,实现了在没有系统内核源码的情况下通过加载目标定制驱动模块文件对操作系统进行改进;根据驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号,根据操作系统启动完成信号,获取镜像系统生成请求,根据镜像系统生成请求,生成目标镜像系统文件,将目标镜像系统文件存储在光盘中,也就是说光盘中的目标镜像系统文件是改进后的操作系统文件,从而使目标镜像系统文件满足了定制需求,提高了工作和生产的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种镜像系统生成方法,其特征在于,所述方法包括:
获取操作系统启动请求;
响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;
根据所述系统内核启动完成信号,加载周边文件系统的文件;
通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号;
根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;
根据所述操作系统启动完成信号,获取镜像系统生成请求;
根据所述镜像系统生成请求,生成目标镜像系统文件;
将所述目标镜像系统文件存储在光盘中;
所述响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号,包括:
当所述操作系统启动请求是启动嵌入式Linux系统时,响应所述操作系统启动请求,在实模式下依次进行加载BIOS、上电自检、读取主引导记录、加载Boot Loader、通过BootLoader启动系统内核,系统内核启动完成得到所述系统内核启动完成信号;其中,系统内核也就是VmLinux。
2.根据权利要求1所述的镜像系统生成方法,其特征在于,所述获取操作系统启动请求的步骤之前,还包括:
获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件;
响应所述文件导入请求,将所述目标定制驱动模块文件导入解压后的所述周边文件系统的文件的lib目录下。
3.根据权利要求2所述的镜像系统生成方法,其特征在于,所述获取文件导入请求,所述文件导入请求携带有所述目标定制驱动模块文件的步骤之前,还包括:
获取定制需求脚本;
对所述定制需求脚本采用C语言进行封装,得到封装完成信号;
根据所述封装完成信号,获取make命令;
执行所述make命令,将封装完成后的所述定制需求脚本进行编译,生成所述目标定制驱动模块文件。
4.根据权利要求1所述的镜像系统生成方法,其特征在于,所述通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号的步骤,包括:
执行所述周边文件系统的文件的init文件,获取及加载目标定制驱动模块文件,得到所述驱动模块加载结束信号。
5.根据权利要求1所述的镜像系统生成方法,其特征在于,所述根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号的步骤,包括:
根据所述驱动模块加载结束信号,从rootfs文件系统切换到操作系统根目录,得到所述操作系统启动完成信号。
6.根据权利要求1所述的镜像系统生成方法,其特征在于,所述根据所述镜像系统生成请求,生成目标镜像系统文件的步骤,包括:
根据所述镜像系统生成请求,将成功启动的操作系统对应的文件导出成打包文件,将所述打包文件作为所述目标镜像系统文件。
7.根据权利要求1所述的镜像系统生成方法,其特征在于,所述将所述目标镜像系统文件存储在光盘中的步骤之后,包括:
获取镜像操作系统启动请求;
根据所述镜像操作系统启动请求,基于所述光盘中的所述目标镜像系统文件进行操作系统启动。
8.一种镜像系统生成装置,所述的镜像系统生成装置用于执行根据权利要求1-7中任一项所述的镜像系统生成的方法,其特征在于,所述装置包括:
请求获取模块,用于获取操作系统启动请求;
系统内核启动模块,用于响应所述操作系统启动请求,在实模式下启动系统内核,获取系统内核启动完成信号;
周边文件系统启动模块,用于根据所述系统内核启动完成信号,加载周边文件系统的文件,通过执行所述周边文件系统的文件中的脚本,获取及加载目标定制驱动模块文件,得到驱动模块加载结束信号,根据所述驱动模块加载结束信号,将根目录切换到硬盘文件系统,得到操作系统启动完成信号;
镜像系统生成模块,用于根据所述操作系统启动完成信号,获取镜像系统生成请求,根据所述镜像系统生成请求,生成目标镜像系统文件,将所述目标镜像系统文件存储在光盘中。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011011873.4A CN112130930B (zh) | 2020-09-23 | 2020-09-23 | 镜像系统生成方法、装置、设备及介质 |
PCT/CN2020/124889 WO2021169355A1 (zh) | 2020-09-23 | 2020-10-29 | 镜像系统生成方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011011873.4A CN112130930B (zh) | 2020-09-23 | 2020-09-23 | 镜像系统生成方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112130930A CN112130930A (zh) | 2020-12-25 |
CN112130930B true CN112130930B (zh) | 2023-08-22 |
Family
ID=73839371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011011873.4A Active CN112130930B (zh) | 2020-09-23 | 2020-09-23 | 镜像系统生成方法、装置、设备及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112130930B (zh) |
WO (1) | WO2021169355A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568628B (zh) * | 2021-07-16 | 2024-03-15 | 成都安恒信息技术有限公司 | 一种基于debian系统ISO自动化生产方法 |
CN113422702B (zh) * | 2021-08-24 | 2021-11-26 | 南京极域信息科技有限公司 | 一种支持无线路由的android设备 |
CN117075957A (zh) * | 2023-10-16 | 2023-11-17 | 先进计算与关键软件(信创)海河实验室 | 一种面向多RISC-V平台的通用Linux操作系统镜像设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694624A (zh) * | 2009-10-19 | 2010-04-14 | 中兴通讯股份有限公司 | 处理软件安装包光盘镜像文件的方法及装置 |
CN102141923A (zh) * | 2010-09-28 | 2011-08-03 | 华为终端有限公司 | 内存文件系统加载方法及装置 |
CN103106091A (zh) * | 2013-01-31 | 2013-05-15 | 深圳市开立科技有限公司 | 一种基于可移动存储介质的操作系统的启动系统和方法 |
CN111258666A (zh) * | 2020-01-22 | 2020-06-09 | 奇安信科技集团股份有限公司 | 计算机文件的读取方法、装置、计算机系统及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033755A (zh) * | 2009-09-30 | 2011-04-27 | 国际商业机器公司 | 用于运行虚拟机镜像的方法和系统 |
CN104375867A (zh) * | 2014-11-25 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种定制Linux系统制作ISO镜像方法 |
CN106776128B (zh) * | 2016-11-29 | 2020-04-21 | 邦彦技术股份有限公司 | 一种保障Linux操作系统正常启动的方法 |
CN109783117B (zh) * | 2019-01-18 | 2023-01-10 | 中国人民解放军国防科技大学 | 一种无盘系统的镜像文件制作及启动方法 |
CN110888650B (zh) * | 2019-10-12 | 2022-08-16 | 苏州浪潮智能科技有限公司 | 一种操作系统镜像的定制方法及系统 |
-
2020
- 2020-09-23 CN CN202011011873.4A patent/CN112130930B/zh active Active
- 2020-10-29 WO PCT/CN2020/124889 patent/WO2021169355A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101694624A (zh) * | 2009-10-19 | 2010-04-14 | 中兴通讯股份有限公司 | 处理软件安装包光盘镜像文件的方法及装置 |
CN102141923A (zh) * | 2010-09-28 | 2011-08-03 | 华为终端有限公司 | 内存文件系统加载方法及装置 |
CN103106091A (zh) * | 2013-01-31 | 2013-05-15 | 深圳市开立科技有限公司 | 一种基于可移动存储介质的操作系统的启动系统和方法 |
CN111258666A (zh) * | 2020-01-22 | 2020-06-09 | 奇安信科技集团股份有限公司 | 计算机文件的读取方法、装置、计算机系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021169355A1 (zh) | 2021-09-02 |
CN112130930A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112130930B (zh) | 镜像系统生成方法、装置、设备及介质 | |
JP6259459B2 (ja) | Bpramを使用したオペレーティング・システムのレイアウトおよび実行 | |
CN107479931B (zh) | 一种linux系统应用层刷新BIOS的方法 | |
JP2015526827A (ja) | Bpramを使用したソフトウェア・アプリケーションのレイアウトおよび実行 | |
KR20040004551A (ko) | 사전 습득된 프로그램 파일들을 생성 및 이용하기 위한방법 및 디바이스 | |
US20070101115A1 (en) | Information processing device, bios processing method and program | |
CN113835644B (zh) | 整机迁移方法、装置、设备及存储介质 | |
US20080005727A1 (en) | Methods, systems, and computer program products for enabling cross language access to an addressable entity | |
CN113238819B (zh) | 一种适用于U-Boot的驱动文件动态加载方法及系统 | |
CN110297726B (zh) | 具有串行存在检测数据的计算机系统及内存模块控制方法 | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
TWI464583B (zh) | 取得觸發功能之指令的方法 | |
US20070300054A1 (en) | Universal BSP tool for porting on embedded systems and an application thereof | |
CN116627513B (zh) | 一种计算机boot的启动方法及装置 | |
CN111694580B (zh) | 存储设备升级及初始化的方法、装置、电子设备 | |
CN117193872A (zh) | 一种基于符号表动态执行的芯片启动固件装置和方法 | |
CN112799683A (zh) | 一种终端设备程序烧写和测试方法 | |
CN114047952B (zh) | 用于单片机的处理器、方法、单片机和存储介质 | |
CN116009899A (zh) | 操作系统的镜像制作方法、装置、电子设备及存储介质 | |
CN112463262A (zh) | 一种安卓系统gps模块自适应方法及终端 | |
Hallinan | Reducing boot time in embedded linux systems | |
JP4998861B2 (ja) | コンピュータシステム及びそのhw抽象化方法 | |
JP2001142714A (ja) | 通常のos制御下でコンピュータのプリ−ブート及びポスト−ブート作動の際にアプリケーションを実行する方法と装置 | |
TWI834472B (zh) | 驅動內核模組封裝方法、電子設備與存儲介質 | |
CN114385255B (zh) | Pos机的控制方法、系统、装置以及计算可读介质 |
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 |