X86平台使用固件自动切换启动EFI操作系统的方法、装置与流程

文档序号:25091862发布日期:2021-05-18 20:37阅读:138来源:国知局
x86平台使用固件自动切换启动efi操作系统的方法、装置
技术领域
:1.本发明涉及计算机
技术领域
:,具体涉及一种x86平台使用固件自动切换启动efi操作系统的方法、装置。
背景技术
::2.x86计算机主机板的操作系统通常需要进行远程升级维护,升级维护后的操作系统需要重启后才能生效,但设备重启可能会失败,一旦重启失败,设备将处于离线状态,远程端无法再对设备进行升级维护,此时需要维护人员前往设备安装现场重启后再做升级维护,增加了设备维护成本。3.另外,在当前运行的操作系统出现故障需要切换到备用操作系统时,需要手动按下系统切换按键,设备在检测到按键按下后,对设备进行复位,并由bios切换引导启动备用系统。但设备在远端时,这种手动切换操作系统的方式同样需要维护人员前往设备现场,非常不便。技术实现要素:4.本发明的目的在于提供一种x86平台使用固件自动切换启动efi操作系统的方法、装置,以在系统启动失败后自动触发切换启动机制,切换到另一个efi操作系统,确保系统启动成功,避免发生因设备掉线无法进行远程升级维护的情况。5.为达此目的,本发明采用以下技术方案:6.提供一种x86平台使用固件自动切换efi操作系统的方法,具体包括:7.步骤s1,cpu从边带控制器中获取系统引导启动策略;8.步骤s2,加载引导程序,所述引导程序根据获取的所述引导启动策略从磁盘设备中选择相应的引导入口进行系统引导;9.步骤s3,检测系统引导启动是否成功,并在启动失败时,复位重启所述cpu,然后所述引导程序根据所述引导启动策略自动切换启动其他efi操作系统;10.步骤s4,更新并存储所述引导启动策略。11.作为本发明的一种优选方案,所述引导启动策略为:12.若主系统引导启动成功,则在下一次引导启动时,所述引导程序同样首先尝试引导启动所述主系统。13.作为本发明的一种优选方案,所述引导启动策略为:14.若主系统引导启动成功,则在下一次引导启动时,所述引导程序尝试引导启动备用系统,若所述备用系统引导启动失败,则所述引导程序重新引导启动所述主系统。15.作为本发明的一种优选方案,所述引导启动策略为:16.若主系统引导启动失败,则所述引导程序尝试引导启动备用系统,若所述备用系统引导启动同样失败,则所述引导程序引导启动精简系统,并在所述精简系统中设置下一次引导启动所述主系统。17.作为本发明的一种优选方案,还包括强制启动精简系统的方法,强制启动所述精简系统的方法具体为:18.触发设置在所述边带控制器上的强制重启按键,所述强制重启按键向所述cpu发送一个强制启动信号,所述cpu根据接收到的所述强制启动信号通过所述引导程序引导启动所述精简系统。19.作为本发明的一种优选方案,所述强制重启信号可通过长按所述强制重启按键触发或通过bmc控制器远程触发。20.作为本发明的一种优选方案,所述边带控制器为ec控制器、mcu微控制单元、cpld可编程逻辑器件或bmc控制器中的任意一种。21.作为本发明的一种优选方案,所述磁盘设备为hdd、sdd或emmc存储器中的任意一种。22.作为本发明的一种优选方案,所述磁盘设备采用gpt分区方式进行磁盘分区。23.作为本发明的一种优选方案,所述边带控制器与所述cpu通过bus总线实现相互间的通信连接,所述bus总线为smbus总线或uart总线。24.本发明还提供了一种x86平台使用固件自动切换efi操作系统的装置,所述装置包括:25.引导启动策略获取模块,用于通过cpu从边带控制器中获取系统引导启动策略;26.引导程序加载模块,用于在设备上电后加载系统引导程序;27.系统引导模块,分别连接所述引导启动策略获取模块和所述引导程序加载模块,用于通过所述引导程序根据获取的所述引导启动策略从磁盘设备中选择相应的引导入口进行系统引导;28.引导成功与否检测模块,连接所述系统引导模块,用于检测系统引导是否成功,并输出检测结果;29.切换启动模块,分别连接所述引导启动策略获取模块和所述引导成功与否检测模块,用于在检测到系统引导启动失败后,根据所述引导启动策略自动切换启动其他efi操作系统;30.引导启动策略创建及更新模块,用于提供给维护人员创建或更新所述引导启动策略并存储到所述边带控制器中。31.本发明还提供了一种计算机可读存储介质,包括执行指令,当电子设备的处理器执行所述执行指令时,所述处理器执行所述的自动切换启动efi操作系统的方法。32.本发明能够自动检测系统启动是否成功,并在启动失败后自动触发系统切换启动策略,直至系统启动成功,系统切换触发过程不需要人工介入,降低了以往触发系统切换需要前往现场的高额维护成本。附图说明33.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。34.图1是本发明一实施例提供的自动切换efi操作系统的方法步骤图;35.图2是本发明一实施例提供的自动切换efi操作系统的装置的内部结构示意图;36.图3是本发明一实施例提供的自动切换efi操作系统的方法的实现流程图;37.图4是实现本发明一实施例提供的自动切换efi操作系统的方法的装置结构框图。具体实施方式38.下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。39.其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本专利的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。40.本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若出现术语“上”、“下”、“左”、“右”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。41.在本发明的描述中,除非另有明确的规定和限定,若出现术语“连接”等指示部件之间的连接关系,该术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个部件内部的连通或两个部件的相互作用关系。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。42.在阐述本发明实施例提供的x86平台使用固件自动切换efi操作系统的具体方法之前,首先对阐述内容将涉及到的专业词汇进行释义。43.bios(basicinput/outputsystem),即基本输入输出系统,是在设备通电引导阶段运行硬件初始化,然后从大容量存储设备(如硬盘)加载引导程序,并由引导程序加载操作系统,以及为操作系统提供运行时服务的固件。44.uefi(unifiedextensiblefirmwareinterface),即统一可扩展固件接口,用于定义操作系统与系统固件之间的软件界面,作为bios的替代方案。可扩展固件接口负责加电自检、联系操作系统以及提供连接操作系统与硬件的接口。45.gpt(guidpartitiontable),即全局唯一标识分区表,是一个实体硬盘的分区表的结构布局的标准。它是uefi标准的一部分,被用于替代bios系统中用来存储逻辑块地址和大小信息的主引导记录(mbr)分区表。46.efi操作系统,通常指可支持efi引导的操作系统。linux内核自2000年开始,已经支持efi引导。目前大多数linux发行版已使用grub作为efi操作系统下的引导程序。47.efi操作系统通常有两个分区:引导分区和系统分区,efi操作系统要求磁盘分区表为gpt格式。48.以下以x86平台安装有主系统activeos、备用系统backupos和精简系统goldenos三个efi操作系统为例,并结合图4示出的实现本实施例提供的自动切换efi操作系统的方法的装置的结构框图,首先对实现自动切换efi操作系统的方法的装置结构以及装置核心部件的功能进行说明:49.图4中的activeos,是指承载了实际应用软件的主系统,在大多数情况下都在此系统中对备用系统backupos进行升级维护;50.backupos为在功能上与主系统activeos基本相同的备用系统,backupos与主系统activeos互为备份,可以在此系统中对主系统activeos进行升级维护;51.goldenos为最小化的精简系统,仅加载启动所需的最少部件,主要用于对主系统activeos和备用系统backupos的升级维护。52.图4中的cpu主要有两个运行阶段:53.一是bios阶段,此阶段主要完成硬件的初始化,启动项的检测、选择及引导。在系统引导启动过程中,bios根据边带控制器(sidebandcontroller,简称“sbc”)中存储的引导启动策略(bootpolicy),从磁盘设备(bootablediskdevices)中选择相应的引导入口(bootentry)进行系统引导,如果启动成功,则进入os阶段,如果启动失败,则设置在边带控制器上的引导看门狗(bootwatchdog)会控制cpu复位重启,bios根据引导启动策略重新选择下一个合适的引导入口。54.二是os阶段,系统引导成功后进入os阶段(系统正常运行阶段),在此阶段中维护人员可以通过相关的接口更新引导启动策略,比如将下一次引导启动的系统由activeos修改为backupos。如果未作任何更改,则设备下一次还是引导启动activeos。55.边带控制器,是一个由standbypower供电的控制芯片,其可以是ec控制器、mcu微控制单元、cpld可编程逻辑器件或bmc控制器中的任意一种。本实施例中,边带控制器主要提供以下三个功能:56.1、提供系统引导所需的引导启动策略;57.2、提供引导看门狗(bootwatchdog)功能,在系统引导失败时,引导看门狗有能力将cpu复位重启;58.3、提供强制重启按键(button),用户可通过长按或远程触发(比如长按4s或通过bmc控制器远程触发)该强制重启按键,强制设备引导启动精简系统goldenos。59.以下对本发明实施例提供的x86平台使用固件自动切换efi操作系统的方法进行阐述:60.请参照图1并结合图4,本实施例提供的自动切换efi操作系统的方法包括:61.步骤s1,cpu从边带控制器(sidebandcontroller)中获取系统引导启动策略(系统引导策略存储在边带控制器的非易失性存储器(nvramregion)中;cpu与边带控制器通过bus总线实现相互间的通信连接,为了确保数据传输的速度和稳定性,bus总线优选采用smbus总线或uart总线;62.步骤s2,bios加载引导程序(bootmanager),引导程序根据获取的引导启动策略(bootpolicy)从磁盘设备(bootablediskdevices)中选择相应的引导入口(bootentry)进行系统引导;63.本实施例中,bootablediskdevices指具有多个可引导efi操作系统的磁盘设备,该磁盘设备可以是板载的emmc,或者为通过主板接口与主板连接的hdd、sdd等存储器。磁盘设备上安装的每一个efi操作系统都有一个对应的系统引导入口(bootentry)。被x更新ꢀꢀsbcbios75.表b76.表b中的a1、a3、a7、a8、b1为图3示出的自动切换启动efi系统的方法的实现流程图中的对应流程步骤。a1为引导程序尝试启动主系统activeos;a3表示主系统activeos启动失败;a7表示主系统activeos启动失败后,边带控制器复位重启cpu;a8表示cpu复位重启后,引导程序尝试启动备用系统backupos;b1表示备用系统backupos启动后下一次启动还是选择启动备用系统backupos。77.第二种引导启动策略为:78.若主系统activeos启动成功,则在下一次引导启动时,引导程序同样首先尝试启动主系统activeos。79.第二种引导启动策略可通过下表c表示:80.阶段a1a2a4a1lastbootentryaaaexpectedbootentryaaalastbootstatusngoknginvalidbootentrysnnnbootwatchdogstatusnnn被x更新osabios81.表c82.表c中的a1、a2、a4为图3中示出的对应流程步骤。a1表示引导程序引导启动主系统activeos;a2表示主系统activeos引导启动成功;a4表示下一次还是引导启动主系统activeos。83.第三种引导启动策略为:84.若主系统activeos引导启动成功,则进入系统运行,维护人员在当前运行的主系统activeos中升级维护备用系统backupos,升级成功后设置下一次从备用系统backupos启动,则系统重启后,引导程序从备用系统backupos启动,如果备用系统backupos启动成功,则保持备用系统backupos运行,如果备用系统backupos引导启动失败,边带控制器中的引导看门狗将cpu复位重启,然后引导程序重新选择引导启动主系统activeos。85.第三种引导启动策略可通过下表d表示:86.阶段a1a2a5a6a8b1b3b7b8a1lastbootentryaaabꢀꢀbaexpectedbootentryaabbꢀꢀbalastbootstatusngokokngꢀꢀngnginvalidbootentrysnnnnꢀꢀnbbootwatchdogstatusnnnnꢀꢀexpn被x更新osaosabiosꢀꢀsbcbios87.表d88.表d中示出的a1、a2、a5、a6、a8、b1、b3、b7、b8为图3中对应的流程步骤图。a1表示引导启动主系统activeos;a2表示主系统activeos引导启动成功;a5表示设置下一次从备用系统backupos启动;a6表示系统重启;a8表示引导程序选择启动备用系统backupos;b1表示引导程序引导启动备用系统backupos;b3表示备用系统backup0s引导启动失败;b7表示边带控制器复位重启cpu;b8表示引导程序选择引导启动主系统backup。89.第四种引导启动策略为:90.若主系统activeos引导启动失败,则引导程序尝试引导启动备用系统backupos,若备用系统backupos引导启动同样失败,则边带控制器的引导看门狗复位重启cpu,cpu重新启动后,引导程序引导启动精简系统goldenos,进入精简系统goldenos后,维护人员在精简系统goldenos中对主系统activeos进行升级维护,并设置下一次从主系统activeos启动。91.第四种引导启动策略可通过下表e表示:[0092][0093]表e[0094]表e中示出的a1、a3、a7、a8、b1、b3、b7、b9、g1、g2、g3、g4、a1、a2、a4、a1分别为图3中对应的流程步骤图。a1表示引导启动主系统activeos;a3表示主系统activeos引导失败;a7表示边带控制器复位重启cpu;a8表示引导程序选择启动备用系统backupos;b1表示引导程序引导启动备用系统backupos;b3表示备用系统backupos引导启动失败;b7表示边带控制器复位重启cpu;b9表示引导程序选择启动精简系统goldenos;g1表示引导程序引导启动精简系统goldenos;g2表示精简系统goldenos引导启动成功;g3表示设置下一次引导启动主系统activeos;g4表示引导程序选择引导启动主系统activeos;a2表示主系统activeos引导启动成功;a4表示系统重启。[0095]第五种引导启动策略为强制启动精简系统goldenos,强制启动精简系统goldenos的方法具体为:[0096]触发(可通过长按强制重启按键触发或通过bmc(baesboardmanagementcontroller,基本管理控制器远程触发)设置在边带控制器上的强制重启按键(图4中的英文“button”表示),强制重启按键向cpu发送一个强制启动信号,cpu根据接收到的强制启动信号通过引导程序引导启动精简系统goldenos。[0097]第五种引导启动策略可通过以下表f表示:[0098]阶段g0g1g2lastbootentryaggexpectedbootentryagglastbootstatusngng0kinvalidbootentrysnnnbootwatchdogstatusnnnbuttonflagpnn被x更新sbcbiossbc[0099]表f[0100]表f中的g0、g1、g2分别为图3中对应的流程步骤。g0表示选择强制启动精简系统goldenos;g1表示引导程序强制启动精简系统goldenos;g2表示精简系统golden启动成功进入正常运行。[0101]上述表b‑f中的参数lastbootentry、expectedbootentry、lastbootstatus、invalidbootentrys、bootwatchdogstatus、buttonflag的字体加粗后的参数值(比如表b中的“a7”项下的参数值“exp”和“a8”项下的参数值“b”、“b”、“a”等)表示该参数值在引导启动过程中被更新。[0102]综上,本发明具有以下有益效果:[0103]1、可以在n+1个系统之间进行切换,其中n表示多个主系统activeos或备用系统backupos;[0104]2、可自动检测系统引导启动是否失败,并在启动失败后自动触发切换机制,无需维护人员手动触发切换,降低了以往启动失败后需要前往现场触发启动的高额维护成本;[0105]3、可事先通过相关接口向边带控制器写入引导启动策略,实现对系统的主动切换,即在设备开机且系统正常运行状态下,系统主动选择下一次想要启动的操作系统;[0106]4、本发明保留了强制重启按键,可通过触发强制重启按键强制引导启动精简系统goldenos,以在主系统activeos和备用系统backupos都无法正常启动的情况下,进入精简系统goldenos对主系统和备用系统进行升级维护。[0107]本发明还提供了一种x86平台使用固件自动切换efi操作系统的装置,如图2所示,该装置包括:[0108]引导启动策略获取模块,用于通过cpu从边带控制器中获取系统引导启动策略;[0109]引导程序加载模块,用于在设备上电后加载系统引导程序;[0110]系统引导模块,分别连接引导启动策略获取模块和引导程序加载模块,用于通过引导程序根据获取的引导启动策略从磁盘设备中选择相应的引导入口进行系统引导;[0111]引导成功与否检测模块,连接系统引导模块,用于检测系统引导是否成功,并输出检测结果;[0112]切换启动模块,分别连接引导启动策略获取模块和引导成功与否检测模块,用于在检测到系统引导启动失败后,根据引导启动策略自动切换启动其他efi操作系统;[0113]引导启动策略创建及更新模块,用于提供给维护人员创建或更新引导启动策略并存储到边带控制器中。[0114]本发明提供的装置实现efi操作系统的自动切换启动的方法在上述的x86平台使用固件自动切换启动efi操作系统的方法中已作了详细阐述,在此不再赘述。[0115]本发明还提供了一种计算机可读存储介质,包括执行指令,当电子设备的处理器执行执行指令时,处理器执行上述的自动切换启动efi操作系统的方法。[0116]需要声明的是,上述具体实施方式仅仅为本发明的较佳实施例及所运用技术原理。本领域技术人员应该明白,还可以对本发明做各种修改、等同替换、变化等等。但是,这些变换只要未背离本发明的精神,都应在本发明的保护范围之内。另外,本申请说明书和权利要求书所使用的一些术语并不是限制,仅仅是为了便于描述。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1