首页> 中国专利> 一种嵌入式操作系统的启动方法、装置及基板管理控制器

一种嵌入式操作系统的启动方法、装置及基板管理控制器

摘要

本发明公开了一种嵌入式操作系统的启动方法、装置及基板管理控制器,属于计算机领域。方法包括:第一BMC的处理器运行以本地Flash首地址为起始地址存储的Uboot,使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件执行,以使OS文件采用引导参数引导OS启动;当OS文件不能启动OS时,采用TFTP服务从第二BMC下载第二BMC的OS文件并存储到指定位置,以覆盖第一BMC的OS文件;第一BMC和第二BMC的OS文件相同;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。装置包括:运行模块和下载模块。控制器用于执行前述方法。本发明当采用本地的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件;能够在第一BMC的存储器上只存储一份OS文件。

著录项

  • 公开/公告号CN103605536A

    专利类型发明专利

  • 公开/公告日2014-02-26

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201310544746.4

  • 发明设计人 李娟;张蔚;张羽;

    申请日2013-11-06

  • 分类号G06F9/445;

  • 代理机构北京三高永信知识产权代理有限责任公司;

  • 代理人黄厚刚

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2024-02-19 22:18:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-29

    未缴年费专利权终止 IPC(主分类):G06F9/445 授权公告日:20170426 终止日期:20181106 申请日:20131106

    专利权的终止

  • 2017-04-26

    授权

    授权

  • 2014-03-26

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20131106

    实质审查的生效

  • 2014-02-26

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,特别涉及一种嵌入式操作系统的启动方法、装置及基板管理控制器。

背景技术

智能平台管理接口(Intelligent Platform Management Interface,简称IPMI)是一种定义平台管理子系统的标准、抽象的接口的规范。实现IPMI的硬件主要有基板管理控制器(Baseboard Management Controller,简称BMC)。BMC属于嵌入式系统。基于嵌入式操作系统的特点,BMC的操作系统(Operating System,简称OS)(下文简称BMC系统)的启动需要通用引导加载程序(Universal BootLoader,简称Uboot)进行引导。

可选地,在BMC上电后,Uboot开始运行,Uboot对硬件设备进行初始化。初始化后,Uboot传递引导参数给BMC系统文件,在该引导参数作用下,BMC系统文件中第一个函数Init启动,从而引导整个BMC系统启动。BMC系统的启动过程中,由于突然断电或者其它原因造成存储BMC系统文件的存储器(例如闪存(Flash))写发生错误,虽然是小概率事件,但是会导致系统文件发生损坏,使Uboot无法引导BMC系统正常启动。现有技术公开了一种BMC,该BMC配置了外部非易失性存储器(例如Flash)。该外部非易失性存储器上设置了至少两个分区,其中两个分区分别存储系统文件和系统文件的备份。这样,在系统文件出现异常时,Uboot可以引导系统文件的备份启动,从而恢复BMC系统的正常运行状态。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:一方面,采用双分区,会占用存储器更多的空间;另一方面,如果系统文件及备份出于某种原因都发生损坏,这时BMC系统照样无法启动。

发明内容

为了解决现有技术的问题,本发明实施例提供了一种嵌入式操作系统的启动方法、装置及基板管理控制器。所述技术方案如下:

第一方面,本发明实施例提供了一种嵌入式操作系统的启动方法,所述方法包括:

第一基板管理控制器的处理器运行以本地闪存首地址为起始地址存储的通用引导加载程序,使所述通用引导加载程序执行命令,将本地闪存中指定位置存储的操作系统文件拷贝到内存,并传递引导参数给所述操作系统文件执行,以使所述操作系统文件采用所述引导参数引导操作系统启动;

当所述操作系统文件采用所述引导参数不能启动所述操作系统时,通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存储到所述指定位置,以覆盖所述第一基板管理控制器的操作系统文件,所述第一基板管理控制器的操作系统文件和所述第二基板管理控制器的操作系统文件相同;

重新运行所述通用引导加载程序,使所述通用引导加载程序通过下载的操作系统文件引导所述操作系统启动。

可选地,所述方法还包括:

在所述操作系统文件采用所述引导参数启动所述操作系统后,判断在所述通用引导加载程序运行后的第一预定时间内,是否接收到所述第二基板管理控制器广播的第一数据包和至少一个第三基板管理控制器广播的第二数据包,所述第一数据包包括服务基板管理控制器标记、所述第二基板管理控制器的网际互联协议地址、以及所述第二基板管理控制器的操作系统文件的下载目录,所述第二数据包包括竞争基板管理控制器标记和所述第三基板管理控制器的网际互联协议地址;

