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

文档序号:6517999阅读:158来源:国知局
一种嵌入式操作系统的启动方法、装置及基板管理控制器的制造方法
【专利摘要】本发明公开了一种嵌入式操作系统的启动方法、装置及基板管理控制器,属于计算机领域。方法包括:第一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文件。
【专利说明】一种嵌入式操作系统的启动方法、装置及基板管理控制器【技术领域】[0001]本发明涉及计算机领域,特别涉及一种嵌入式操作系统的启动方法、装置及基板 管理控制器。【背景技术】[0002]智能平台管理接口(Intelligent Platform Management Interface,简称 IPMI) 是一种定义平台管理子系统的标准、抽象的接口的规范。实现IPMI的硬件主要有基板管理 控制器(Baseboard Management Controller,简称BMC)。BMC属于嵌入式系统。基于嵌入 式操作系统的特点,BMC的操作系统(Operating System,简称OS)(下文简称BMC系统)的 启动需要通用引导加载程序(Universal BootLoader,简称Uboot)进行引导。[0003]可选地,在BMC上电后,Uboot开始运行,Uboot对硬件设备进行初始化。初始化 后,Uboot传递引导参数给BMC系统文件,在该引导参数作用下,BMC系统文件中第一个函数 Init启动,从而引导整个BMC系统启动。BMC系统的启动过程中,由于突然断电或者其它原 因造成存储BMC系统文件的存储器(例如闪存(Flash))写发生错误,虽然是小概率事件,但 是会导致系统文件发生损坏,使Uboot无法引导BMC系统正常启动。现有技术公开了一种 BMC,该BMC配置了外部非易失性存储器(例如Flash)。该外部非易失性存储器上设置了至 少两个分区,其中两个分区分别存储系统文件和系统文件的备份。这样,在系统文件出现异 常时,Uboot可以引导系统文件的备份启动,从而恢复BMC系统的正常运行状态。[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:一方面,采用双 分区,会占用存储器更多的空间;另一方面,如果系统文件及备份出于某种原因都发生损 坏,这时BMC系统照样无法启动。
【发明内容】
[0005]为了解决现有技术的问题,本发明实施例提供了一种嵌入式操作系统的启动方 法、装置及基板管理控制器。所述技术方案如下:[0006]第一方面,本发明实施例提供了一种嵌入式操作系统的启动方法,所述方法包 括:[0007]第一基板管理控制器的处理器运行以本地闪存首地址为起始地址存储的通用引 导加载程序,使所述通用引导加载程序执行命令,将本地闪存中指定位置存储的操作系统 文件拷贝到内存,并传递引导参数给所述操作系统文件执行,以使所述操作系统文件采用 所述引导参数引导操作系统启动;[0008]当所述操作系统文件采用所述引导参数不能启动所述操作系统时,通过简单文件 传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存 储到所述指定位置,以覆盖所述第一基板管理控制器的操作系统文件,所述第一基板管理 控制器的操作系统文件和所述第二基板管理控制器的操作系统文件相同;[0009]重新运行所述通用弓I导加载程序,使所述通用弓I导加载程序通过下载的操作系统文件引导所述操作系统启动。[0010]可选地,所述方法还包括:[0011]在所述操作系统文件采用所述引导参数启动所述操作系统后,判断在所述通用引 导加载程序运行后的第一预定时间内,是否接收到所述第二基板管理控制器广播的第一数 据包和至少一个第三基板管理控制器广播的第二数据包,所述第一数据包包括服务基板管 理控制器标记、所述第二基板管理控制器的网际互联协议地址、以及所述第二基板管理控 制器的操作系统文件的下载目录,所述第二数据包包括竞争基板管理控制器标记和所述第 三基板管理控制器的网际互联协议地址;[0012]当未接收到所述第一数据包和所述第二数据包时,广播第三数据包,所述第三数 据包包括竞争基板管理控制器标记和所述第一基板管理控制器的网际互联协议地址;[0013]当接收到所述第一数据包时,将所述第二基板管理控制器的网际互联协议地址和 所述第二基板管理控制器的操作系统文件的下载目录作为环境变量存储到所述通用引导 加载程序中。[0014]可选地,在所述广播第三数据包之后,所述方法还包括:[0015]判断在广播所述第三数据包后的第二预定时间内是否接收到至少一个所述第三 基板管理控制器广播的第二数据包;[0016]当在广播所述第三数据包后的第二预定时间内未接收到所述至少一个第三基板 管理控制器广播的第二数据包时,以预定广播周期广播第四数据包,所述第四数据包包括 服务基板管理控制器标记、所述第一基板管理控制器的网际互联协议地址、以及所述第一 基板管理控制器的操作系统文件的下载目录。[0017]可选地,所述方法还包括:[0018]当在广播所述第三数据包后的第二预定时间内接收到所述至少一个第三基板管 理控制器广播的第二数据包时,根据所述第一基板管理控制器与每个所述第三基板管理控 制器的网际互联协议地址的大小,判断所述第一基板管理控制器的网际互联协议地址是否 为最大网际互联协议地址;[0019]当所述第一基板管理控制器的网际互联协议地址为最大网际互联协议地址时,以 预定广播周期广播所述第四数据包。[0020]可选地,所述方法还包括:[0021]判断在接收到最后一个所述第一数据包后的预定时长内是否再次接收到所述第 一数据包,所述预定时长大于所述预定广播周期;[0022]当在接收到最后一个所述第一数据包后的预定时长内未再次接收到所述第一数 据包时,广播所述第三数据包。[0023]可选地,所述通过简单文件传输协议服务从第二基板管理控制器下载所述第二基 板管理控制器的操作系统文件,包括:[0024]判断记录的所述通用引导加载程序的运行次数是否达到预定次数;[0025]若所述通用引导加载程序的运行次数达到所述预定次数,则通过简单文件传输协 议服务从所述第二基板管理控制器下载所述第二基板管理控制器的操作系统文件。[0026]第二方面,本发明实施例提供了一种嵌入式操作系统的启动装置,所述装置包 括:[0027]运行模块,用于运行以本地闪存首地址为起始地址存储的通用引导加载程序,使 所述通用引导加载程序执行命令,将本地闪存中指定位置存储的操作系统文件拷贝到内 存,并传递引导参数给所述操作系统文件执行,以使所述操作系统文件采用所述引导参数 引导操作系统启动;[0028]下载模块,用于当所述操作系统文件采用所述引导参数不能启动所述操作系统 时,通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操 作系统文件并存储到所述指定位置,以覆盖所述第一基板管理控制器的操作系统文件,所 述本基板管理控制器的操作系统文件和所述第二基板管理控制器的操作系统文件相同;[0029]所述运行模块还用于,重新运行所述通用弓I导加载程序,使所述通用弓I导加载程 序通过下载的操作系统文件引导所述操作系统启动。[0030]可选地,所述装置还包括:[0031]判断模块,用于在所述操作系统文件采用所述引导参数启动所述操作系统后,判 断在所述通用引导加载程序运行后的第一预定时间内,是否接收到所述第二基板管理控制 器广播的第一数据包和至少一个第三基板管理控制器广播的第二数据包,所述第一数据包 包括服务基板管理控制器标记、所述第二基板管理控制器的网际互联协议地址、以及所述 第二基板管理控制器的操作系统文件的下载目录,所述第二数据包包括竞争基板管理控制 器标记和所述第三基板管理控制器的网际互联协议地址;[0032]广播模块,用于当未接收到所述第一数据包和所述第二数据包时,广播第三数据 包,所述第三数据包包括竞争基板管理控制器标记和本基板管理控制器的网际互联协议地 址;[0033]存储模块,用于当接收到所述第一数据包时,将所述第二基板管理控制器的网际 互联协议地址和所述第二基板管理控制器的操作系统文件的下载目录作为环境变量存储 到所述通用引导加载程序中。[0034]可选地,所述判断模块还用于,判断在广播所述第三数据包后的第二预定时间内 是否接收到至少一个第三基板管理控制器广播的第二数据包;[0035]所述广播模块还用于,当在广播所述第三数据包后的第二预定时间内未接收到所 述至少一个第三基板管理控制器广播的第二数据包时,以预定广播周期广播第四数据包, 所述第四数据包包括服务基板管理控制器标记、所述本基板管理控制器的网际互联协议地 址、以及所述本基板管理控制器的操作系统文件的下载目录。[0036]可选地,所述判断模块还用于,当在广播所述第三数据包后的第二预定时间内接 收到所述至少一个第三基板管理控制器广播的第二数据包时,根据所述本基板管理控制器 与每个所述第三基板管理控制器的网际互联协议地址的大小,判断所述本基板管理控制器 的网际互联协议地址是否为最大网际互联协议地址;[0037]所述广播模块还用于,当所述本基板管理控制器的网际互联协议地址为最大网际 互联协议地址时,以预定广播周期广播所述第四数据包。[0038]可选地,所述判断模块还用于,判断在接收到最后一个所述第一数据包后的预定 时长内是否再次接收到所述第一数据包,所述预定时长大于所述预定广播周期;[0039]所述广播模块还用于,当在接收到最后一个所述第一数据包后的预定时长内未再 次接收到所述第一数据包时,广播所述第三数据包。[0040]可选地,所述下载模块用于:[0041]当所述操作系统文件采用所述引导参数不能启动所述操作系统时,判断记录的所 述通用引导加载程序的运行次数是否达到预定次数;[0042]若所述通用引导加载程序的运行次数达到所述预定次数,则通过简单文件传输协 议服务从所述第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存储 到所述本地闪存中。[0043]第三方面,本发明实施例提供了一种基板管理控制器,包括处理器和存储器,所述 处理器用于执行前述方法。[0044]本发明实施例提供的技术方案带来的有益效果是:通过当采用本地Flash中存储 的OS文件不能启动OS时,第一 BMC从第二 BMC下载第二 BMC的OS文件并存储到本地Flash 中,以覆盖第一 BMC的OS文件;重新运行Uboot,使Uboot通过下载的OS文件引导OS启动; 能够在第一 BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第 二 BMC下载的OS文件启动OS,提高了第一 BMC的容错性能,在OS文件损坏时第一 BMC能够 自动恢复。【专利附图】

【附图说明】[0045]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。[0046]图1是本发明实施例提供的基板管理控制器的应用场景的示意图;[0047]图2是本发明实施例提供的一种嵌入式操作系统的启动方法的方法流程图;[0048]图3是本发明实施例提供的又一种嵌入式操作系统的启动方法的方法流程图;[0049]图4是本发明实施例提供的一种嵌入式操作系统的启动装置的结构示意图;[0050]图5是本发明实施例提供的又一种嵌入式操作系统的启动装置的结构示意图;[0051]图6是本发明实施例提供的一种基板管理控制器的结构示意图。【具体实施方式】[0052]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。[0053]为便于理解本发明实施例提供的技术方案,首先介绍一下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通信。[0054]实施例一[0055]本发明实施例提供了一种嵌入式操作系统的启动方法,适用于图1所述的应用场 景,且可以由图1中任何一个BMC执行。参见图2,方法流程包括:[0056]步骤101:第一 BMC的处理器运行以本地Flash首地址为起始地址存储的Uboot, 使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数 给OS文件执行,以使OS文件采用引导参数引导OS启动。[0057]步骤102:当OS文件采用引导参数不能启动OS时,通过简单文件传输协议服务 (Trivial File Transfer Protocol,简称 TFTP)从第二 BMC 下载第二 BMC 的 OS 文件并存 储到指定位置,以覆盖第一 BMC的OS文件。[0058]其中,第一 BMC的OS文件和第二 BMC的OS文件相同。[0059]步骤103:重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。[0060]本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一 BMC 从第二 BMC下载第二 BMC的OS文件并存储到本地Flash中,以覆盖第一 BMC的OS文件;重 新运行UbooU使Uboot通过下载的OS文件引导OS启动;能够在第一 BMC的存储器上只存 储一份OS文件,节省存储器的存储空间;还能够通过从第二 BMC下载的OS文件启动OS,提 高了第一 BMC的容错性能,在OS文件损坏时第一 BMC能够自动恢复。[0061]实施例二[0062]本发明实施例提供了一种嵌入式操作系统的启动方法,适用于图1所述的应用场 景,且可以由图1中任何一个BMC执行。参见图3,该方法流程包括:[0063]步骤201:第一 BMC的处理器运行以本地Flash首地址为起始地址存储的Uboot, 使Uboot执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数 给OS文件执行,以使OS文件采用引导参数引导OS启动。[0064]可选地,Uboot是OS启动前执行的第一个软件。Uboot存放在BMC的Flash首地 址处,假设该首地址为0x00000000地址处。在第一 BMC上电后,第一 BMC的处理器会跳到 0x00000000去执行,这样就把Uboot加载起来。Uboot首先对硬件设备进行初始化。初始 化后,Uboot执行命令,例如bootm命令,将本地Flash中指定位置存储的OS文件拷贝到内 存,并传递引导参数给BMC系统文件,以尝试引导BMC系统启动。[0065]步骤202:在OS文件采用引导参数启动OS后,执行步骤203 ;当OS文件采用引导 参数不能启动OS时,执行步骤210。[0066]可选地,OS承载BMC的各应用进程。在OS启动后,OS会加载应用进程,其中一个 或多个加载的应用进程可以实现步骤203描述的内容(参见步骤203),从而能够执行步骤 203。当OS未启动时,BMC将停留在Uboot环境下,一直不停地尝试引导OS启动。[0067]步骤203:判断在Uboot运行后的第一预定时间内是否收到第二 BMC广播的第一 数据包和至少一个第三BMC广播的第二数据包。[0068]当接收到第一数据包时,执行步骤204;当未接收到第一数据包和第二数据包时, 执行步骤206。[0069]其中,第一 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识别。[0070]本步骤203可以包括:判断在Uboot运行后的第一预定时间内是否收到第二 BMC 广播的第一数据包,当收到第一数据包时,执行步骤204 ;当未收到第一数据包时,判断在 Uboot运行后的第一预定时间内是否收到至少一个第三BMC广播的第二数据包,当收到第 二数据包时,则从第一预定时间结束开始,等待接收第二 BMC广播的第一数据包,当接收到 第二 BMC广播的第一数据包时,执行步骤204 ;当未收到第一数据包和第二数据包时,执行 步骤206。[0071]作为提供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。[0072]其中,在Uboot运行后的第一预定时间内收到第一数据包和/或第二数据包,可以 是,在Uboot运行后且OS启动前收到或者在OS启动后收到。基于Uboot和OS均支持TFTP, TFTP为嵌入式操作系统自带的功能。因此,Uboot和OS可以利用TFTP远程传输数据包。[0073]步骤204:将第二 BMC的IP地址和第二 BMC的OS文件的下载目录作为环境变量 存储到Uboot中。[0074]可选地,第一 BMC的OS承载的BMC应用进程记录第二 BMC的IP地址和第二 BMC 的OS文件的下载目录,并调用Uboot中的环境变量,把记录的IP地址和下载目录写到环境 变量中,便于下载OS文件的时候从Uboot的环境变量中获取第二 BMC的IP地址和OS文件 的下载目录(参见步骤211)。[0075]可选地,如果第一 BMC的OS不是第一次启动,则第一 BMC本地可能已存储了服务 BMC的IP地址和服务BMC的OS文件的下载目录。因此,本步骤204包括:比较第二 BMC的 IP地址和第二 BMC的OS文件的下载目录是否与本地存储的服务BMC的IP地址和服务BMC 的OS文件的下载目录一致,当两者不一致时,存储第二 BMC的IP地址和第二 BMC的OS文 件的下载目录。[0076]步骤205:判断在接收到最后一个第一数据包后的预定时长内是否再次接收到第一数据包。[0077]当在接收到最后一个第一数据包后的预定时长内未再次接收到第一数据包时,执 行步骤206。当在接收到最后一个第一数据包后的预定时长内再次接收到第一数据包时,执 行步骤204。[0078]其中,该预定时长大于预定广播周期。在本发明实施例中,不限定步骤204和步骤205的执行顺序。[0079]值得说明的是,通过接收第二 BMC周期广播的第一数据包,能够保证服务BMC是正 常工作的,故障BMC能够下载OS文件。并且,当超过预定时长未收到第一数据包时,判定不 存在第二 BMC,开始广播第三数据包(步骤206)。这样,服务BMC可以随时更换,避免服务 BMC故障,故障BMC找不到服务BMC的问题。[0080]步骤206:广播第三数据包。[0081]其中,第三数据包包括竞争BMC标记、第一 BMC的IP地址、以及第一 BMC的OS文 件的下载目录。[0082]可选地,当局域网内不存在提供OS文件下载的BMC且不存在已开始竞争提供OS 文件下载的BMC时,需选择一个BMC来提供OS文件下载。这时,本BMC将向局域网内其他 BMC广播第三数据包。第三数据包用于告知其他BMC,本BMC将竞争提供OS文件下载。[0083]步骤207:判断在广播第三数据包后的第二预定时间内是否接收到至少一个第三 BMC广播的第二数据包。[0084]其中,第三BMC和第一 BMC的OS文件相同,并且,第三BMC和第一 BMC处于同一局 域网内。第二数据包包括竞争服务BMC标记和该第三BMC的IP地址。第二数据包表示第 三BMC参与竞争提供OS文件下载。[0085]当在广播第三数据包后的第二预定时间内接收到至少一个第三BMC广播的第二 数据包时,执行步骤208;反之,当在广播第三数据包后的第二预定时间内未接收到第三 BMC广播的第二数据包时,执行步骤209。[0086]步骤208:根据第一 BMC与每个第三BMC的IP地址的大小,判断第一 BMC的IP地 址是否为最大IP地址。[0087]当第一 BMC的IP地址为最大IP地址时,执行步骤209,当第一 BMC的IP地址不为 最大IP地址时,退出本次流程。[0088]一般地,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地址。[0089]步骤209:以预定广播周期广播第四数据包。[0090]其中,该第四数据包包括服务BMC标记、第一 BMC的IP地址、以及第一 BMC的OS 文件的下载目录。该第四数据包还包括下载服务开启标记。[0091 ] 可选地,第一 BMC的IP地址和OS文件的下载目录构成下载地址,该下载地址表示 第一 BMC提供下载的OS文件设置在哪个BMC上的哪个目录下。下载服务开启标记表示提 供OS文件下载的BMC已开启下载服务。BMC之间可以预先约定,若数据包未包括下载服务 开启标记,则表示提供OS文件下载的BMC未开启下载服务,将不能提供OS文件的下载。[0092]在本发明实施例中,可以采用TFTP服务来支持OS文件的下载。通过修改TFTP配 置文件,第一 BMC能够开启或关闭TFTP服务。[0093]需要说明的是,在本发明实施例中,是通过步骤203-步骤209描述的BMC之间竞争的方式推举出服务节点。在其他实施例中,也可以采用其他方式推举出服务节点。例如, 第一 BMC的OS启动后就以预定周期广播第四数据包,同时,第一 BMC会接收至少一个第二 BMC广播的第一数据包。也就是说,BMC在OS启动后,就成为服务节点,广播服务数据包。[0094]步骤210:判断记录的Uboot的运行次数是否达到预定次数。[0095]若未达到预定次数,则执行步骤201 ;若达到预定次数,则执行步骤211。[0096]可选地,可以采用看门狗定时器来采集Uboot的运行次数。BMC在运行Uboot的同 时,启动看门狗定时器。在OS启动后,OS将加载一个喂狗应用进程,传递参数值至看门狗定 时器,以关闭看门狗定时器。当OS未启动时,喂狗应用进程无法启动,如果在预设时间内未 传递参数值至看门狗定时器,看门狗定时器计数+1,表示Uboot启动了一次。当看门狗定时 器计数+1时,复位BMC,重新运行Uboot (执行步骤201),再次循环计数过程。这样,看门狗 定时器将采集Uboot的运行次数。当看门狗定时器的计数达到预定次数时,执行步骤211。[0097]可选地,看门狗定时器可以存储在BMC的复杂可编程逻辑器件 (ComplexProgrammable Logic Device,简称 CPLD)。[0098]可选地,预定次数可以是预先设置的Uboot运行的具体次数,例如2次。若CPLD 中存储的Uboot的运行次数超过2次,则判定本BMC上的OS文件已经发生损坏,执行步骤 210;若未超过2次,则重新运行Uboot (执行步骤201)。设置预定次数,可以规避OS文件 的可恢复性错误。[0099]需要说明的是,在采用本地的OS文件启动OS后,还包括:将存储器中存储的 Uboot的运行次数清零。[0100]步骤211:读取Uboot的环境变量,以获取第二 BMC的IP地址和第二 BMC的OS文 件的下载目录。[0101]可选地,若Uboot的运行次数超过预定次数,表明本BMC上的OS文件已经发生损 坏,这时,通过读取本地存储的第二 BMC的IP地址和第二 BMC的OS文件的下载目录,获取 第二 BMC的IP地址和第二 BMC的OS文件的下载目录。由于本BMC将第二 BMC的IP地址 和第二 BMC的OS文件的下载目录作为环境变量存储在Uboot中。因此,可以在Uboot环境 下直接读取Uboot的环境变量,获取第二 BMC的IP地址和第二 BMC的OS文件的下载目录。[0102]在其中一个实施例中,可以在第一 BMC加入该局域网时,预先将第二 BMC的IP地 址和第二 BMC的OS文件的下载目录(第二 BMC可以是在局域网内静态设置的提供OS文件 下载的BMC)写入第一 BMC的Uboot的环境变量中。[0103]在另外一个实施例中,可以在OS文件未损坏之前,OS能够正常启动后接收第一数 据包,并将第一数据包携带的第二 BMC的IP地址和第二 BMC的OS文件的下载目录写入第 一 BMC的Uboot的环境变量中的方式(参见步骤204)。[0104]步骤212:根据第二 BMC的IP地址和OS文件的下载目录,通过TFTP服务从第二 BMC下载第二 BMC的OS文件并存储到指定位置,以覆盖第一 BMC的OS文件。[0105]可选地,可以查询第一数据包是否包括下载服务开启标记,若第一数据包包括下 载服务开启标记,则表明第二 BMC已开启下载服务,根据第二 BMC的IP地址和OS文件的下 载目录,从第二 BMC下载OS文件。若第一数据包不包括下载服务开启标记,则表明第二 BMC 未开启下载服务,执行步骤210,继续接收第二 BMC广播的第一数据包。[0106]可选地,下载的OS文件可以存储在本BMC的Flash中指定位置,该指定位置为存储本BMC的OS文件的位置。下载的OS文件将直接覆盖Flash中原始OS文件。[0107]以上,通过步骤211和步骤212,实现了通过TFTP服务从第二 BMC下载第二BMC的 OS文件。[0108]步骤213:重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。[0109]下载第二 BMC的OS文件后,复位本BMC,以重新运行Uboot。Uboot重新运行后, Uboot将通过下载的OS文件引导OS启动,OS启动成功。[0110]可选地,本步骤213包括:将记录的Uboot的运行次数清零,并复位本BMC,以重新 运行Uboot。[0111]值得说明的是,在实际应用中,可以设置一个预定的OS文件下载时间。在本BMC 的Uboot的运行次数达到预定次数后,维持Uboot环境且维持Uboot环境的时间为预定OS 文件下载时间,然后再复位本BMC。假设在预定OS文件下载时间内,本BMC下载了 OS文件, 那么在Uboot重新运行后,Uboot将通过下载的OS文件引导OS启动。[0112]需要说明的是,每个BMC配置了相同的应用进程(相同的OS文件),每个应用进程 可以单独对应实现不同的服务。当第一 BMC运行其中一些应用进程,用于提供第一服务,而 第二 BMC运行另外一些应用进程,用于提供第二服务时,第一 BMC的Uboot通过下载的第二 BMC的OS文件引导OS启动后,OS将加载一个专门的应用进程,该专门的应用进程将获取 第一 BMC的服务类型(第一服务),并在预设的服务类型-应用进程的对应关系中,获取第一 BMC的服务类型对应的应用进程。接着,OS将加载第一 BMC的服务类型对应的应用进程,使 第一 BMC提供其对应的服务。这样,即便第二 BMC与第一 BMC提供的服务不同,也能共用相 同的OS文件。[0113]本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一 BMC 从第二 BMC下载第二 BMC的OS文件并存储到本地Flash中,以覆盖第一 BMC的OS文件;重 新运行UbooU使Uboot通过下载的OS文件引导OS启动;能够在第一 BMC的存储器上只存 储一份OS文件,节省存储器的存储空间;还能够通过从第二 BMC下载的OS文件启动OS,提 高了第一 BMC的容错性能,在OS文件损坏时第一 BMC能够自动恢复。[0114]实施例三[0115]本发明实施例提供了一种嵌入式操作系统的启动装置,该装置可以设在基板管理 控制器中,例如前述第一基板管理控制器。参见图4,该装置包括:[0116]运行模块401,用于运行以本地Flash首地址为起始地址存储的Uboot,使Uboot 执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件 执行,以使OS文件采用引导参数引导OS启动。[0117]下载模块402,用于当OS文件采用弓I导参数不能启动OS时,通过TFTP服务从第二 BMC下载第二 BMC的OS文件并存储到指定位置,以覆盖第一 BMC的OS文件。[0118]其中,第一 BMC的OS文件和第二 BMC的OS文件相同。[0119]该运行模块401还用于,重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。[0120]本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一 BMC 从第二 BMC下载第二 BMC的OS文件并存储到本地Flash中,以覆盖第一 BMC的OS文件;重 新运行UbooU使Uboot通过下载的OS文件引导OS启动;能够在第一 BMC的存储器上只存储一份OS文件,节省存储器的存储空间;还能够通过从第二 BMC下载的OS文件启动OS,提 高了第一 BMC的容错性能,在OS文件损坏时第一 BMC能够自动恢复。[0121]实施例四[0122]本发明实施例提供了一种嵌入式操作系统的启动装置,该装置可以设在基板管理 控制器中,例如前述第一基板管理控制器。参见图5,该装置包括:[0123]运行模块501,用于运行以本地Flash首地址为起始地址存储的Uboot,使Uboot 执行命令,将本地Flash中指定位置存储的OS文件拷贝到内存,并传递引导参数给OS文件 执行,以使OS文件采用引导参数引导OS启动。[0124]下载模块502,用于当OS文件采用引导参数不能启动OS时,从第二 BMC下载第二 BMC的OS文件并存储到指定位置,以覆盖第一 BMC的OS文件。[0125]其中,本BMC的OS文件和第二 BMC的OS文件相同。[0126]下载模块502用于,当OS文件采用引导参数不能启动OS时,判断记录的Uboot的 运行次数是否达到预定次数;若Uboot的运行次数达到预定次数,则通过TFTP服务从第二 BMC下载第二 BMC的OS文件并存储到本地Flash中。[0127]该运行模块501还用于,重新运行Uboot,使Uboot通过下载的OS文件引导OS启动。[0128]可选地,运行模块501还用于,若Uboot的运行次数达到预定次数,则将记录的 Uboot的运行次数清零,并复位第一 BMC,以重新运行Uboot。[0129]该装置还包括:[0130]判断模块503,用于在OS文件采用引导参数启动OS后,判断在Uboot运行后的第 一预定时间内,是否接收到第二 BMC广播的第一数据包和至少一个第三BMC广播的第二数 据包,该第一数据包包括服务BMC标记、第二 BMC的IP地址和第二 BMC的OS文件的下载目 录,该第二数据包包括包括竞争BMC标记和第三BMC的IP地址。[0131]广播模块504,用于当未接收到第一数据包和第二数据包时,广播第三数据包,该 第三数据包包括竞争BMC标记和本BMC的IP地址。[0132]存储模块505,用于当接收到第一数据包时,将第二 BMC的IP地址和第二 BMC的 OS文件的下载目录作为环境变量存储到Uboot中。[0133]可选地,判断模块503还用于,判断在广播第三数据包后的第二预定时间内是否 接收到至少一个第三BMC广播的第二数据包。[0134]可选地,广播模块504还用于,当在广播第三数据包后的第二预定时间内未接收 到至少一个第三BMC广播的第二数据包时,以预定周期广播第四数据包,该第四数据包包 括服务BMC标记、本BMC的IP地址、以及本BMC的OS文件的下载目录。[0135]可选地,判断模块503还用于,当在广播第三数据包后的第二预定时间内接收到 至少一个第三BMC广播的第二数据包时,根据本BMC与每个第三BMC的IP地址的大小,判 断本BMC的IP地址是否为最大IP地址。[0136]可选地,广播模块504还用于,当本BMC的IP地址为最大IP地址时,以预定周期 广播第四数据包。[0137]可选地,判断模块503还用于,判断在接收到最后一个第一数据包后的预定时长 内是否再次接收到第一数据包,该预定时长大于预定广播周期。[0138]可选地,广播模块504还用于,当在接收到最后一个第一数据包后的预定时长内 未再次接收到第一数据包时,广播第三数据包。[0139]本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一 BMC 从第二 BMC下载第二 BMC的OS文件并存储到本地Flash中,以覆盖第一 BMC的OS文件;重 新运行UbooU使Uboot通过下载的OS文件引导OS启动;能够在第一 BMC的存储器上只存 储一份OS文件,节省存储器的存储空间;还能够通过从第二 BMC下载的OS文件启动OS,提 高了第一 BMC的容错性能,在OS文件损坏时第一 BMC能够自动恢复。[0140]实施例五[0141]本发明实施例提供了一种基板管理控制器,适用于本发明实施例一和二提供的嵌 入式操作系统的启动方法。参见图6,该控制器一般包括至少一个处理器61(例如CPU)、至 少一个网络接口 62或者其他通信接口、存储器63和至少一个通信总线64。本领域技术人 员可以理解,图6中示出的结构并不构成对该控制器的限定,其可以包括比图示更多或更 少的部件,或者组合某些部件,或者不同的部件布置。[0142]下面结合图6对该控制器的各个构成部件进行具体的介绍:[0143]通信总线64用于实现处理器61、存储器63及网络接口 62之间的连接通信。[0144]至少一个网络接口 62 (可以是有线或者无线)实现该控制器与至少一个其他控制 器之间的通信连接,可以使用互联网,广域网,本地网,城域网等。[0145]存储器63可用于存储软件程序以及应用模块,处理器61通过运行存储在存储器 63的软件程序以及应用模块,从而执行该控制器的各种功能应用以及数据处理。存储器63 可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统(的文件)、至少一 个功能(例如广播数据包)所需的应用程序等;存储数据区可存储根据该设备的使用所创建 的数据(例如存储的Uboot的启动次数)等。此外,存储器63可以包括高速RAM (Random Access Memory,随机存取存储器),还可以包括非易失性存储器(non-volatile memory), 例如至少一个磁盘存储器件、闪存器件(Flash )、或其他易失性固态存储器件(例如CPLD )。[0146]处理器61是该设备的控制中心,利用各种接口和线路连接整个控制器的各个部 分,通过运行或执行存储在存储器63内的软件程序和/或应用模块,以及调用存储在存储 器63内的数据,执行控制器的各种功能和处理数据,从而对控制器进行整体监控。[0147]可选地,通过运行或执行存储在存储器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启动。[0148]可选地,处理器61用于实现,在OS文件采用引导参数启动OS后,判断在Uboot运 行后的第一预定时间内,是否接收到第二 BMC广播的第一数据包和至少一个第三BMC广播 的第二数据包,第一数据包包括服务BMC标记、第二 BMC的IP地址、以及第二 BMC的OS文 件的下载目录;第二数据包包括包括竞争BMC标记和第三BMC的IP地址;当未接收到第一 数据包和第二数据包时,广播第三数据包,第三数据包包括竞争BMC标记和第一 BMC的IP地址;当接收到第一数据包时,将第二 BMC的IP地址和第二 BMC的OS文件的下载目录作为 环境变量存储到Uboot中。[0149]可选地,处理器61用于实现,判断在广播第三数据包后的第二预定时间内是否接 收到至少一个第三BMC广播的第二数据包;当在广播第三数据包后的第二预定时间内未接 收到至少一个第三BMC广播的第二数据包时,以预定广播周期广播第四数据包,第四数据 包包括服务BMC标记、第一 BMC的IP地址、以及第一 BMC的OS文件的下载目录。[0150]可选地,处理器61用于实现,当在广播第三数据包后的第二预定时间内接收到至 少一个第三BMC广播的第二数据包时,根据第一 BMC与每个第三BMC的IP地址的大小,判 断第一 BMC的IP地址是否为最大IP地址;当第一 BMC的IP地址为最大IP地址时,以预定 广播周期广播第四数据包。[0151]可选地,处理器61用于实现,判断在接收到最后一个第一数据包后的预定时长内 是否再次接收到第一数据包,预定时长大于预定广播周期;当在接收到最后一个第一数据 包后的预定时长内未再次接收到第一数据包时,广播第三数据包。[0152]可选地,处理器61用于实现,当OS文件采用引导参数不能启动OS时,判断记录的 Uboot的运行次数是否达到预定次数;若Uboot的运行次数达到预定次数,则通过TFTP服 务从第二 BMC下载第二 BMC的OS文件。[0153]本发明实施例通过当采用本地Flash中存储的OS文件不能启动OS时,第一 BMC 从第二 BMC下载第二 BMC的OS文件并存储到本地Flash中,以覆盖第一 BMC的OS文件;重 新运行UbooU使Uboot通过下载的OS文件引导OS启动;能够在第一 BMC的存储器上只存 储一份OS文件,节省存储器的存储空间;还能够通过从第二 BMC下载的OS文件启动OS,提 高了第一 BMC的容错性能,在OS文件损坏时第一 BMC能够自动恢复。[0154]需要说明的是:上述实施例提供的嵌入式操作系统的启动装置在启动嵌入式操作 系统时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功 能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上 描述的全部或者部分功能。另外,上述实施例提供的嵌入式操作系统的启动装置与嵌入式 操作系统的启动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘 述。[0155]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。[0156]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件 来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读 存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0157]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种嵌入式操作系统的启动方法,其特征在于,所述方法包括:第一基板管理控制器的处理器运行以本地闪存首地址为起始地址存储的通用引导加载程序,使所述通用引导加载程序执行命令,将本地闪存中指定位置存储的操作系统文件拷贝到内存,并传递引导参数给所述操作系统文件执行,以使所述操作系统文件采用所述引导参数引导操作系统启动;当所述操作系统文件采用所述引导参数不能启动所述操作系统时,通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存储到所述指定位置,以覆盖所述第一基板管理控制器的操作系统文件,所述第一基板管理控制器的操作系统文件和所述第二基板管理控制器的操作系统文件相同;重新运行所述通用引导加载程序,使所述通用引导加载程序通过下载的操作系统文件引导所述操作系统启动。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述操作系统文件采用所述引导参数启动所述操作系统后,判断在所述通用引导加载程序运行后的第一预定时间内,是否接收到所述第二基板管理控制器广播的第一数据包和至少一个第三基板管理控制器广播的第二数据包,所述第一数据包包括服务基板管理控制器标记、所述第二基板管理控制器的网际互联协议地址、以及所述第二基板管理控制器的操作系统文件的下载目录,所述第二数据包包括竞争基板管理控制器标记和所述第三基板管理控制器的网际互联协议地址;当未接收到所述第一数据包和所述第二数据包时,广播第三数据包,所述第三数据包包括竞争基板管理控制器标记和所述第一基板管理控制器的网际互联协议地址;当接收到所述第一数据包时,将所述第二基板管理控制器的网际互联协议地址和所述第二基板管理控制器的操作系统文件的下载目录作为环境变量存储到所述通用引导加载程序中。
3.根据权利要求2所述的方法,其特征在于,在所述广播第三数据包之后,所述方法还包括:判断在广播所述第三数据包后的第二预定时间内是否接收到至少一个所述第三基板管理控制器广播的第二数据包;当在广播所述第三数据包 后的第二预定时间内未接收到所述至少一个第三基板管理控制器广播的第二数据包时,以预定广播周期广播第四数据包,所述第四数据包包括服务基板管理控制器标记、所述第一基板管理控制器的网际互联协议地址、以及所述第一基板管理控制器的操作系统文件的下载目录。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:当在广播所述第三数据包后的第二预定时间内接收到所述至少一个第三基板管理控制器广播的第二数据包时,根据所述第一基板管理控制器与每个所述第三基板管理控制器的网际互联协议地址的大小,判断所述第一基板管理控制器的网际互联协议地址是否为最大网际互联协议地址;当所述第一基板管理控制器的网际互联协议地址为最大网际互联协议地址时,以所述预定广播周期广播所述第四数据包。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:判断在接收到最后一个所述第一数据包后的预定时长内是否再次接收到所述第一数据包,所述预定时长大于所述预定广播周期;当在接收到最后一个所述第一数据包后的预定时长内未再次接收到所述第一数据包时,广播所述第三数据包。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件,包括:判断记录的所述通用引导加载程序的运行次数是否达到预定次数;若所述通用引导加载程序的运行次数达到所述预定次数,则通过简单文件传输协议服务从所述第二基板管理控制器下载所述第二基板管理控制器的操作系统文件。
7.一种嵌入式操作系统的启动装置,其特征在于,所述装置包括:运行模块,用于运行以本地闪存首地址为起始地址存储的通用引导加载程序,使所述通用引导加载程序执行命令,将本地闪存中指定位置存储的操作系统文件拷贝到内存,并传递引导参数给所述操作系统文件执行,以使所述操作系统文件采用所述引导参数引导操作系统启动;下载模块,用于当所述操作系统文件采用所述引导参数不能启动所述操作系统时,通过简单文件传输协议服务从第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并存储到所述指定位置,以覆盖所述第一基板管理控制器的操作系统文件,所述基板管理控制器的操作系统文件和所述第二基板管理控制器的操作系统文件相同;所述运行模块还用于,重新运行所述通用引导加载程序,使所述通用引导加载程序通过下载的操作系统文件引导所述操作系统启动。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:判断模块,用于在所述操作系统文件采用所述引导参数启动所述操作系统后,判断在所述通用引导加载程序运行后的第一预定时间内,是否接收到所述第二基板管理控制器广播的第一数据包和至少一个第三基板管理控制器广播的第二数据包,所述第一数据包包括服务基板管理控制器标记、所述第二基板管理控制器的网际互联协议地址、以及所述第二基板管理控制器的操作系统文件的下载目录,所述第二数据包包括竞争基板管理控制器标记和所述第三基板管理控制器的网际互联协议地址;广播模块,用于当未接收到所述第一数据包和所述第二数据包时,广播第三数据包,所述第三数据包包括竞争基板管理控制器标记和本基板管理控制器的网际互联协议地址;存储模块,用于当接收到所述第一数据包时,将所述第二基板管理控制器的网际互联协议地址和所述第二基板管理控制器的操作系统文件的下载目录作为环境变量存储到所述通用引导加载程序中。
9.根据权利要求8所述的装置,其特征在于,所述判断模块还用于,判断在广播所述第三数据包后的第二预定时间内是否接收到至少一个第三基板管理控制器广播的第二数据包;所述广播模块还用于,当在广播所述第三数据包后的第二预定时间内未接收到所述至少一个第三基板管理控制器广播的第二数据包时,以预定广播周期广播第四数据包,所述第四数据包包括服务基板管理控制器标记、所述本基板管理控制器的网际互联协议地址、 以及所述本基板管理控制器的操作系统文件的下载目 录。
10.根据权利要求9所述的装置,其特征在于,所述判断模块还用于,当在广播所述第三数据包后的第二预定时间内接收到所述至少一个第三基板管理控制器广播的第二数据包时,根据所述本基板管理控制器与每个所述第三基板管理控制器的网际互联协议地址的大小,判断所述本基板管理控制器的网际互联协议地址是否为最大网际互联协议地址;所述广播模块还用于,当所述本基板管理控制器的网际互联协议地址为最大网际互联协议地址时,以所述预定周期广播所述第四数据包。
11.根据权利要求10所述的装置,其特征在于, 所述判断模块还用于,判断在接收到最后一个所述第一数据包后的预定时长内是否再次接收到所述第一数据包,所述预定时长大于所述预定广播周期;所述广播模块还用于,当在接收到最后一个所述第一数据包后的预定时长内未再次接收到所述第一数据包时,广播所述第三数据包。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述下载模块用于:当所述操作系统文件采用所述引导参数不能启动所述操作系统时,判断记录的所述通用引导加载程序的运行次数是否达到预定次数;若所述通用引导加载程序的运行次数达到所述预定次数,则通过简单文件传输协议服务从所述第二基板管理控制器下载所述第二基板管理控制器的操作系统文件并下载到所述本地闪存中。
13.—种基板管理控制器,包括处理器和存储器,其特征在于,所述处理器用于执行权利要求1-5任一项所述的方法。
【文档编号】G06F9/445GK103605536SQ201310544746
【公开日】2014年2月26日 申请日期:2013年11月6日 优先权日:2013年11月6日
【发明者】李娟 , 张蔚, 张羽 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1