CN110633131A - 一种对固件进行虚拟化的方法、装置、设备及系统 - Google Patents
一种对固件进行虚拟化的方法、装置、设备及系统 Download PDFInfo
- Publication number
- CN110633131A CN110633131A CN201910872171.6A CN201910872171A CN110633131A CN 110633131 A CN110633131 A CN 110633131A CN 201910872171 A CN201910872171 A CN 201910872171A CN 110633131 A CN110633131 A CN 110633131A
- Authority
- CN
- China
- Prior art keywords
- firmware
- virtual
- virtual system
- hardware
- information required
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种对固件进行虚拟化的方法、装置、设备及系统。本申请采集设备固件的固件信息;从固件信息中拆分得到设备的虚拟系统所需的固件信息;利用虚拟系统所需的固件信息生成虚拟系统的虚拟固件,以使虚拟固件启动所述虚拟系统。真实固件虚拟化得到的虚拟固件可用于参与引导虚拟系统启动,从而设备硬件初始化状态或复位状态不稳定的问题,以及硬件出现启动失败、初始化失败以及重启时异常的问题得以解决。虚拟系统的启动使得硬件的初始化成为可能,一旦硬件发生异常后进行重启,虚拟系统利用虚拟固件使硬件初始化恢复到正常的工作状态。可保障虚拟系统的正常工作。相比现有技术,设备硬件及虚拟系统工作的稳定性和可靠性大大提升。
Description
技术领域
本申请涉及虚拟化技术领域,特别是涉及一种对固件进行虚拟化的方法、装置、设备及系统。
背景技术
现有的虚拟化技术方案中,为实现虚拟平台的操作系统(以下简称虚拟系统)启动,通常由物理平台的处理器的虚拟化层(又称虚拟机监视器,英文:Hypervisor)直接引导虚拟系统启动。
参见图1,该图所示为一种现有的实现虚拟系统启动的框架图。在图1展示的虚拟系统启动方式中,通过人工方式将物理平台的固件信息采录到虚拟化层,虚拟化层再利用这些固件信息直接引导虚拟系统的系统内核启动。此处,物理平台指是某一具有多个硬件的设备,例如电脑。
但是实际应用中上述启动方式存在许多问题。例如,物理平台的硬件初始化状态或复位状态不稳定,部分硬件出现启动失败、初始化失败以及重启时异常的问题。此时,应用这些硬件资源的虚拟系统很难正常工作。
发明内容
基于上述问题,本申请提供一种对固件进行虚拟化的方法、装置、设备及系统,将设备的真实固件虚拟化为虚拟固件,以虚拟固件引导虚拟系统启动,提升硬件工作的稳定性和可靠性,解决虚拟系统无法正常工作的问题。
本申请实施例公开了如下技术方案:
第一方面,本申请提供一种对固件进行虚拟化的方法,应用于对设备的固件进行虚拟化,所述固件包括:UEFI固件或BIOS固件,所述方法包括:
采集所述固件的固件信息;
从所述固件信息中拆分得到所述设备的虚拟系统所需的固件信息;
利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
可选地,所述利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,具体包括:
利用所述虚拟系统所需的固件信息和所述固件的源代码生成所述虚拟系统的虚拟固件。
可选地,利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,具体包括:
利用默认固件和所述虚拟系统所需的固件信息,对所述虚拟系统进行启动调试得到调试结果;
判断所述调试结果是否满足预设需求,如果是,则根据所述默认固件和所述虚拟系统所需的固件信息生成所述虚拟固件;如果否,则根据所述预设需求对所述虚拟系统所需的固件信息进行更新,并利用所述默认固件和更新后的固件信息对所述虚拟系统进行启动调试,直到所述调试结果满足所述预设需求。
可选地,判断所述调试结果是否满足预设需求,具体为:判断所述设备的硬件的状态信息是否满足所述预设需求;所述固件与所述硬件配合使用。
可选地,预设需求包括:所述硬件的状态信息可见;
所述根据所述预设需求对所述虚拟系统所需的固件信息进行更新,具体包括:
在所述虚拟系统所需的固件信息中添加对所述硬件的描述信息。
可选地,预设需求包括:所述硬件的状态信息为目标状态;
所述根据所述预设需求对所述虚拟系统所需的固件信息进行更新,具体包括:
在所述虚拟系统所需的固件信息中更改所述硬件的状态对应的功能项,以使所述功能项指向所述目标状态。
可选地,方法还包括:
向所述虚拟系统所需的固件信息中插入虚拟硬件所需的固件信息,以使所述虚拟系统根据所述虚拟固件解析得到所述虚拟硬件。
第二方面,本申请提供一种对固件进行虚拟化的装置,应用于对设备的固件进行虚拟化,所述固件包括:UEFI固件或BIOS固件,所述装置包括:
固件信息采集模块,用于采集所述固件的固件信息;
固件信息编辑模块,用于从所述固件信息中拆分得到所述设备的虚拟系统所需的固件信息;
虚拟固件生成模块,用于利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
可选地,所述虚拟固件生成模块,具体包括:
第一生成单元,用于利用所述虚拟系统所需的固件信息和所述固件的源代码生成所述虚拟系统的虚拟固件。
可选地,所述虚拟固件生成模块,具体包括:
第二生成单元,用于利用默认固件和所述虚拟系统所需的固件信息,对所述虚拟系统进行启动调试得到调试结果;判断所述调试结果是否满足预设需求,如果是,则根据所述默认固件和所述虚拟系统所需的固件信息生成所述虚拟固件;如果否,则根据所述预设需求对所述虚拟系统所需的固件信息进行更新,并利用所述默认固件和更新后的固件信息对所述虚拟系统进行启动调试,直到所述调试结果满足所述预设需求。
可选地,固件信息编辑模块,还用于向所述虚拟系统所需的固件信息中插入虚拟硬件所需的固件信息,以使所述虚拟系统根据所述虚拟固件解析得到所述虚拟硬件。
第三方面,本申请提供一种对固件进行虚拟化的设备,应用于对其上的固件进行虚拟化,所述固件包括:UEFI固件或BIOS固件,所述设备包括:处理器,用于运行计算机程序;所述程序运行时执行上述第一方面提供的对固件进行虚拟化的方法。
第四方面,本申请提供一种对固件进行虚拟化的系统,包括:目标设备和远程设备;所述系统应用于对所述目标设备的固件进行虚拟化;所述固件包括:UEFI固件或BIOS固件;
所述目标设备,用于将所述固件的固件信息提供给所述远程设备;
所述远程设备,用于从所述固件信息中拆分得到所述目标设备的虚拟系统所需的固件信息;利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件;将所述虚拟固件提供给所述目标设备;
所述目标设备,还用于利用所述虚拟固件启动所述虚拟系统。
相较于现有技术,本申请具有以下有益效果:
本申请首先采集设备固件的固件信息;其后从固件信息中拆分得到设备的虚拟系统所需的固件信息;最后利用虚拟系统所需的固件信息生成虚拟系统的虚拟固件,以使虚拟固件启动所述虚拟系统。由于设备的真实固件虚拟化得到的虚拟固件可用于参与引导虚拟系统启动,从而设备硬件初始化状态或复位状态不稳定的问题,以及硬件出现启动失败、初始化失败以及重启时异常的问题得以解决。虚拟系统的启动使得硬件的初始化成为可能,一旦硬件发生异常后进行重启,虚拟系统利用虚拟固件能够使硬件初始化恢复到正常的工作状态。进而,也可以保障虚拟系统的正常工作。相比于现有技术,设备硬件及虚拟系统工作的稳定性和可靠性大大提升。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种实现虚拟系统启动的框架图;
图2为本申请实施例提供的一种对固件进行虚拟化的方法流程图;
图3为本申请实施例提供的一种动态调试方式生成虚拟固件的流程图;
图4为本申请实施例提供的另一种对固件进行虚拟化的方法流程图;
图5为本申请实施例提供的一种对固件进行虚拟化的装置的结构示意图;
图6为本申请实施例提供的一种对固件进行虚拟化的系统的结构示意图。
具体实施方式
目前已有的虚拟化技术方案通常以设备的虚拟化层直接引导虚拟系统启动,但是发明人经过研究发现,以虚拟化层直接引导虚拟系统启动不可避免造成以下问题频发:设备的硬件初始化状态或复位状态不稳定,部分硬件出现启动失败、初始化失败以及重启时异常的问题。发明人究其原因,发现这些问题的产生是由于虚拟系统启动过程中缺乏固件引导。因为现有的虚拟化技术方案影响硬件工作的稳定性和可靠性,以至于虚拟系统难以正常工作,因此,发明人针对该问题,经过研究提供了一种对固件进行虚拟化的方法、装置、设备及系统,将设备的真实固件虚拟化为虚拟固件,以虚拟固件引导虚拟系统启动,提升硬件工作的稳定性和可靠性,解决虚拟系统无法正常工作的问题。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例:
参见图2,该图为本申请实施例提供的一种对固件进行虚拟化的方法流程图。该方法包括:
步骤201:采集设备固件的固件信息。
本步骤提及的设备是指要运行虚拟系统的设备,该设备本身是一个物理平台,包括多个硬件。作为示例,设备可以是电脑,电脑的硬件可以包括但不限于:键盘、鼠标、硬盘、处理器、内存、显卡和网卡等。在实际应用中,虚拟系统不能直接运行在物理平台上,需要通过虚拟化层构造一个虚拟平台。构造虚拟平台的过程实际是将设备的硬件划分给该虚拟平台使用。
设备的固件可以是基本输入/输出系统(Basic Input/Output System,BIOS)固件,或者是统一的可扩展固件接口(Unified Extensible Firmware Interface,UEFI)固件。实际应用中,UEFI固件能够兼容BIOS模式。
为改进现有的虚拟系统启动方法所存在的不足,本实施例提供对设备固件进行虚拟化的方法,目的是生成虚拟固件以引导虚拟系统启动。在生成虚拟固件之前,首先需要对设备真实的固件的信息进行采集。
本步骤实现对于固件的固件信息的采集。此处,设备固件的固件信息可以包括但不限于以下:
(1)设备内存空间中高级配置和电源管理接口(Advanced Configuration andPower Management Interface,ACPI)表及ACPI子表的信息。其中,ACPI子表包括:RSDP、XSDT、RSDT、FACP、APIC、FPDT、FIDT、MCFG、HPET、SSDT、LPIT、DBGP、DBG2、UEFI、TPM2、LUFT、ASF!、BGRT、FACS、DSDT等。
(2)设备的外设部件互联标准(Peripheral Component Interconnect,PCI)等数据总线的信息。
(3)设备的内存数据。
步骤202:从所述固件信息中拆分得到所述设备的虚拟系统所需的固件信息。
实际应用中,设备可能需要虚拟出一个或者多个虚拟平台。如果设备虚拟多个虚拟平台,则本步骤提及的虚拟系统可以是多个虚拟平台之中的一个虚拟平台的操作系统。
在实际应用中,不同虚拟系统所需的固件信息可能是不同的。例如,划分给虚拟平台A的硬件是设备的网卡;划分给虚拟平台B的硬件是设备的鼠标和键盘。因此,为启动虚拟平台A的操作系统及为启动虚拟平台B的操作系统,在生成虚拟固件时所采用的固件信息是不同的。通过上面示例可以发现,不同的虚拟系统具有其对应的硬件资源配置需求,在生成应用于引导某一虚拟系统启动的虚拟固件时,需要结合该虚拟系统对应的硬件资源配置需求采用相应的固件信息实现对固件的虚拟化。
可以理解的是,在前一步骤获得的固件信息中,只有一部分固件信息是生成某一虚拟系统所必需的,为描述简介,下文将其称为:虚拟系统所需的固件信息。
为提升对固件进行虚拟化的效率,本步骤从固件信息中拆分出虚拟系统所需的固件信息。作为一示例,对于需要启动的虚拟平台A的操作系统,因其资源配置需求是网卡,本步骤从固件信息中拆分出与网卡相关的固件信息。作为一示例,对于需要启动的虚拟平台B的操作系统,因其资源配置需求是鼠标和键盘,本步骤从固件信息中拆分出与鼠标和键盘相关的固件信息。
步骤203:利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
作为一种可能的实现方式,实际应用中,可以将前一步骤得到的虚拟系统所需的固件信息保存为.dat、.aml或者.dsl类型的数据文件,也可以保存为.xml或者其他结构化类型的数据文件。本步骤在具体实现时,也是利用前述类型的数据文件中包含的固件信息,即虚拟系统所需的固件信息,生成虚拟系统的虚拟固件。
虚拟固件的本质是程序,当利用虚拟固件引导虚拟系统启动后,虚拟系统在虚拟固件的运行过程中可以解析出虚拟系统所需的固件信息。
下面简单描述虚拟固件引导虚拟系统启动的过程。引导过程是从虚拟固件的入口地址开始执行的。处理器从该入口地址执行虚拟固件程序,虚拟固件在执行过程中能够初始化设备、遍历设备、加载虚拟系统,从而引导虚拟系统启动。
以上是本申请实施例提供的一种对固件进行虚拟化的方法。该方法首先采集设备固件的固件信息;其后从固件信息中拆分得到设备的虚拟系统所需的固件信息;最后利用虚拟系统所需的固件信息生成虚拟系统的虚拟固件,以使虚拟固件启动所述虚拟系统。由于设备的真实固件虚拟化得到的虚拟固件可用于参与引导虚拟系统启动,从而设备硬件初始化状态或复位状态不稳定的问题,以及硬件出现启动失败、初始化失败以及重启时异常的问题得以解决。虚拟系统的启动使得硬件的初始化成为可能,一旦硬件发生异常后进行重启,虚拟系统利用虚拟固件能够使硬件初始化恢复到正常的工作状态。进而,也可以保障虚拟系统的正常工作。相比于现有技术,设备硬件及虚拟系统工作的稳定性和可靠性大大提升。
作为一示例,虚拟系统的硬件的资源配置需求为设备的网卡。在不采用本申请实施例提供的方法的前提下,网卡可能会存在初始化状态或复位状态不稳定的问题,或者网卡启动失败、初始化失败以及重启时异常的问题。应用本实施例方法,在生成虚拟固件的过程中所采用的固件信息包含与网卡相关的描述信息,因此,在虚拟固件启动的过程中,即可对网卡进行初始化,从而解决了上述问题。虚拟固件启动能够引导虚拟系统启动,该系统对网卡具有资源需求,由于网卡能够正常工作,因此虚拟系统在启动后能够正常使用网卡资源。
对于前述实施例提供的对固件进行虚拟化的方法,该方法中步骤202的执行具体可以利用可视化图形界面实现。下面举出两种实现方式分别进行介绍。在这两种实现方式中,步骤201得到的固件信息可以以树的形式显示在可视化图形界面中。
步骤202的实现方式之一:
本实现方式是一种全自动的固件信息拆分方式。具体地,控制在可视化图形界面中将步骤201得到的固件信息以数据表和表项的形式显示。并且,可视化图形界面还显示虚拟平台的数据表。根据虚拟系统的资源配置需求,从所有表项中确定该资源配置需求对应的表项,将这些确定出的表项移动到虚拟平台的数据表中。将虚拟平台的数据表中的表项作为虚拟系统所需的固件信息。
步骤202的实现方式之二:
本实现方式时一种半自动的人工可操控的固件信息拆分方式。具体地,可视化图形界面中将步骤201得到的固件信息以数据表和表项的形式显示。可通过人工方式,依据虚拟系统的资源配置需求将表项拖拽到虚拟平台的数据表中,如此往复,能够将步骤201得到的固件信息分别拆分到各个虚拟平台的数据表中。从而得到了每个虚拟平台的操作系统所需的固件信息。
以上两种实现方式中,通过全自动或半自动的方式实现对固件信息的拆分。相比于完全人工手动编辑固件信息以及对固件信息拆分,上述两种方式减少数据编辑错误或数据编辑疏漏等问题的发生,大大提升对固件信息的拆分效率。
对于前述实施例提供的对固件进行虚拟化的方法,该方法中步骤203具有多种可能的实现方式。下面举出两种实现方式分别进行介绍。
步骤203的实现方式之一:
利用所述虚拟系统所需的固件信息和所述固件的源代码生成所述虚拟系统的虚拟固件。
实际应用中,固件的源代码可以从提供该固件的下载服务的网站或者提供该设备的厂家处获得。即便需要生成的是不同虚拟系统的虚拟固件,在具体实现时,所采用的固件的源代码不变。
将虚拟系统所需的固件信息与固件的源代码一同编译,最终能够得到虚拟系统的虚拟固件。前面提到过,设备的固件具体可以是BIOS固件或者UEFI固件。因此,如果设备的固件是BIOS固件,在该实现方式中即是将虚拟系统所需的BIOS固件的固件信息与BIOS固件的源代码一同编译,获得虚拟系统的虚拟BIOS固件。而如果设备的固件是UEFI固件,在该实现方式中即是将虚拟系统所需的UEFI固件的固件信息与UEFI固件的源代码一同编译,获得虚拟系统的虚拟UEFI固件。
可见,通过源码级编译,便可将任何兼容UEFI固件或BIOS固件的硬件环境抽象为虚拟固件来引导虚拟系统启动。
步骤203的实现方式之二:
需要说明的是,相对于步骤203的前一实现方式,本实现方式的区别在于:采用了一种动态调试的方式生成虚拟系统的虚拟固件。下面进行详细说明。
在本实现方式中,采用了一个默认固件并配合前一步骤得到的虚拟系统所需的固件信息对虚拟系统进行动态启动调试。此处,默认固件是预先编译出的一个最小级功能集合的固件。例如,默认固件只具备初始化硬件的基础通用功能。对于很多设备的硬件,这些基础通用功能的使用方法是统一的,因此该默认固件就可以这些设备中任意一台设备中正常运行,仅功能较少。
在进行动态启动调试时,需要判断调试结果是否满足预设需求。当调试结果满足预设需求时,根据默认固件和虚拟系统所需的固件信息生成虚拟固件;而当调试结果不满足预设需求时,根据预设需求对虚拟系统所需的固件信息进行更新,再利用默认固件和更新后的固件信息重新对虚拟系统进行启动调试,直到调试结果满足预设需求。动态调试的流程可参照图3。
此处预设需求可以是前述的资源配置需求,也可以是基于前述的资源配置需求的进一步延伸。当调试结果不满足预设需求时,对虚拟系统所需的固件信息的更新方式与预设需求相关。也就是说,虚拟系统所需的固件信息是可以更新变化的,对于不同的预设需求,对虚拟系统所需的固件信息的更新方式可能不同。下面列举两个示例对虚拟系统所需的固件信息的更新方式进行说明。
在判断调试结果是否满足预设需求时,具体可以是判断设备的硬件的状态信息是否满足预设需求。本申请实施例中,设备的固件不但服务于设备,并且与设备中的硬件配合使用。
示例一:
预设需求包括:硬件的状态信息可见。调试结果不满足预设需求,即是实际应用中在对虚拟系统进行启动调试时,发现硬件的状态信息不可见。造成该问题的原因可能是调试时所采用的固件信息(即前一步骤得到的虚拟系统所需的固件信息)中存在信息缺失。
此处所指的硬件具体可以是虚拟系统的资源配置需求所涉及的硬件。例如,虚拟系统的资源配置需求是设备的网卡,但是在利用默认固件和虚拟系统所需的固件信息对虚拟系统进行启动调试的结果中显示,该网卡的状态信息不可见。此种调试结果表明,即便利用当前的虚拟系统所需的固件信息及默认固件生成虚拟固件,最终该虚拟固件引导虚拟系统启动后,设备的网卡也没有被分配给运行该虚拟系统的虚拟平台。为避免该情况的发生,在生成虚拟固件之前,对虚拟系统所需的固件信息进行更新。作为一种可能的实现方式,可以在所述虚拟系统所需的固件信息中添加对所述硬件的描述信息。即,如果虚拟系统的资源配置需求是设备的网卡,那么当调试结果不满足预设需求,即网卡的状态信息不可见时,可以在虚拟系统所需的固件信息中添加对网卡的描述信息。从而实现对于虚拟系统所需的固件信息的更新。
在本示例中,通过以上方式更新固件信息,能够在利用更新后的固件信息和默认固件对虚拟系统进行启动调试时,解决调试结果中硬件状态信息不可见的问题。
示例二:
预设需求包括:硬件的状态信息为目标状态。调试结果不满足预设需求,即是实际应用中在对虚拟系统进行启动调试时,发现硬件的状态信息不是目标状态。造成该问题的原因可能是调试时所采用的固件信息(即前一步骤得到的虚拟系统所需的固件信息)中硬件的状态对应的功能项指向存在问题。例如,虚拟系统的资源配置需求是设备的网卡,调试结果显示网卡的状态信息为状态1,而网卡的目标状态是状态2。
此种调试结果表明,即便利用当前的虚拟系统所需的固件信息及默认固件生成虚拟固件,最终该虚拟固件引导虚拟系统启动后,设备的网卡也将以非目标状态被分配给运行该虚拟系统的虚拟平台。为避免该情况的发生,在生成虚拟固件之前,对虚拟系统所需的固件信息进行更新。作为一种可能的实现方式,可以在所述虚拟系统所需的固件信息中更改所述硬件的状态对应的功能项,以使所述功能项指向所述目标状态。例如虚拟系统的资源配置需求是设备的网卡,那么当调试结果不满足预设需求,即网卡的状态信息为非目标状态时,可以在虚拟系统所需的固件信息中,将网卡的状态对应的功能项更改为指向网卡的目标状态。从而实现对于虚拟系统所需的固件信息的更新。
在本示例中,通过以上方式更新固件信息,能够在利用更新后的固件信息和默认固件对虚拟系统进行启动调试时,解决调试结果中硬件状态信息为非目标状态的问题。
以上两个示例描述了步骤203的实现方式之二(即动态调试方式生成虚拟固件)当调试结果不满足预设需求时,对于虚拟固件所需的固件信息进行更新的两种示例性方式。在实际应用中,因预设需求的变化,实际的更新方式不局限于以上两个示例,此处对固件信息更新方式不进行限定。
下面以本申请实施例提供的对固件进行虚拟化的方法由设备的处理器执行为示例,对虚拟固件引导虚拟系统启动的过程进行简要描述。
设备的处理器可以通过模式切换执行不同的功能。例如,当设备的处理器切换为root模式时,处理器具备较高的权限,实现虚拟化层(即Hypervisor)的相关功能;当设备的处理器切换为非root模式时,处理器具备较低的权限,实现guest层的相关功能。
实际应用中,处理器的guest层负责运行虚拟系统。当通过执行上述步骤201-203生成虚拟固件后,虚拟系统的虚拟固件在虚拟系统中启动时,虚拟固件将虚拟系统所需的固件信息拷贝到虚拟系统的内存空间里。
如果虚拟固件是通过前述步骤203的实现方式之一生成的,即利用固件的源代码和虚拟系统所需的固件信息直接生成,则虚拟固件生成后直接发送到guest层的虚拟系统。
如果虚拟固件是通过前述步骤203的实现方式之二生成的,即通过动态调试的方式生成,则在调试结束之前虚拟系统所需的固件信息会发送到虚拟化层中。假设虚拟化层运行一个虚拟固件服务程序,在调试结束之前虚拟系统所需的固件信息具体提供给虚拟固件服务程序。该虚拟固件服务程序能够在调试过程中对虚拟系统所需的固件信息进行更新。另外,虚拟固件服务程序也可以在每次的启动调试期间为虚拟系统引导默认固件。作为一种可能的实现方式,虚拟固件服务程序可以根据虚拟系统拥有的硬件资源,为默认固件动态加载硬件驱动,从而实现向虚拟系统引导默认固件。
可见,该虚拟系统服务程序能够提升后续动态执行调试的便利性。在调试结果不满足预设需求的情况下,借助虚拟化层运行的虚拟固件服务程序,不但能够实现动态调试,还可以提升调试效率。
实际应用中,在对设备的固件进行虚拟化的基础上,本申请实施例进一步提供一种方法为虚拟系统创建虚拟硬件。参见图4,该图为本申请实施例提供的另一种对固件进行虚拟化的方法的流程图。该方法中,在前述步骤201-203的基础上,方法还包括:
步骤S:向所述虚拟系统所需的固件信息中插入虚拟硬件所需的固件信息。
可以理解的是,如果虚拟系统所需的固件信息中插入了虚拟硬件所需的固件信息,那么当执行步骤203生成虚拟固件后,虚拟系统在虚拟固件的引导下启动,并能在启动过程中解析得到虚拟硬件所需的固件信息。虚拟硬件所需的固件信息可以是对虚拟硬件的描述,对于虚拟系统而言,解析出这些信息就相当于得到了虚拟硬件的资源。
需要说明的是,虚拟硬件具体对应的可以是设备已有但是被其他虚拟系统占用的硬件,例如虚拟系统A可能正在使用网卡的资源,如此一来另一虚拟系统B将不能使用网卡的资源。创建虚拟硬件则可以为虚拟系统B创建一个虚拟的网卡,从而虚拟系统B可以应用该虚拟网卡的资源。在这种情况下,虚拟硬件所需的固件信息可以从步骤201得到的固件信息中拆分获得。通过执行本步骤可以使多个虚拟系统共享硬件资源。
另外,本步骤中可以是将用户通过可视化图形界面提供的关于虚拟硬件的描述作为虚拟硬件所需的固件信息。虚拟硬件还可以是设备不具备的硬件,例如设备中不存在光驱,根据用户的需求将虚拟光驱的描述插入到虚拟系统所需的固件信息中,可以使虚拟系统在运行虚拟固件时解析到自身拥有该虚拟光驱的资源。从而,实现对虚拟系统的资源扩充。作为一种可能的实现方式,如果可视化图形界面中固件信息以数据表和表项的形式显示,并且该可视化图形界面中还包括各个虚拟平台的数据表,则在本步骤中,可以将用户提供的对虚拟硬件的描述信息以表项的形式创建到需要配置该虚拟硬件的虚拟系统所在虚拟平台的数据表中。
基于前述实施例提供的对固件进行虚拟化的方法,相应地,本申请还提供一种对固件进行虚拟化的装置。下面结合实施例和附图对该装置的具体实现进行描述。
装置实施例:
参见图5,该图为本申请实施例提供的一种对固件进行虚拟化的装置的结构示意图。如图5所示,该装置包括:固件信息采集模块501,固件信息编辑模块502,以及虚拟固件生成模块503。
其中,固件信息采集模块501,用于采集所述设备固件的固件信息;
固件信息编辑模块502,用于从所述固件信息中拆分得到所述设备的虚拟系统所需的固件信息;
虚拟固件生成模块503,用于利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
由于设备的真实固件虚拟化得到的虚拟固件可用于参与引导虚拟系统启动,从而设备硬件初始化状态或复位状态不稳定的问题,以及硬件出现启动失败、初始化失败以及重启时异常的问题得以解决。虚拟系统的启动使得硬件的初始化成为可能,一旦硬件发生异常后进行重启,虚拟系统利用虚拟固件能够使硬件初始化恢复到正常的工作状态。进而,也可以保障虚拟系统的正常工作。相比于现有技术,设备硬件及虚拟系统工作的稳定性和可靠性大大提升。
下面提供虚拟固件生成模块503的两种具体实现方式。
第一种实现方式:
虚拟固件生成模块503,具体可以包括:
第一生成单元,用于利用所述虚拟系统所需的固件信息和所述固件的源代码生成所述虚拟系统的虚拟固件。
通过源码级编译,便可将任何兼容UEFI固件或BIOS固件的硬件环境抽象为虚拟固件来引导虚拟系统启动。
第二种实现方式:
虚拟固件生成模块503,具体可以包括:
第二生成单元,用于利用默认固件和所述虚拟系统所需的固件信息,对所述虚拟系统进行启动调试得到调试结果;判断所述调试结果是否满足预设需求,如果是,则根据所述默认固件和所述虚拟系统所需的固件信息生成所述虚拟固件;如果否,则根据所述预设需求对所述虚拟系统所需的固件信息进行更新,并利用所述默认固件和更新后的固件信息对所述虚拟系统进行启动调试,直到所述调试结果满足所述预设需求。
虚拟系统所需的固件信息是可以更新变化的,对于不同的预设需求,对虚拟系统所需的固件信息的更新方式可能不同。可选地,第二生成单元具体用于判断所述设备的硬件的状态信息是否满足所述预设需求。
如果预设需求包括:所述硬件的状态信息可见,则当设备的硬件的状态信息不满足所述预设需求时,第二生成单元具体用于在所述虚拟系统所需的固件信息中添加对所述硬件的描述信息。
如果预设需求包括:所述硬件的状态信息为目标状态,则当设备的硬件的状态信息不满足预设需求时,第二生成单元在所述虚拟系统所需的固件信息中更改所述硬件的状态对应的功能项,以使所述功能项指向所述目标状态。
实际应用中,对固件进行虚拟化的装置还可进一步包括:
固件信息编辑模块502,还用于向所述虚拟系统所需的固件信息中插入虚拟硬件所需的固件信息,以使所述虚拟系统根据所述虚拟固件解析得到所述虚拟硬件。
通过添加虚拟硬件所需的固件信息为虚拟系统创建虚拟硬件,可以实现多个虚拟系统对硬件资源的共享,或者可以实现对虚拟系统的虚拟硬件资源的扩充。
基于前述实施例提供的对固件进行虚拟化的方法及装置,相应地,本申请还提供一种对固件进行虚拟化的设备。该设备的固件可以是BIOS固件或者UEFI固件,此处不做限定。
该设备包括处理器,该处理器用于运行计算机程序。当该程序运行时,执行前述方法实施例描述的对固件进行虚拟化的方法。由于前述方法实施例对该方法展开了较为详细的描述,故此处不再赘述处理器运行计算机程序时该设备实现的相应功能。相关功能和作用描述可参照前述方法实施例。
可见,该设备可独立完成对设备固件的固件信息的采集,从固件信息中拆分得到所述设备的虚拟系统所需的固件信息,以及利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
实际应用中,上述部分功能还可通过远程设备实现。在此,本申请还提供一种对固件进行虚拟化的系统。结合附图和实施例对该系统的具体实现进行描述。
系统实施例:
参见图6,该图为本申请实施例提供的对固件进行虚拟化的系统结构示意图。通过图6可以看到该系统包括:目标设备601和远程设备602。
目标设备601,用于将固件的固件信息提供给所述远程设备602;
远程设备602,用于从所述固件信息中拆分得到所述目标设备601的虚拟系统所需的固件信息;利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件;将所述虚拟固件提供给所述目标设备601;
目标设备601,还用于利用所述虚拟固件启动所述虚拟系统。
实际应用中,目标设备601可以是预先采集了自身固件的固件信息。如果自身固件是BIOS固件,则目标设备601采集了BIOS固件的固件信息;如果自身固件是UEFI固件,则目标设备601采集了UEFI固件的固件信息。另外,目标设备601还可以是当获取到来自远程设备602的控制指令后,根据该控制指令执行对自身固件的固件信息的采集与传输。
利用远程设备602拆分固件信息的多种实现方式和生成虚拟固件的多种实现方式均可参照前述实施例,此处不进行赘述。
由于目标设备601的真实固件虚拟化得到的虚拟固件可用于参与引导目标设备601虚拟系统启动,从而目标设备601硬件初始化状态或复位状态不稳定的问题,以及硬件出现启动失败、初始化失败以及重启时异常的问题得以解决。虚拟系统的启动使得硬件的初始化成为可能,一旦硬件发生异常后进行重启,虚拟系统利用虚拟固件能够使硬件初始化恢复到正常的工作状态。进而,也可以保障虚拟系统的正常工作。相比于现有技术,设备硬件及虚拟系统工作的稳定性和可靠性大大提升。
另外,对固件进行虚拟化的系统中还包括远程设备602,对固件信息的拆分以及虚拟固件的生成均通过远程设备602的实现,因此即便目标设备601只能执行很少的一部分功能,其他用于生成虚拟固件的功能也可以依靠远程设备602完成。可见,该对固件进行虚拟化的系统提升了对固件进行虚拟化的可靠性。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元提示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (10)
1.一种对固件进行虚拟化的方法,其特征在于,应用于对设备的固件进行虚拟化,所述固件包括:UEFI固件或BIOS固件,所述方法包括:
采集所述固件的固件信息;
从所述固件信息中拆分得到所述设备的虚拟系统所需的固件信息;
利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
2.根据权利要求1所述的方法,其特征在于,所述利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,具体包括:
利用所述虚拟系统所需的固件信息和所述固件的源代码生成所述虚拟系统的虚拟固件。
3.根据权利要求1所述的方法,其特征在于,所述利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,具体包括:
利用默认固件和所述虚拟系统所需的固件信息,对所述虚拟系统进行启动调试得到调试结果;
判断所述调试结果是否满足预设需求,如果是,则根据所述默认固件和所述虚拟系统所需的固件信息生成所述虚拟固件;如果否,则根据所述预设需求对所述虚拟系统所需的固件信息进行更新,并利用所述默认固件和更新后的固件信息对所述虚拟系统进行启动调试,直到所述调试结果满足所述预设需求。
4.根据权利要求3所述的方法,其特征在于,所述判断所述调试结果是否满足预设需求,具体为:判断所述设备的硬件的状态信息是否满足所述预设需求;所述固件与所述硬件配合使用。
5.根据权利要求4所述的方法,其特征在于,所述预设需求包括:所述硬件的状态信息可见;
所述根据所述预设需求对所述虚拟系统所需的固件信息进行更新,具体包括:
在所述虚拟系统所需的固件信息中添加对所述硬件的描述信息。
6.根据权利要求4所述的方法,其特征在于,所述预设需求包括:所述硬件的状态信息为目标状态;
所述根据所述预设需求对所述虚拟系统所需的固件信息进行更新,具体包括:
在所述虚拟系统所需的固件信息中更改所述硬件的状态对应的功能项,以使所述功能项指向所述目标状态。
7.根据权利要求1所述的方法,其特征在于,还包括:
向所述虚拟系统所需的固件信息中插入虚拟硬件所需的固件信息,以使所述虚拟系统根据所述虚拟固件解析得到所述虚拟硬件。
8.一种对固件进行虚拟化的装置,其特征在于,应用于对设备的固件进行虚拟化,所述固件包括:UEFI固件或BIOS固件,所述装置包括:
固件信息采集模块,用于采集所述固件的固件信息;
固件信息编辑模块,用于从所述固件信息中拆分得到所述设备的虚拟系统所需的固件信息;
虚拟固件生成模块,用于利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件,以使所述虚拟固件启动所述虚拟系统。
9.一种对固件进行虚拟化的设备,其特征在于,应用于对其上的固件进行虚拟化,所述固件包括:UEFI固件或BIOS固件,所述设备包括:处理器,用于运行计算机程序;所述程序运行时执行如权利要求1-7任一项所述的对固件进行虚拟化的方法。
10.一种对固件进行虚拟化的系统,其特征在于,包括:目标设备和远程设备;所述系统应用于对所述目标设备的固件进行虚拟化;所述固件包括:UEFI固件或BIOS固件;
所述目标设备,用于将所述固件的固件信息提供给所述远程设备;
所述远程设备,用于从所述固件信息中拆分得到所述目标设备的虚拟系统所需的固件信息;利用所述虚拟系统所需的固件信息生成所述虚拟系统的虚拟固件;将所述虚拟固件提供给所述目标设备;
所述目标设备,还用于利用所述虚拟固件启动所述虚拟系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910872171.6A CN110633131B (zh) | 2019-09-16 | 2019-09-16 | 一种对固件进行虚拟化的方法、装置、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910872171.6A CN110633131B (zh) | 2019-09-16 | 2019-09-16 | 一种对固件进行虚拟化的方法、装置、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110633131A true CN110633131A (zh) | 2019-12-31 |
CN110633131B CN110633131B (zh) | 2022-05-31 |
Family
ID=68971403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910872171.6A Active CN110633131B (zh) | 2019-09-16 | 2019-09-16 | 一种对固件进行虚拟化的方法、装置、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110633131B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185720A (zh) * | 2022-02-17 | 2022-03-15 | 浪潮(山东)计算机科技有限公司 | 服务器动态热备份的方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080046711A1 (en) * | 2006-08-17 | 2008-02-21 | Quanta Computer Inc. | Computer system and boot code accessing method thereof |
CN102043917A (zh) * | 2010-12-07 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 云系统分布式拒绝服务攻击防护方法以及装置和系统 |
CN102754077A (zh) * | 2009-12-14 | 2012-10-24 | 思杰系统有限公司 | 可从外部媒体装置引导的安全虚拟化环境 |
CN103186422A (zh) * | 2011-12-28 | 2013-07-03 | 英业达股份有限公司 | 云端伺服系统及虚拟机的操作系统等价迁移方法 |
CN106980493A (zh) * | 2016-01-18 | 2017-07-25 | 中兴通讯股份有限公司 | 固件管理方法和装置 |
CN108108177A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 物理主机的固件升级方法、物理主机及虚拟机 |
CN108509346A (zh) * | 2018-04-13 | 2018-09-07 | 郑州云海信息技术有限公司 | 一种双系统bios持续集成平台及方法 |
CN109255242A (zh) * | 2018-09-18 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种基于可信uefi固件引导虚拟机启动的方法及系统 |
-
2019
- 2019-09-16 CN CN201910872171.6A patent/CN110633131B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080046711A1 (en) * | 2006-08-17 | 2008-02-21 | Quanta Computer Inc. | Computer system and boot code accessing method thereof |
CN102754077A (zh) * | 2009-12-14 | 2012-10-24 | 思杰系统有限公司 | 可从外部媒体装置引导的安全虚拟化环境 |
CN102043917A (zh) * | 2010-12-07 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 云系统分布式拒绝服务攻击防护方法以及装置和系统 |
CN103186422A (zh) * | 2011-12-28 | 2013-07-03 | 英业达股份有限公司 | 云端伺服系统及虚拟机的操作系统等价迁移方法 |
CN106980493A (zh) * | 2016-01-18 | 2017-07-25 | 中兴通讯股份有限公司 | 固件管理方法和装置 |
CN108108177A (zh) * | 2018-01-02 | 2018-06-01 | 联想(北京)有限公司 | 物理主机的固件升级方法、物理主机及虚拟机 |
CN108509346A (zh) * | 2018-04-13 | 2018-09-07 | 郑州云海信息技术有限公司 | 一种双系统bios持续集成平台及方法 |
CN109255242A (zh) * | 2018-09-18 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种基于可信uefi固件引导虚拟机启动的方法及系统 |
Non-Patent Citations (2)
Title |
---|
TROESTER, M: "Innovations in infrastructure firmware for the IBM z13", 《IBM JOURNAL OF RESEARCH AND DEVELOPMENT》 * |
李珣: "基于多核的虚拟机监控器调度优化研究", 《中国优秀硕士学位论文期刊数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114185720A (zh) * | 2022-02-17 | 2022-03-15 | 浪潮(山东)计算机科技有限公司 | 服务器动态热备份的方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110633131B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102375764B (zh) | 在软件部署中进行故障管理的方法和系统 | |
CN101794235B (zh) | 基于操作系统网络驱动的无盘计算机启动方法 | |
US10481924B2 (en) | Dynamically managing a serial port interface connected to a direct console user interface (DCUI) of virtualization software using headless flags | |
CN110737479A (zh) | 一种无盘启动操作系统的方法、服务器和可读存储介质 | |
CN109002346B (zh) | 一种Windows虚拟机引导程序的转换方法 | |
US10303487B2 (en) | System and method for booting an information handling system | |
US20130024857A1 (en) | Method and system for flexible resource mapping for virtual storage appliances | |
CN110968392A (zh) | 一种升级虚拟化模拟器的方法和装置 | |
CN115269057A (zh) | 基于设备树的隔离系统生成配置文件的方法 | |
US9164788B2 (en) | Apparatus and method for automatic para-virtualization of OS kernel | |
EP3543849A1 (en) | Driver management method and host machine | |
CN110633131B (zh) | 一种对固件进行虚拟化的方法、装置、设备及系统 | |
WO2016177261A1 (zh) | 在线升级基于内核虚拟机模块的设备和方法 | |
US8813072B1 (en) | Inverse virtual machine | |
CN104182271A (zh) | 一种基于申威处理器的虚拟化实现方法 | |
Hammel | Managing kvm deployments with virt-manager | |
CN115617444A (zh) | 融合多桌面架构的系统启动方法、装置、设备及存储介质 | |
CN115794132A (zh) | 操作系统部署方法、装置、设备及存储介质 | |
CN112817642A (zh) | X86平台使用固件自动切换启动efi操作系统的方法、装置 | |
US8555046B2 (en) | Computer system and its HW abstraction method | |
EP3161652B1 (en) | Full virtual machine functionality | |
US10956175B2 (en) | Boot process modification | |
KR20190056067A (ko) | 서버 메인보드 제어를 위한 통합 bsp 활용 방법 | |
US20220391254A1 (en) | Information processing device, operation control method, and computer-readable recording medium storing operation control program | |
CN107256171B (zh) | 一种基于bios的多系统安装和切换方法及系统 |
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 |