当未接收到所述第一数据包和所述第二数据包时,广播第三数据包,所述第三数据包包括竞争基板管理控制器标记和所述第一基板管理控制器的网际互联协议地址;

当接收到所述第一数据包时,将所述第二基板管理控制器的网际互联协议地址和所述第二基板管理控制器的操作系统文件的下载目录作为环境变量存储到所述通用引导加载程序中。

可选地,在所述广播第三数据包之后,所述方法还包括:

判断在广播所述第三数据包后的第二预定时间内是否接收到至少一个所述第三基板管理控制器广播的第二数据包;

当在广播所述第三数据包后的第二预定时间内未接收到所述至少一个第三基板管理控制器广播的第二数据包时,以预定广播周期广播第四数据包,所述第四数据包包括服务基板管理控制器标记、所述第一基板管理控制器的网际互联协议地址、以及所述第一基板管理控制器的操作系统文件的下载目录。

可选地,所述方法还包括:

当在广播所述第三数据包后的第二预定时间内接收到所述至少一个第三基板管理控制器广播的第二数据包时,根据所述第一基板管理控制器与每个所述第三基板管理控制器的网际互联协议地址的大小,判断所述第一基板管理控制器的网际互联协议地址是否为最大网际互联协议地址;

当所述第一基板管理控制器的网际互联协议地址为最大网际互联协议地址时,以预定广播周期广播所述第四数据包。

可选地,所述方法还包括:

判断在接收到最后一个所述第一数据包后的预定时长内是否再次接收到所述第一数据包,所述预定时长大于所述预定广播周期;

当在接收到最后一个所述第一数据包后的预定时长内未再次接收到所述第一数据包时,广播所述第三数据包。

可选地,所述通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件,包括:

判断记录的所述通用引导加载程序的运行次数是否达到预定次数;

若所述通用引导加载程序的运行次数达到所述预定次数,则通过简单文件传输协议服务从所述第二基板管理控制器下载所述第二基板管理控制器的操作系统文件。

第二方面,本发明实施例提供了一种嵌入式操作系统的启动装置,所述装置包括:

运行模块,用于运行以本地闪存首地址为起始地址存储的通用引导加载程序,使所述通用引导加载程序执行命令,将本地闪存中指定位置存储的操作系统文件拷贝到内存,并传递引导参数给所述操作系统文件执行,以使所述操作系统文件采用所述引导参数引导操作系统启动;

下载模块,用于当所述操作系统文件采用所述引导参数不能启动所述操作系统时,通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存储到所述指定位置,以覆盖所述第一基板管理控制器的操作系统文件,所述本基板管理控制器的操作系统文件和所述第二基板管理控制器的操作系统文件相同;

所述运行模块还用于,重新运行所述通用引导加载程序,使所述通用引导加载程序通过下载的操作系统文件引导所述操作系统启动。

可选地,所述装置还包括:

判断模块,用于在所述操作系统文件采用所述引导参数启动所述操作系统后,判断在所述通用引导加载程序运行后的第一预定时间内,是否接收到所述第二基板管理控制器广播的第一数据包和至少一个第三基板管理控制器广播的第二数据包,所述第一数据包包括服务基板管理控制器标记、所述第二基板管理控制器的网际互联协议地址、以及所述第二基板管理控制器的操作系统文件的下载目录,所述第二数据包包括竞争基板管理控制器标记和所述第三基板管理控制器的网际互联协议地址;

广播模块,用于当未接收到所述第一数据包和所述第二数据包时,广播第三数据包,所述第三数据包包括竞争基板管理控制器标记和本基板管理控制器的网际互联协议地址;

存储模块,用于当接收到所述第一数据包时,将所述第二基板管理控制器的网际互联协议地址和所述第二基板管理控制器的操作系统文件的下载目录作为环境变量存储到所述通用引导加载程序中。

可选地,所述判断模块还用于,判断在广播所述第三数据包后的第二预定时间内是否接收到至少一个第三基板管理控制器广播的第二数据包;

