CN116302150B - hypervisor自启动程序生成方法和操作系统启动方法 - Google Patents
hypervisor自启动程序生成方法和操作系统启动方法 Download PDFInfo
- Publication number
- CN116302150B CN116302150B CN202211097570.8A CN202211097570A CN116302150B CN 116302150 B CN116302150 B CN 116302150B CN 202211097570 A CN202211097570 A CN 202211097570A CN 116302150 B CN116302150 B CN 116302150B
- Authority
- CN
- China
- Prior art keywords
- hypervisor
- starting
- self
- program
- code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 104
- 238000005192 partition Methods 0.000 claims abstract description 16
- 230000006870 function Effects 0.000 claims description 17
- 230000004927 fusion Effects 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 7
- 238000002360 preparation method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 14
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种hypervisor自启动程序生成方法和操作系统启动方法,从hypervisor的启动加载代码中获得硬件初始化的代码和hypervisor引导的代码,该硬件初始化的代码和hypervisor引导的代码与hypervisor的代码融合,生成hypervisor自启动程序;在计算机上电后从启动介质的启动分区将hypervisor自启动程序加载到内存并启动运行,以先后执行硬件初始化、hypervisor引导和hypervisor启动,在hypervisor启动完成后,运行所述hypervisor上各系统。本发明的技术方案无需第三方Bootloader引导即可上电启动,操作系统涉及软件部件自主可控,启动过程简洁且启动速度能够更快。
Description
技术领域
本发明涉及操作系统领域,尤其涉及一种hypervisor自启动程序生成方法和操作系统启动方法。
背景技术
图1示出现有技术中嵌入式的操作系统启动流程,其包括:
1)计算机系统上电启动,CPU根据配置的启动模式选择从SPI/NAND/UART/USB中的一种存储介质上启动。
2)Bootloader执行Stage1汇编代码,对硬件设备初始化,为Stage2的执行及随后内核的执行准备好基本的硬件环境、设置好堆栈、跳转到Stage2的C语言入口;Stage2执行bootloader引导模块代码,引导Hypervisor程序启动。
3)Hypervisor程序启动后根据配置逐一将Hypervisor之上的OS启动。
因为BootLoader为第三方公司的产品,无法直接与嵌入式的hypervisor程序直接融合,针对不同的嵌入式的hypervisor程序需要向第三公司定制BootLoader,同时现有技术的操作系统启动过程复杂,启动时间长。
发明内容
有鉴于此,本发明实施例提供了一种hypervisor自启动程序生成方法和操作系统启动,该自启动方法在计算机上电后从启动介质的启动分区将hypervisor自启动程序加载到内存并运行,hypervisor自启动程序先后执行硬件初始化、hypervisor引导和hypervisor启动,在hypervisor启动完成后,运行所述hypervisor上各系统。该自启动方法无需第三方Bootloader引导即可上电启动,操作系统涉及软件部件自主可控,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
本发明实施例还提供了一种hypervisor自启动程序的生成方法及装置,该生成方法获得硬件初始化和hypervisor引导的代码,并与hypervisor的代码一起编译,生成hypervisor自启动程序,该自启动程序无需第三方Bootloader引导即可上电启动操作系统,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
第一方面,本发明实施例提供了一种hypervisor自启动程序生成方法,包括:从hypervisor的启动加载代码中获得硬件初始化的代码和hypervisor引导的代码;将所述硬件初始化的代码和所述hypervisor引导的代码与hypervisor的代码融合,生成所述自启动程序。所述启动加载代码为Bootloader。
由上,该hypervisor自启动程序无需第三方Bootloader引导即可上电启动操作系统,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
在第一方面的一种可能实施方式中,将所述硬件初始化的代码和所述hypervisor引导的代码与hypervisor的代码融合,生成所述自启动程序,具体包括:对所述硬件初始化的代码、所述hypervisor引导的代码与hypervisor的代码进行融合编译;链接融合编译获得的所述硬件初始化的对象文件、所述hypervisor引导的对象文件与hypervisor的对象文件,生成所述自启动程序。
由上,通过把从Bootloader中获得硬件初始化和hypervisor引导的代码与Hypervisor代码融合编译,生成硬件初始化的代码、hypervisor引导的代码与hypervisor的代码的.o文件,即对象文件,连接各对象文件编译生成自启动程序Hypervisor.bin,以实现Hypervisor自启动。
在第一方面的一种可能实施方式中,还包括:将所述自启动程序复制到启动介质的启动分区中。
由上,通过在启动分区自动加载Hypervisor自启动程序。
在第一方面的一种可能实施方式中,所述硬件初始化至少执行以下功能之一:中断向量地址定义,RAM地址分配,硬件低级初始化,启动hypervisor引导;所述硬件低级初始化至少包括以下功能之一:DDR初始化,上电复位中断处理程序安装,系统时钟初始化。
由上,通过硬件初始化完成程序运行环境配置和硬件初级初始化,并启动hypervisor引导,以通过hypervisor引导来启动hypervisor,从而在自启动过程中无需Bootloader引导。
第二方面,本发明实施例提供了一种操作系统启动方法,包括:将第一方面任一实施方式所述方法生成的hypervisor自启动程序加载到内存;在所述内存中运行所述自启动程序,所述自启动程序至少先后执行以下功能:硬件初始化、hypervisor引导和hypervisor启动;在所述自启动程序运行完成后,运行hypervisor上各操作系统。
由上,该启动方法无需第三方Bootloader引导即可上电启动,操作系统涉及软件部件自主可控,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
第三方面,本发明实施例提供了一种hypervisor自启动程序生成装置,包括:代码获得模块,用于从hypervisor的启动加载代码中获得硬件初始化的代码和hypervisor引导的代码;代码融合模块,用于将所述硬件初始化的代码和所述hypervisor引导的代码与hypervisor的代码融合,生成所述自启动程序。所述启动加载代码为Bootloader。
由上,该hypervisor自启动程序无需第三方Bootloader引导即可上电启动操作系统,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
在第一方面的一种可能实施方式中,代码融合模块具体用于,包括:对所述硬件初始化的代码、所述hypervisor引导的代码与hypervisor的代码进行融合编译,链接融合编译获得的所述硬件初始化的对象文件、所述hypervisor引导的对象文件与hypervisor的对象文件,生成所述自启动程序。
由上,通过把从Bootloader中获得硬件初始化和hypervisor引导的代码与Hypervisor代码融合编译,生成硬件初始化的代码、hypervisor引导的代码与hypervisor的代码的.o文件,即对象文件,连接各对象文件编译生成自启动程序Hypervisor.bin,以实现Hypervisor自启动。
在第三方面的一种可能实施方式中,还包括:程序复制模块,用于将所述自启动程序复制到启动介质的启动分区中。
由上,通过在启动分区自动加载Hypervisor自启动程序。
在第三方面的一种可能实施方式中,所述硬件初始化至少执行以下功能:中断向量地址定义,RAM地址分配,硬件低级初始化,启动hypervisor引导;所述硬件低级初始化至少包括:DDR初始化,上电复位中断处理程序安装,系统时钟初始化。
由上,通过硬件初始化完成程序运行环境配置和硬件初级初始化,并启动hypervisor引导,以通过hypervisor引导来启动hypervisor,从而在自启动过程中无需Bootloader引导。
第四方面,本发明实施例提供了一种操作系统启动装置,包括:程序加载模块,用于将第一方面任一实施方式所述方法生成的hypervisor自启动程序加载到内存;内核自启动模块,用于在所述内存中自动运行所述自启动程序,所述自启动程序至少先后执行以下功能:硬件初始化、hypervisor引导和hypervisor启动;系统启动模块,用于在所述自启动程序运行完成后,运行hypervisor上各系统。
第五方面,本发明实施例提供了一种操作系统,包括:利用第一方面任一实施方式所述方法生成的hypervisor自启动程序。
第六方面,本发明实施例还提供了一种计算设备,包括,
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式或第二方面所述实施方式。
第七方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行申请第一方面任一所述实施方式或第二方面所述实施方式。
附图说明
图1为现有技术中嵌入式的操作系统启动流程示意图;
图2A为本发明的一种hypervisor自启动程序生成方法实施例一的流程示意图;
图2B为本发明的一种hypervisor自启动程序的硬件初始化的主要功能示意图;
图3为本发明的一种hypervisor自启动程序生成方法实施例二的流程示意图;
图4为本发明的一种hypervisor自启动程序生成方法实施例二的Hypervisor.bin的对象文件结构示意图;
图5为本发明的一种操作系统启动方法实施例的流程示意图;
图6A为本发明的一种hypervisor自启动程序生成装置实施例一的结构示意图;
图6B为本发明的一种hypervisor自启动程序生成装置实施例二的结构示意图;
图7为本发明的一种操作系统启动装置实施例的结构示意图;
图8为本发明各实施例的一种计算设备的结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
本发明实施例提供了一种hypervisor自启动程序生成方法及装置和操作系统启动方法及装置。
下面根据图2A至图2B介绍本发明的一种hypervisor自启动程序的生成方法实施例一。
一种hypervisor自启动程序的生成方法实施例一获得硬件初始化和hypervisor引导的代码,并与hypervisor的代码融合,生成hypervisor自启动程序,该自启动程序无需hypervisor的第三方的启动加载代码(Bootloader,以下同)引导即可上电启动操作系统,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
图2A示出了一种hypervisor自启动程序的生成方法实施例一,其包括步骤S210至S230。
S210:获得硬件初始化的代码和hypervisor引导的代码。
其中,硬件初始化的代码直接对硬件操作,一般为汇编语言代码,图2B示出了硬件初始化的主要功能,其包括:
1)程序运行环境准备,至少包括:中断向量地址定义,程序的代码段、数据段和bss段定义;
2)硬件初级初始化,至少包括:DDR初始化,安装上电复位中断处理程序,系统时钟初始化;
3)启动hypervisor引导,至少包括:确定hypervisor引导代码部分在内存中位置,在准备的程序运行环境中运行hypervisor引导。
其中,hypervisor引导用来启动hypervisor,hypervisor引导的代码则采用大众化C语言编写,且便于移植。
其中,在一些实施例中,从BootLoader中获得硬件初始化和hypervisor引导的代码,Bootloader可以包括RedBoot、ARMboot、U-boot、DSP等Bootloader,即使上述一种BootLoader针对不同的芯片和版本,其Bootloader也存在差异,需要选择芯片匹配、版本匹配的Bootloader。在另一些实施例中,自行编写硬件初始化和hypervisor引导的代码。
S220:将硬件初始化的代码和hypervisor引导的代码与hypervisor程序融合,生成hypervisor自启动程序。
其中,在一些实施例中,通过融合编译生成生成hypervisor自启动程序,在编译文件中包含硬件初始化和hypervisor引导的代码所保存的目录。
其中,在编译时先把硬件初始化的代码、hypervisor引导的代码和hypervisor代码分别编译为相应的.o文件,即对象文件,然后再把这些对象文件通过编译链接起来,编译成hypervisor自启动程序。
其中,hypervisor自启动程序为Hypervisor.bin。
S230:将hypervisor自启动程序复制到启动介质的启动分区中。
其中,启动介质的选择和启动分区的位置在计算机的启动模式的文件中配置。
综上,一种hypervisor自启动程序的生成方法实施例一获得硬件初始化和hypervisor引导的代码,并与hypervisor的代码一起编译,生成hypervisor自启动程序,该自启动程序无需第三方Bootloader引导即可上电启动操作系统,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
一种hypervisor自启动程序的生成方法实施例二为一种hypervisor自启动程序的生成方法实施例一在ARM芯片上的一种具体的实施方式,具有一种hypervisor自启动程序的生成方法实施例一等启动过程简洁且启动速度能够更快等一切优点,适用使用ARM芯片的快速启动的应用场景。
图3示出了一种hypervisor自启动程序的生成方法实施例二,其包括步骤S310至S350。
为了便于介绍本实施例,以ARMboot的Bootloader为例,从中获得硬件初始化和hypervisor引导的代码,并与虚拟化hypervisor代码一起编译,生成hypervisor自启动程序hypervisor.bin。
对于从其他Bootloader中获得硬件初始化和hypervisor引导的代码并与hypervisor代码一起编译的流程,与本实施例的流程相同,虽然一些文件名和目录存在差异,也属于本发明的保护范围。
S310:从Bootloader代码中剥离硬件初始化的汇编代码,并保存在Hypervisor代码目录的boot目录的第一子目录中,在Hypervisor的编译文件中增加第一目录。
具体地,本步骤执行以下流程:
1)首先找到Bootloader的Stage1对应的代码文件。
其中,主要是以下文件:
arch/arm/cpu/armv7/start.S
board/chip/board/lowlevel_init.S
arch/arm/lib/crt0.S。
其中,crt0.S配置程序运行环境,至少包括中断向量地址定义,bootloader代码段、数据段、bss段定义。
其中,lowlevel_init.S进行硬件初级初始化,至少包括:DDR初始化,安装上电复位中断处理程序,系统时钟初始化。
其中,执行start.S启动Hypervisor的引导。
2)将包括上述三个文件放一起到hypervisor/boot目录中对应的第一子目录中。
其中,保存后的上述三个文件位置为:
hypervisor/boot/arm/arm/cpu/armv7/start.S
hypervisor/boot/board/chip/board/lowlevel_init.S
hypervisor/boot/arch/arm/lib/crt0.S。
其中,arm/arm/cpu、board/chip/board和arch/arm/lib均为第一子目录。
3)在Hypervisor的编译文件Makefile和Kconfig中添加第一目录,使其符合hypervisor的编译框架,在编译hypervisor时能够将Stage1代码编译为bootstage1.o,为融合进hypervisor做准备。
S320:从Bootloader代码中剥离hypervisor引导的C语言代码,并保存在Hypervisor代码目录的boot目录的第二子目录中,在Hypervisor的编译文件中增加第二目录。
其中,hypervisor引导的C语言代码在bootloader的Stage2模块的代码中,其中有板级初始化模块、bootloader命令行的实现、各种外设驱动、模块测试功能的实现、hypervisor引导实现。因为hypervisor中也有板级初始化模块,所以本步骤只需要将hypervisor引导剥离出来hypervisor的代码。
具体地,本步骤包括以下流程:
1)首先找到bootloader的Stage2模块的hypervisor引导的代码文件,主要是以下文件:
cmd/bootm.c
arch/arm/match-chip/board.c
2)将上述2个文件放一起到hypervisor/boot目录的第二子目录中。
其中,保存后的上述两个文件位置为:
hypervisor/boot/bootm.c
hypervisor/boot/arm/match-chip/board.c。
其中,hypervisor/boot/的本身和arm/match-chip为第二子目录。
3)在Hypervisor的编译文件配置Makefile和Kconfig中添加第二目录,使其符合hypervisor的编译框架,在编译hypervisor时能够将hypervisor引导的代码编译为bootstage2.o,为融合进hypervisor做准备。
S330:在Hypervisor的编译文件中增加Hypervisor的boot目录,并对Hypervisor代码目录中所有代码一起编译。
具体地,在hypervisor的编译文件Kconfig和Makefile中增加Hypervisor的boot目录,编译后分别得到模块文件bootstage1.o、bootstage2.o和Hypervisor原编译后的模块(其后缀也为.o)。
S340:将编译生成的各对象文件(.o文件)链接编译成Hypervisor.bin,Hypervisor.bin为hypervisor自启动程序。
其中,图4示出了Hypervisor.bin的各对象文件,其包括硬件初始化对象文件即Bootstage1.o,hypervisor引导对象文件即Bootstage2.o和Hypervisor原对象文件。
S350:将Hypervisor.bin复制到启动介质的启动分区中,以在计算机加电后自动加载运行。
综上,一种hypervisor自启动程序的生成方法实施例二从ARM的bootloader中获得硬件初始化和hypervisor引导的代码,并与虚拟化hypervisor代码一起编译,生成hypervisor自启动程序hypervisor.bin,该自启动程序无需第三方Bootloader引导即可上电启动ARM芯片上的虚拟化操作系统,启动过程简洁且启动速度能够更快,适用ARM芯片上操作系统快速启动的场景。
下面根据图5介绍本发明的一种操作系统启动方法实施例。
一种操作系统启动方法实施例对包含一种hypervisor自启动程序的生成方法实施例一或一种hypervisor自启动程序的生成方法实施例二生成的种hypervisor自启动程序的操作系统进行启动,在计算机上电后从启动介质的启动分区将hypervisor自启动程序加载到内存并运行,hypervisor自启动程序先后执行硬件初始化、hypervisor引导和hypervisor启动,在hypervisor启动完成后,运行所述hypervisor上各系统。本实施例的启动方法无需第三方Bootloader引导即可上电启动,操作系统涉及软件部件自主可控,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
图5示出了一种操作系统启动方法实施例的流程,包括步骤S510和S530。
S510:计算机上电后自动从启动介质的启动分区将hypervisor自启动程序加载到内存的设定位置。
其中,hypervisor自启动程序为Hypervisor.bin。
其中,CPU根据配置的启动模式选择从SPI/NAND/UART/USB中选择启动介质,且在启动介质上确定启动分区位置,还根据配置的启动模式确定内存的设定位置。
S520:在内存的设定位置中运行hypervisor自启动程序,以至少先后执行硬件初始化、hypervisor引导,hypervisor启动。
其中,图2B示出了硬件初始化的主要功能,其包括:
1)程序运行环境准备,至少包括:中断向量地址定义,程序的代码段、数据段和bss段定义;
2)硬件初级初始化,至少包括:DDR初始化,安装上电复位中断处理程序,系统时钟初始化;
3)启动hypervisor引导,至少包括:确定hypervisor引导代码部分在内存中位置,在准备的程序运行环境中运行hypervisor引导。
其中,hypervisor引导用来启动hypervisor。
S530:在hypervisor运行完成后,运行其上各操作系统。
其中,当hypervisor运行完成后对计算机的硬件资源完成了虚拟化,,其上各系统为虚拟化操作系统。
综上,一种操作系统启动方法实施例在自动加载的hypervisor自启动程序中先后执行硬件初始化、hypervisor引导和hypervisor启动,且在hypervisor启动完成后,运行所述hypervisor上各系统。本实施例的启动方法无需第三方Bootloader引导即可上电启动,启动过程简洁且启动速度能够更快,适用有快速启动需求的应用场景。
下面基于图6A至图7介绍本发明的各装置实施例。
图6A示出了本发明的一种hypervisor自启动程序生成装置实施例一的结构,其包括:代码获得模块6110、代码融合模块6120和程序复制模块6130。
代码获得模块6110用于获得硬件初始化的代码和hypervisor引导的代码,其原理和优点请参照一种hypervisor自启动程序生成方法实施例一的步骤S210。
代码融合模块6120用于将硬件初始化和hypervisor引导的代码与hypervisor程序融合,生成hypervisor自启动程序,其原理和优点请参照一种hypervisor自启动程序生成方法实施例一的步骤S220。
程序复制模块6130用于将hypervisor自启动程序复制到启动介质的启动分区中,其原理和优点请参照一种hypervisor自启动程序生成方法实施例一的步骤S230。
图6B示出了本发明的一种hypervisor自启动程序装置实施例一的结构,其包括:代码获得模块6210、代码融合模块6220和程序复制模块6230。
代码获得模块6210用于从Bootloader代码中剥离硬件初始化的汇编代码和hypervisor引导的C语言代码,并分别保存在Hypervisor代码目录的boot目录的第一子目录和第二子目录中,在Hypervisor的编译文件中增加第一目录和第二目录,其原理和优点请参照一种hypervisor自启动程序生成方法实施例二的步骤S310和S320。
代码融合模块6220用于在Hypervisor的编译文件中增加Hypervisor的boot目录,并对Hypervisor代码目录中所有代码一起编译,将编译生成的.o文件链接编译成Hypervisor.bin,Hypervisor.bin为hypervisor自启动程序,其原理和优点请参照一种hypervisor自启动程序生成方法实施例二的步骤S330和S340。
程序复制模块6230将Hypervisor.bin复制到启动介质的启动分区中,以在计算机加电后自动加载运行,其原理和优点请参照一种hypervisor自启动程序生成方法实施例二的步骤S350。
图7示出了本发明的一种操作系统启动装置实施例的结构,其包括:程序加载模块710、内核自启动模块720、系统启动模块730。
程序加载模块710用于计算机上电后自动从启动介质的启动分区将hypervisor自启动程序加载到内存的设定位置,其原理和优点请参照一种操作系统启动方法实施例的步骤S510。
内核自启动模块720用于在内存的设定位置中运行hypervisor自启动程序,以至少先后执行硬件初始化、hypervisor引导,自动hypervisor,其原理和优点请参照一种操作系统启动方法实施例的步骤S520。
系统启动模块730用于在hypervisor运行完成后运行其上各系统,其原理和优点请参照一种操作系统启动方法实施例的步骤S530。
本发明实施例还提供了一种操作系统,包括:利用一种hypervisor自启动程序生成方法实施例一或一种hypervisor自启动程序生成方法实施例二所述方法生成的hypervisor自启动程序。
本发明实施例还提供了一种计算设备,下面结合图8详细介绍。
该计算设备800包括,处理器810、存储器820、通信接口830、总线840。
应理解,该图所示的计算设备800中的通信接口830可以用于与其他设备之间进行通信。
其中,该处理器810可以与存储器820连接。该存储器820可以用于存储该程序代码和数据。因此,该存储器820可以是处理器810内部的存储单元,也可以是与处理器810独立的外部存储单元,还可以是包括处理器810内部的存储单元和与处理器810独立的外部存储单元的部件。
可选的,计算设备800还可以包括总线840。其中,存储器820、通信接口830可以通过总线840与处理器810连接。总线840可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(EFStended Industry StandardArchitecture,EISA)总线等。所述总线840可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本发明实施例中,该处理器810可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器810采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
该存储器820可以包括只读存储器和随机存取存储器,并向处理器810提供指令和数据。处理器810的一部分还可以包括非易失性随机存取存储器。例如,处理器810还可以存储设备类型的信息。
在计算设备800运行时,所述处理器810执行所述存储器820中的计算机执行指令执行各方法实施例的操作步骤。
应理解,根据本发明实施例的计算设备800可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备800中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。
Claims (8)
1.一种hypervisor自启动程序生成方法,其特征在于,包括:
从hypervisor的启动加载代码中获得硬件初始化的代码和hypervisor引导的代码;其中,所述硬件初始化至少包括下列之一:程序运行环境准备、硬件初级初始化、启动hypervisor引导;
对所述硬件初始化的代码、所述hypervisor引导的代码与hypervisor的代码进行融合编译;链接融合编译获得的所述硬件初始化的对象文件、所述hypervisor引导的对象文件与hypervisor的对象文件,生成所述自启动程序。
2.根据权利要求1所述方法,其特征在于,还包括:将所述自启动程序复制到启动介质的启动分区中。
3.根据权利要求1所述方法,其特征在于,
所述程序运行环境准备至少执行以下功能之一:中断向量地址定义,RAM地址分配;
所述硬件低级初始化至少包括以下功能之一:DDR初始化,上电复位中断处理程序安装,系统时钟初始化;
所述启动hypervisor引导至少包括以下功能:确定hypervisor引导代码部分在内存中位置,在准备的程序运行环境中运行hypervisor引导。
4.一种操作系统启动方法,其特征在于,包括:
将权利要求1至3任一所述方法生成的hypervisor自启动程序加载到内存;
在所述内存中运行所述自启动程序,所述自启动程序至少先后执行以下功能:硬件初始化、hypervisor引导和hypervisor启动;
在所述自启动程序运行完成后,运行hypervisor上各操作系统。
5.一种hypervisor自启动程序生成装置,其特征在于,包括:
代码获得模块,用于从hypervisor的启动加载代码中获得硬件初始化的代码和hypervisor引导的代码,其中,所述硬件初始化至少包括下列之一:程序运行环境准备、硬件初级初始化、启动hypervisor引导;
代码融合模块,用于对所述硬件初始化的代码、所述hypervisor引导的代码与hypervisor的代码进行融合编译;链接融合编译获得的所述硬件初始化的对象文件、所述hypervisor引导的对象文件与hypervisor的对象文件,生成所述自启动程序。
6.一种操作系统启动装置,其特征在于,包括:
程序加载模块,用于将权利要求1至3任一所述方法生成的hypervisor自启动程序加载到内存;
内核自启动模块,用于在所述内存中自动运行所述自启动程序,所述自启动程序至少先后执行以下功能:硬件初始化、hypervisor引导和hypervisor启动;
系统启动模块,用于在所述自启动程序运行完成后,运行hypervisor上各系统。
7.一种计算设备,其特征在于,包括,
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行权利要求1至4任一所述方法。
8.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行权利要求1至4任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211097570.8A CN116302150B (zh) | 2022-09-08 | 2022-09-08 | hypervisor自启动程序生成方法和操作系统启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211097570.8A CN116302150B (zh) | 2022-09-08 | 2022-09-08 | hypervisor自启动程序生成方法和操作系统启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116302150A CN116302150A (zh) | 2023-06-23 |
CN116302150B true CN116302150B (zh) | 2024-02-13 |
Family
ID=86798366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211097570.8A Active CN116302150B (zh) | 2022-09-08 | 2022-09-08 | hypervisor自启动程序生成方法和操作系统启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302150B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514027A (zh) * | 2013-11-12 | 2014-01-15 | 北京深思数盾科技有限公司 | 一种增强软件保护易用性的方法 |
US10656940B1 (en) * | 2019-02-04 | 2020-05-19 | Architecture Technology Corporation | Systems, devices, and methods for source code generation from binary files |
CN111736816A (zh) * | 2020-07-20 | 2020-10-02 | 华控清交信息科技(北京)有限公司 | 一种编译链接方法、装置和用于编译链接的装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327316B2 (en) * | 2008-09-30 | 2012-12-04 | Ics Triplex Isagraf Inc. | Compilation model |
-
2022
- 2022-09-08 CN CN202211097570.8A patent/CN116302150B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514027A (zh) * | 2013-11-12 | 2014-01-15 | 北京深思数盾科技有限公司 | 一种增强软件保护易用性的方法 |
US10656940B1 (en) * | 2019-02-04 | 2020-05-19 | Architecture Technology Corporation | Systems, devices, and methods for source code generation from binary files |
CN111736816A (zh) * | 2020-07-20 | 2020-10-02 | 华控清交信息科技(北京)有限公司 | 一种编译链接方法、装置和用于编译链接的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116302150A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10055218B2 (en) | System and method for adding and storing groups of firmware default settings | |
US9183007B2 (en) | Dynamic determination of application server runtime classloading | |
US10810017B2 (en) | Systems and methods for handling firmware driver dependencies in host operating systems while applying updates from bootable image file | |
CN109062617B (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
US8468334B1 (en) | Efficient initial RAM disk creation | |
CN105739961B (zh) | 一种嵌入式系统的启动方法和装置 | |
US20030110369A1 (en) | Firmware extensions | |
US10747526B2 (en) | Apparatus and method to execute prerequisite code before delivering UEFI firmware capsule | |
CN100353320C (zh) | 引导过程 | |
CN102135893A (zh) | 将操作系统集成到bios芯片及启动服务器上操作系统的方法 | |
CN107766084B (zh) | 启动装载及安装方法及其计算系统 | |
CN103514015A (zh) | 一种从存储介质中启动操作系统的方法和装置 | |
US10664598B1 (en) | Firmware security patch deployment | |
US20170337064A1 (en) | System and method for booting an information handling system | |
CN102053848A (zh) | Linux操作系统的自动安装方法 | |
US8499142B1 (en) | UEFI boot loader for loading non-UEFI compliant operating systems | |
CN116249962A (zh) | 用于车载设备应用起动的池管理 | |
US10540151B1 (en) | Graphical customization of a firmware-provided user interface (UI) | |
CN102135923A (zh) | 将操作系统集成到bios芯片的方法及启动该操作系统的方法 | |
CN116302150B (zh) | hypervisor自启动程序生成方法和操作系统启动方法 | |
US11340882B2 (en) | Systems and methods for enforcing update policies while applying updates from bootable image file | |
US20200364040A1 (en) | System and Method for Restoring a Previously Functional Firmware Image on a Non-Volatile Dual Inline Memory Module | |
CN111399926A (zh) | 下载启动程序的方法和装置 | |
CN110286953B (zh) | 嵌入式系统的启动方法、装置、嵌入式设备及存储介质 | |
CN114443582B (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 |