所述广播模块还用于,当在广播所述第三数据包后的第二预定时间内未接收到所述至少一个第三基板管理控制器广播的第二数据包时,以预定广播周期广播第四数据包,所述第四数据包包括服务基板管理控制器标记、所述本基板管理控制器的网际互联协议地址、以及所述本基板管理控制器的操作系统文件的下载目录。

可选地,所述判断模块还用于,当在广播所述第三数据包后的第二预定时间内接收到所述至少一个第三基板管理控制器广播的第二数据包时,根据所述本基板管理控制器与每个所述第三基板管理控制器的网际互联协议地址的大小,判断所述本基板管理控制器的网际互联协议地址是否为最大网际互联协议地址;

所述广播模块还用于,当所述本基板管理控制器的网际互联协议地址为最大网际互联协议地址时,以预定广播周期广播所述第四数据包。

可选地,所述判断模块还用于,判断在接收到最后一个所述第一数据包后的预定时长内是否再次接收到所述第一数据包,所述预定时长大于所述预定广播周期;

所述广播模块还用于,当在接收到最后一个所述第一数据包后的预定时长内未再次接收到所述第一数据包时,广播所述第三数据包。

可选地,所述下载模块用于:

当所述操作系统文件采用所述引导参数不能启动所述操作系统时,判断记录的所述通用引导加载程序的运行次数是否达到预定次数;

若所述通用引导加载程序的运行次数达到所述预定次数,则通过简单文件传输协议服务从所述第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存储到所述本地闪存中。

第三方面,本发明实施例提供了一种基板管理控制器,包括处理器和存储器,所述处理器用于执行前述方法。

本发明实施例提供的技术方案带来的有益效果是:通过当采用本地Flash中存储的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件并存储到本地Flash中,以覆盖第一BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动;能够在第一BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二BMC下载的OS文件启动OS,提高了第一BMC的容错性能,在OS文件损坏时第一BMC能够自动恢复。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的基板管理控制器的应用场景的示意图;

图2是本发明实施例提供的一种嵌入式操作系统的启动方法的方法流程图;

图3是本发明实施例提供的又一种嵌入式操作系统的启动方法的方法流程图;

图4是本发明实施例提供的一种嵌入式操作系统的启动装置的结构示意图;

图5是本发明实施例提供的又一种嵌入式操作系统的启动装置的结构示意图;

图6是本发明实施例提供的一种基板管理控制器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

为便于理解本发明实施例提供的技术方案,首先介绍一下BMC。BMC用于自动地监控被控设备的健康状况,包括工作温度和电压、风扇和电源的工作状态、以及总线错误。如果发现被控设备异常,它就立即采取行动,例如记录事件、报警、自动关机或重启动。这里,被控设备可以是计算机,例如服务器。BMC的应用场景可以包括,一个以上的BMC设置在一个被控设备上,每个BMC的OS文件相同,不同BMC提供相同或不同的服务。随着集群(Cluster)的发展,多个被控设备可以绑定在一起,作为一个Cluster。参见图1,假设一个Cluster包括服务器11、12和13。每个服务器(11、12和13)上设置了若干个BMC。比如,服务器11上设置了2个BMC(BMC21、22)。服务器12上设置了2个BMC(BMC23、24)。13上设置了3个BMC(BMC25、26和27)。每个服务器上的BMC可以组成一个局域网,或者,Cluster内的所有BMC可以组成一个局域网,局域网内每个BMC之间可以进行IPMI通信。

实施例一

本发明实施例提供了一种嵌入式操作系统的启动方法,适用于图1所述的应用场景,且可以由图1中任何一个BMC执行。参见图2,方法流程包括:

步骤101:第一BMC的处理器运行以本地Flash首地址为起始地址存储的Uboot,使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件执行,以使OS文件采用引导参数引导OS启动。

步骤102:当OS文件采用引导参数不能启动OS时,通过简单文件传输协议服务(Trivial File Transfer Protocol,简称TFTP)从第二BMC下载第二BMC的OS文件并存储到指定位置,以覆盖第一BMC的OS文件。

其中,第一BMC的OS文件和第二BMC的OS文件相同。

步骤103:重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。

本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件并存储到本地Flash中,以覆盖第一BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动;能够在第一BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二BMC下载的OS文件启动OS,提高了第一BMC的容错性能,在OS文件损坏时第一BMC能够自动恢复。

实施例二

本发明实施例提供了一种嵌入式操作系统的启动方法,适用于图1所述的应用场景,且可以由图1中任何一个BMC执行。参见图3,该方法流程包括:

步骤201:第一BMC的处理器运行以本地Flash首地址为起始地址存储的Uboot,使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件执行,以使OS文件采用引导参数引导OS启动。

可选地,Uboot是OS启动前执行的第一个软件。Uboot存放在BMC的Flash首地址处,假设该首地址为0x00000000地址处。在第一BMC上电后,第一BMC的处理器会跳到0x00000000去执行,这样就把Uboot加载起来。Uboot首先对硬件设备进行初始化。初始化后,Uboot执行命令,例如bootm命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给BMC系统文件,以尝试引导BMC系统启动。

步骤202:在OS文件采用引导参数启动OS后,执行步骤203;当OS文件采用引导参数不能启动OS时,执行步骤210。

可选地,OS承载BMC的各应用进程。在OS启动后,OS会加载应用进程,其中一个或多个加载的应用进程可以实现步骤203描述的内容(参见步骤203),从而能够执行步骤203。当OS未启动时,BMC将停留在Uboot环境下,一直不停地尝试引导OS启动。

步骤203:判断在Uboot运行后的第一预定时间内是否收到第二BMC广播的第一数据包和至少一个第三BMC广播的第二数据包。

当接收到第一数据包时,执行步骤204;当未接收到第一数据包和第二数据包时,执行步骤206。

其中,第一BMC、第二BMC和第三BMC的OS文件相同,并且,第一BMC、第二BMC和第三BMC处于同一局域网内。第一数据包包括服务BMC标记、第二BMC的网际互联协议(Internet Protocol,简称IP)地址和第二BMC的OS文件的下载目录。第一数据包还包括下载服务开启标记。第二数据包包括竞争BMC标记和第三BMC的IP地址。服务BMC标记表示第二BMC为提供OS文件下载的BMC。竞争BMC标记表示第三BMC为竞争提供OS文件下载的BMC。可选地,在本发明实施例中,数据包符合IPMI消息的格式,能够被BMC识别。

本步骤203可以包括:判断在Uboot运行后的第一预定时间内是否收到第二BMC广播的第一数据包,当收到第一数据包时,执行步骤204;当未收到第一数据包时,判断在Uboot运行后的第一预定时间内是否收到至少一个第三BMC广播的第二数据包,当收到第二数据包时,则从第一预定时间结束开始,等待接收第二BMC广播的第一数据包,当接收到第二BMC广播的第一数据包时,执行步骤204;当未收到第一数据包和第二数据包时,执行步骤206。

作为提供OS文件下载的BMC,第二BMC将周期性地向局域网内其他BMC广播第一数据包。本BMC若在Uboot运行后的第一预定时间内收到第二BMC广播的第一数据包,则判定局域网内已存在提供OS文件下载的BMC,执行步骤204;若在Uboot运行后的第一预定时间内未收到第二BMC广播的第一数据包,则判定局域网内不存在提供OS文件下载的BMC。当局域网内不存在提供OS文件下载的BMC时,在线的每个BMC将竞争提供OS文件下载。本BMC若在Uboot运行后的第一预定时间内收到至少一个第三BMC广播的第二数据包,则判定局域网内已有BMC在竞争提供OS文件下载,本BMC将不参与竞争,执行步骤204;若在Uboot运行后的第一预定时间内未收到至少一个第三BMC广播的第二数据包,则参与竞争,执行步骤206。

其中,在Uboot运行后的第一预定时间内收到第一数据包和/或第二数据包,可以是,在Uboot运行后且OS启动前收到或者在OS启动后收到。基于Uboot和OS均支持TFTP,TFTP为嵌入式操作系统自带的功能。因此,Uboot和OS可以利用TFTP远程传输数据包。

步骤204:将第二BMC的IP地址和第二BMC的OS文件的下载目录作为环境变量存储到Uboot中。

可选地,第一BMC的OS承载的BMC应用进程记录第二BMC的IP地址和第二BMC的OS文件的下载目录,并调用Uboot中的环境变量,把记录的IP地址和下载目录写到环境变量中,便于下载OS文件的时候从Uboot的环境变量中获取第二BMC的IP地址和OS文件的下载目录(参见步骤211)。

可选地,如果第一BMC的OS不是第一次启动,则第一BMC本地可能已存储了服务BMC的IP地址和服务BMC的OS文件的下载目录。因此,本步骤204包括:比较第二BMC的IP地址和第二BMC的OS文件的下载目录是否与本地存储的服务BMC的IP地址和服务BMC的OS文件的下载目录一致,当两者不一致时,存储第二BMC的IP地址和第二BMC的OS文件的下载目录。

步骤205:判断在接收到最后一个第一数据包后的预定时长内是否再次接收到第一数据包。

当在接收到最后一个第一数据包后的预定时长内未再次接收到第一数据包时,执行步骤206。当在接收到最后一个第一数据包后的预定时长内再次接收到第一数据包时,执行步骤204。

其中,该预定时长大于预定广播周期。在本发明实施例中,不限定步骤204和步骤205的执行顺序。

值得说明的是,通过接收第二BMC周期广播的第一数据包,能够保证服务BMC是正常工作的,故障BMC能够下载OS文件。并且,当超过预定时长未收到第一数据包时,判定不存在第二BMC,开始广播第三数据包(步骤206)。这样,服务BMC可以随时更换,避免服务BMC故障,故障BMC找不到服务BMC的问题。

步骤206:广播第三数据包。

其中,第三数据包包括竞争BMC标记、第一BMC的IP地址、以及第一BMC的OS文件的下载目录。

可选地,当局域网内不存在提供OS文件下载的BMC且不存在已开始竞争提供OS文件下载的BMC时,需选择一个BMC来提供OS文件下载。这时,本BMC将向局域网内其他BMC广播第三数据包。第三数据包用于告知其他BMC,本BMC将竞争提供OS文件下载。

步骤207:判断在广播第三数据包后的第二预定时间内是否接收到至少一个第三BMC广播的第二数据包。

其中,第三BMC和第一BMC的OS文件相同,并且,第三BMC和第一BMC处于同一局域网内。第二数据包包括竞争服务BMC标记和该第三BMC的IP地址。第二数据包表示第三BMC参与竞争提供OS文件下载。

当在广播第三数据包后的第二预定时间内接收到至少一个第三BMC广播的第二数据包时,执行步骤208;反之,当在广播第三数据包后的第二预定时间内未接收到第三BMC广播的第二数据包时,执行步骤209。

步骤208:根据第一BMC与每个第三BMC的IP地址的大小,判断第一BMC的IP地址是否为最大IP地址。

当第一BMC的IP地址为最大IP地址时,执行步骤209,当第一BMC的IP地址不为最大IP地址时,退出本次流程。

一般地,IP地址包括网络号和主机号,用于表示该BMC是位于网络号标识的网络内的主机号标识的主机。并且,同一个局域网内所有BMC的IP地址的网络号相同,主机号不同。例如,ABMC的IP地址为192.168.1.20,BBMC的IP地址为192.168.1.7。其中,A和BBMC的IP地址的网络号均为192.168.1,A和BBMC的IP地址的主机号分别为20和7。基于此,比较第一BMC与每个第三BMC的IP地址的主机号的大小,以判断第一BMC的IP地址是否为最大IP地址。主机号的最大的IP地址为最大IP地址。

步骤209:以预定广播周期广播第四数据包。

其中,该第四数据包包括服务BMC标记、第一BMC的IP地址、以及第一BMC的OS文件的下载目录。该第四数据包还包括下载服务开启标记。

可选地,第一BMC的IP地址和OS文件的下载目录构成下载地址,该下载地址表示第一BMC提供下载的OS文件设置在哪个BMC上的哪个目录下。下载服务开启标记表示提供OS文件下载的BMC已开启下载服务。BMC之间可以预先约定,若数据包未包括下载服务开启标记,则表示提供OS文件下载的BMC未开启下载服务,将不能提供OS文件的下载。

在本发明实施例中,可以采用TFTP服务来支持OS文件的下载。通过修改TFTP配置文件,第一BMC能够开启或关闭TFTP服务。

需要说明的是,在本发明实施例中,是通过步骤203-步骤209描述的BMC之间竞争的方式推举出服务节点。在其他实施例中,也可以采用其他方式推举出服务节点。例如,第一BMC的OS启动后就以预定周期广播第四数据包,同时,第一BMC会接收至少一个第二BMC广播的第一数据包。也就是说,BMC在OS启动后,就成为服务节点,广播服务数据包。

步骤210:判断记录的Uboot的运行次数是否达到预定次数。

若未达到预定次数,则执行步骤201;若达到预定次数,则执行步骤211。

可选地,可以采用看门狗定时器来采集Uboot的运行次数。BMC在运行Uboot的同时,启动看门狗定时器。在OS启动后,OS将加载一个喂狗应用进程,传递参数值至看门狗定时器,以关闭看门狗定时器。当OS未启动时,喂狗应用进程无法启动,如果在预设时间内未传递参数值至看门狗定时器,看门狗定时器计数+1,表示Uboot启动了一次。当看门狗定时器计数+1时,复位BMC,重新运行Uboot(执行步骤201),再次循环计数过程。这样,看门狗定时器将采集Uboot的运行次数。当看门狗定时器的计数达到预定次数时,执行步骤211。

可选地,看门狗定时器可以存储在BMC的复杂可编程逻辑器件(ComplexProgrammable Logic Device,简称CPLD)。

可选地,预定次数可以是预先设置的Uboot运行的具体次数,例如2次。若CPLD中存储的Uboot的运行次数超过2次,则判定本BMC上的OS文件已经发生损坏,执行步骤210;若未超过2次,则重新运行Uboot(执行步骤201)。设置预定次数,可以规避OS文件的可恢复性错误。

需要说明的是,在采用本地的OS文件启动OS后,还包括:将存储器中存储的Uboot的运行次数清零。

步骤211:读取Uboot的环境变量,以获取第二BMC的IP地址和第二BMC的OS文件的下载目录。

可选地,若Uboot的运行次数超过预定次数,表明本BMC上的OS文件已经发生损坏,这时,通过读取本地存储的第二BMC的IP地址和第二BMC的OS文件的下载目录,获取第二BMC的IP地址和第二BMC的OS文件的下载目录。由于本BMC将第二BMC的IP地址和第二BMC的OS文件的下载目录作为环境变量存储在Uboot中。因此,可以在Uboot环境下直接读取Uboot的环境变量,获取第二BMC的IP地址和第二BMC的OS文件的下载目录。

在其中一个实施例中,可以在第一BMC加入该局域网时,预先将第二BMC的IP地址和第二BMC的OS文件的下载目录(第二BMC可以是在局域网内静态设置的提供OS文件下载的BMC)写入第一BMC的Uboot的环境变量中。

在另外一个实施例中,可以在OS文件未损坏之前,OS能够正常启动后接收第一数据包,并将第一数据包携带的第二BMC的IP地址和第二BMC的OS文件的下载目录写入第一BMC的Uboot的环境变量中的方式(参见步骤204)。

步骤212:根据第二BMC的IP地址和OS文件的下载目录,通过TFTP服务从第二BMC下载第二BMC的OS文件并存储到指定位置,以覆盖第一BMC的OS文件。

可选地,可以查询第一数据包是否包括下载服务开启标记,若第一数据包包括下载服务开启标记,则表明第二BMC已开启下载服务,根据第二BMC的IP地址和OS文件的下载目录,从第二BMC下载OS文件。若第一数据包不包括下载服务开启标记,则表明第二BMC未开启下载服务,执行步骤210,继续接收第二BMC广播的第一数据包。

可选地,下载的OS文件可以存储在本BMC的Flash中指定位置,该指定位置为存储本BMC的OS文件的位置。下载的OS文件将直接覆盖Flash中原始OS文件。

以上,通过步骤211和步骤212,实现了通过TFTP服务从第二BMC下载第二BMC的OS文件。

步骤213:重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。

下载第二BMC的OS文件后,复位本BMC,以重新运行Uboot。Uboot重新运行后,Uboot将通过下载的OS文件引导OS启动,OS启动成功。

可选地,本步骤213包括:将记录的Uboot的运行次数清零,并复位本BMC,以重新运行Uboot。

值得说明的是,在实际应用中,可以设置一个预定的OS文件下载时间。在本BMC的Uboot的运行次数达到预定次数后,维持Uboot环境且维持Uboot环境的时间为预定OS文件下载时间,然后再复位本BMC。假设在预定OS文件下载时间内,本BMC下载了OS文件,那么在Uboot重新运行后,Uboot将通过下载的OS文件引导OS启动。

需要说明的是,每个BMC配置了相同的应用进程(相同的OS文件),每个应用进程可以单独对应实现不同的服务。当第一BMC运行其中一些应用进程,用于提供第一服务,而第二BMC运行另外一些应用进程,用于提供第二服务时,第一BMC的Uboot通过下载的第二BMC的OS文件引导OS启动后,OS将加载一个专门的应用进程,该专门的应用进程将获取第一BMC的服务类型(第一服务),并在预设的服务类型-应用进程的对应关系中,获取第一BMC的服务类型对应的应用进程。接着,OS将加载第一BMC的服务类型对应的应用进程,使第一BMC提供其对应的服务。这样,即便第二BMC与第一BMC提供的服务不同,也能共用相同的OS文件。

本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件并存储到本地Flash中,以覆盖第一BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动;能够在第一BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二BMC下载的OS文件启动OS,提高了第一BMC的容错性能,在OS文件损坏时第一BMC能够自动恢复。

实施例三

本发明实施例提供了一种嵌入式操作系统的启动装置,该装置可以设在基板管理控制器中,例如前述第一基板管理控制器。参见图4,该装置包括:

运行模块401,用于运行以本地Flash首地址为起始地址存储的Uboot,使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件执行,以使OS文件采用引导参数引导OS启动。

下载模块402,用于当OS文件采用引导参数不能启动OS时,通过TFTP服务从第二BMC下载第二BMC的OS文件并存储到指定位置,以覆盖第一BMC的OS文件。

其中,第一BMC的OS文件和第二BMC的OS文件相同。

该运行模块401还用于,重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。

本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件并存储到本地Flash中,以覆盖第一BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动;能够在第一BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二BMC下载的OS文件启动OS,提高了第一BMC的容错性能,在OS文件损坏时第一BMC能够自动恢复。

实施例四

本发明实施例提供了一种嵌入式操作系统的启动装置,该装置可以设在基板管理控制器中,例如前述第一基板管理控制器。参见图5,该装置包括:

运行模块501,用于运行以本地Flash首地址为起始地址存储的Uboot,使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件执行,以使OS文件采用引导参数引导OS启动。

下载模块502,用于当OS文件采用引导参数不能启动OS时,从第二BMC下载第二BMC的OS文件并存储到指定位置,以覆盖第一BMC的OS文件。

其中,本BMC的OS文件和第二BMC的OS文件相同。

下载模块502用于,当OS文件采用引导参数不能启动OS时,判断记录的Uboot的运行次数是否达到预定次数;若Uboot的运行次数达到预定次数,则通过TFTP服务从第二BMC下载第二BMC的OS文件并存储到本地Flash中。

该运行模块501还用于,重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。

可选地,运行模块501还用于,若Uboot的运行次数达到预定次数,则将记录的Uboot的运行次数清零,并复位第一BMC,以重新运行Uboot。

该装置还包括:

判断模块503,用于在OS文件采用引导参数启动OS后,判断在Uboot运行后的第一预定时间内,是否接收到第二BMC广播的第一数据包和至少一个第三BMC广播的第二数据包,该第一数据包包括服务BMC标记、第二BMC的IP地址和第二BMC的OS文件的下载目录,该第二数据包包括包括竞争BMC标记和第三BMC的IP地址。

广播模块504,用于当未接收到第一数据包和第二数据包时,广播第三数据包,该第三数据包包括竞争BMC标记和本BMC的IP地址。

存储模块505,用于当接收到第一数据包时,将第二BMC的IP地址和第二BMC的OS文件的下载目录作为环境变量存储到Uboot中。

可选地,判断模块503还用于,判断在广播第三数据包后的第二预定时间内是否接收到至少一个第三BMC广播的第二数据包。

可选地,广播模块504还用于,当在广播第三数据包后的第二预定时间内未接收到至少一个第三BMC广播的第二数据包时,以预定周期广播第四数据包,该第四数据包包括服务BMC标记、本BMC的IP地址、以及本BMC的OS文件的下载目录。

可选地,判断模块503还用于,当在广播第三数据包后的第二预定时间内接收到至少一个第三BMC广播的第二数据包时,根据本BMC与每个第三BMC的IP地址的大小,判断本BMC的IP地址是否为最大IP地址。

可选地,广播模块504还用于,当本BMC的IP地址为最大IP地址时,以预定周期广播第四数据包。

可选地,判断模块503还用于,判断在接收到最后一个第一数据包后的预定时长内是否再次接收到第一数据包,该预定时长大于预定广播周期。

可选地,广播模块504还用于,当在接收到最后一个第一数据包后的预定时长内未再次接收到第一数据包时,广播第三数据包。

本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件并存储到本地Flash中,以覆盖第一BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动;能够在第一BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二BMC下载的OS文件启动OS,提高了第一BMC的容错性能,在OS文件损坏时第一BMC能够自动恢复。

实施例五

本发明实施例提供了一种基板管理控制器,适用于本发明实施例一和二提供的嵌入式操作系统的启动方法。参见图6,该控制器一般包括至少一个处理器61(例如CPU)、至少一个网络接口62或者其他通信接口、存储器63和至少一个通信总线64。本领域技术人员可以理解,图6中示出的结构并不构成对该控制器的限定,其可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图6对该控制器的各个构成部件进行具体的介绍:

通信总线64用于实现处理器61、存储器63及网络接口62之间的连接通信。

至少一个网络接口62(可以是有线或者无线)实现该控制器与至少一个其他控制器之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

存储器63可用于存储软件程序以及应用模块,处理器61通过运行存储在存储器63的软件程序以及应用模块,从而执行该控制器的各种功能应用以及数据处理。存储器63可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统(的文件)、至少一个功能(例如广播数据包)所需的应用程序等;存储数据区可存储根据该设备的使用所创建的数据(例如存储的Uboot的启动次数)等。此外,存储器63可以包括高速RAM(Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器件、闪存器件(Flash)、或其他易失性固态存储器件(例如CPLD)。

处理器61是该设备的控制中心,利用各种接口和线路连接整个控制器的各个部分,通过运行或执行存储在存储器63内的软件程序和/或应用模块,以及调用存储在存储器63内的数据,执行控制器的各种功能和处理数据,从而对控制器进行整体监控。

可选地,通过运行或执行存储在存储器63内的软件程序和/或应用模块,以及调用存储在存储器63内的数据,处理器61可以实现,运行以本地Flash首地址为起始地址存储的Uboot,使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件执行,以使OS文件采用引导参数引导OS启动;当OS文件采用引导参数不能启动OS时,通过TFTP服务从第二BMC下载第二BMC的OS文件并存储到该指定位置,以覆盖第一BMC的OS文件,第一BMC的OS文件和第二BMC的OS文件相同;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。

可选地,处理器61用于实现,在OS文件采用引导参数启动OS后,判断在Uboot运行后的第一预定时间内,是否接收到第二BMC广播的第一数据包和至少一个第三BMC广播的第二数据包,第一数据包包括服务BMC标记、第二BMC的IP地址、以及第二BMC的OS文件的下载目录;第二数据包包括包括竞争BMC标记和第三BMC的IP地址;当未接收到第一数据包和第二数据包时,广播第三数据包,第三数据包包括竞争BMC标记和第一BMC的IP地址;当接收到第一数据包时,将第二BMC的IP地址和第二BMC的OS文件的下载目录作为环境变量存储到Uboot中。

可选地,处理器61用于实现,判断在广播第三数据包后的第二预定时间内是否接收到至少一个第三BMC广播的第二数据包;当在广播第三数据包后的第二预定时间内未接收到至少一个第三BMC广播的第二数据包时,以预定广播周期广播第四数据包,第四数据包包括服务BMC标记、第一BMC的IP地址、以及第一BMC的OS文件的下载目录。

可选地,处理器61用于实现,当在广播第三数据包后的第二预定时间内接收到至少一个第三BMC广播的第二数据包时,根据第一BMC与每个第三BMC的IP地址的大小,判断第一BMC的IP地址是否为最大IP地址;当第一BMC的IP地址为最大IP地址时,以预定广播周期广播第四数据包。

可选地,处理器61用于实现,判断在接收到最后一个第一数据包后的预定时长内是否再次接收到第一数据包,预定时长大于预定广播周期;当在接收到最后一个第一数据包后的预定时长内未再次接收到第一数据包时,广播第三数据包。

可选地,处理器61用于实现,当OS文件采用引导参数不能启动OS时,判断记录的Uboot的运行次数是否达到预定次数;若Uboot的运行次数达到预定次数,则通过TFTP服务从第二BMC下载第二BMC的OS文件。

本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一BMC从第二BMC下载第二BMC的OS文件并存储到本地Flash中,以覆盖第一BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动;能够在第一BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二BMC下载的OS文件启动OS,提高了第一BMC的容错性能,在OS文件损坏时第一BMC能够自动恢复。

需要说明的是:上述实施例提供的嵌入式操作系统的启动装置在启动嵌入式操作系统时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的嵌入式操作系统的启动装置与嵌入式操作系统的启动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号