一种集中固件更新方法_2

文档序号:9489302阅读:来源:国知局
件到SMC,存储到/dev/shm挂载的/mnt目录下,文件名为rom.1ma, SMC端不进行固件的校验;
(8)SMC端使用Web服务器的文件上传功能上传固件完毕后,SMC向BMC发送ReceiveFlash File 命令;
(9)BMC接收到ReceiveFlash File命令后,如果已成功执行Prepare Flash Area命令,则向SMC回复可以接收固件文件;
(10)SMC获取BMC是否可以接收固件文件的信息,若存在可以接收固件文件的BMC,则SMC读取/mnt/rom.1ma的一个尺寸为整个固件尺寸的整数分之一的数据块并向收到Receive Flash File命令回复的BMC分别发送:
当未读到文件末尾时,发送内容为这个数据块及数据块结尾的未发送完毕标志位; 当已读到文件末尾时,由于设置的读取数据块尺寸为整个固件尺寸的整数分之一,因此readO函数返回的实际读取字节为0,为了 BMC接收端处理数据的一致性,使发送内容为相同尺寸的未经赋值的数据块及数据块结尾的已发送完毕标志位;
发送完此数据块后,经过一定的延时,等待BMC接收并写入此数据块后,再读取新的数据块并分别发送,直到发送完毕;
(11)BMC接收固件文件数据块,解析数据块结尾的标志位:
若标志位指示未发送完毕,则将去除标志位的数据块写入BMC端的固件文件;
若标志位指示已发送完毕,则不再向BMC端的固件文件中写入任何数据,并关闭文件;BMC端的固件文件存储在与SMC端类似的位置,即将接收到的数据块存储为BMC端/dev/shm挂载的/mnt目录下的rom.1ma文件;
BMC完成固件接收并关闭固件文件后,向SMC回复已接收完毕;
(12)SMC获取BMC执行Receive Flash File命令的状态;
(13)如果BMC接收固件文件完毕,则SMC向BMC发送VerifyFirmware Image命令;
(14)BMC执行Verify Firmware Image命令,如果校验成功,贝Ij向SMC回复可以进行固件刷新。
[0022](I5) SMC 获取 BMC 执行 Verify Firmware Image 命令的状态;
(16)如果BMC校验成功,则SMC向BMC发送StartImage Flash命令;
(17)BMC执行Start Image Flash命令进入真正的固件刷新阶段,如果刷新完毕,则向SMC回复固件已刷新完毕并自动重启;
(18)SMC 向 BMC 定时发送Get Flash Progress 命令以获取BMC执行 Start Image Flash命令后BMC的固件刷新进度;
(19)如果所有的BMC已完成固件刷新,则SMC自动重启。
[0023]通过以上描述可见,相比于现有技术下的使用Web逐个更新固件的技术方案,本实施例具有以下特点:
(1)典型固件更新方案中,同一时刻只有一个管理控制器(SMC/BMC)处于固件更新状态,本实施例允许多个BMC同时更新固件;
(2)典型固件更新方案中,Web页面上的操作直接映射到Web所在管理控制器的底层,如Prepare Flash Area、Upload Flash File、Verify Firmware Image、Start Image Flash和Get Flash Progress操作,都是Web通过调用接口直接调用其所在控制器的底层代码,本实施例的上述操作是通过SMC端的Web触发相应的Prepare Flash Area、Receive FlashFile、Verify Firmware Image、Start Image Flash 和 Get Flash Progress 命令的发送过程,通过网络发送到BMC,由BMC端的底层代码执行的。
[0024]以Prepare Flash Area命令为例说明BMC集中固件更新的信号流如下:
(1)操作SMC的Web页面产生PrepareFlash Area动作;
(2)Web页面调用相应的扩展的Web接口 ;
(3)Web接口调用扩展的固件刷新库中的相应接口 ;
(4)通过不同主机进程间通信机制向BMC发出PrepareFlash Area命令;
(5)BMC的“处理SMC命令线程”接收和解析SMC发送的信息,并调用BMC固件刷新库中的相应接口; (6)BMC固件刷新库中的相应接口通过本机进程间通信向固件刷新进程发送PrepareFlash Area 命令;
(7)固件刷新进程接收命令并执行具体的PrepareFlash Area动作;
(8)固件刷新进程执行PrepareFlash Area动作的返回值通过本机进程间通信被固件刷新库中的相应接口获取;
(9)“处理SMC命令线程”将固件刷新库中的相应接口获取的命令执行的返回值通过不同主机进程间通信机制发送给SMC ;
(10)SMC的“处理BMC回复线程”接收和解析BMC回复的信息,并存入BMC回复信息的存储空间;
(11)扩展的固件刷新库中的相应接口获取BMC回复信息并返回给相应的扩展的Web接
P ;
(12)SMC的Web页面使用BMC回复信息更新各个BMC执行Prepare Flash Area命令的显不O
[0025]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1. 一种集中固件更新方法,包括以下步骤: A、选择需要更新固件的BMC; B、SMC发送准备命令给BMC,BMC及SMC分别执行所述的准备命令; C、使用SMC的Web服务器上传固件文件到SMC,同时SMC向BMC发送接收命令; D、BMC接收所述的固件文件,并反馈可以接收的信息给SMC; E、SMC判断是否存在可以接收固件文件的BMC,如果存在,则读取固件尺寸比数据块并向收到接收命令回复的BMC分别发送; F、发送完固件尺寸比数据块后,经过延时,等待BMC接收并写入此固件尺寸比数据块后,再读取新的固件尺寸比数据块并分别发送,直到发送完毕; G、BMC接收固件文件的固件尺寸比数据块,解析固件尺寸比数据块结尾的标志位; H、BMC完成固件接收并关闭固件文件后,向SMC回复已接收完毕; I、如果BMC接收固件文件完毕,则SMC向BMC发送校验命令; J、BMC执行校验命令,如果校验成功,则向SMC回复可以进行固件刷新; K、SMC获取BMC执行校验命令的状态; L、如果BMC校验成功,则SMC向BMC发送开始命令; M、BMC执行开始命令进入真正的固件刷新阶段,如果刷新完毕,则向SMC回复固件已刷新完毕并自动重启; N、SMC向BMC定时发送获取命令以获取BMC执行开始命令后BMC的固件刷新进度; O、如果所有的BMC已完成固件刷新,则SMC自动重启。2.根据权利要求I所述的一种集中固件更新方法,其特征在于,所述方法具体包括: (1)服务器上电,待整个管理系统完成启动后登录SMC的Web管理界面; (2)在BMC固件更新页面选择要更新固件的BMC,进入集中固件更新阶段; (3)SMC发送准备命令到被选中的BMC ; (4)BMC执行所述准备命令为接收和刷新固件做准备,执行完毕后BMC向SMC回复已完成准备; (5)SMC获取BMC执行所述准备命令的状态; (6)在BMC完成准备操作后,SMC也执行所述的准备命令,以释放一部分RAM空间; (7)在SMC完成所述准备命令操作后,选择BMC固件,使用SMC的Web服务器提供的文件上传功能上传BMC固件到SMC ; (8)SMC端使用Web服务器的文件上传功能上传固件完毕后,SMC向BMC发送接收命令; (9)BMC接收到所述的接收命令后,如果已成功执行所述的准备命令,则向SMC回复可以接收固件文件; (10)SMC获取BMC是否可以接收固件文件的信息,若存在可以接收固件文件的BMC^lJSMC读取固件尺寸比数据块并向收到接收命令回复的BMC分别发送: 发送完固件尺寸比数据块后,经过延时,等待BMC接收并写入此固件尺寸比数据块后,再读取新的固件尺寸比数据块并分别发送,直到发送完毕; (11)BMC接收固件文件的固件尺寸比数据块,解析固件尺寸比数据块结尾的标志位; BMC完成固件接收并关闭固件文件后,向SMC回复已接收完毕; (12)SMC获取BMC执行接收命令的状态; (13)如果BMC接收固件文件完毕,则SMC向BMC发送校验命令; (14)BMC执行校验命令,如果校验成功,则向SMC回复可以进行固件刷新; (15)SMC获取BMC执行校验命令的状态; (16)如果BMC校验成功,则SMC向BMC发送开始命令; (17)BMC执行开始命令进入真正的固件刷新阶段,如果刷新完毕,则向SMC回复固件已刷新完毕并自动重启; (18)SMC向BMC定时发送获取命令以获取BMC执行开始命令后BMC的固件刷新进度; (19)如果所有的BMC已完成固件刷新,则SMC自动重启。3.根据权利要求2所述的一种集中固件更新方法,其特征在于,所述步骤(7)中: 在SMC完成准备命令操作后,选择固件后使用SMC的Web服务器提供的文件上传功能上传BMC固件到SMC,存储到/dev/shm挂载的/mnt目录下,文件名为rom. ima,SMC端不进行固件的校验。4.根据权利要求3所述的一种集中固件更新方法,其特征在于,步骤(10)中所述的固件尺寸比数据块的获取方法是:SMC读取/mnt/rom. ima的一个尺寸为整个固件尺寸的整数分之一生成所述的固件尺寸比数据块。5.根据权利要求4所述的一种集中固件更新方法,其特征在于, 当未读到文件末尾时,发送内容为这个固件尺寸比数据块及固件尺寸比数据块结尾的未发送完毕标志位; 当已读到文件末尾时,由于设置的读取数据块尺寸为整个固件尺寸的整数分之一,因此readO函数返回的实际读取字节为0,为了 BMC接收端处理数据的一致性,使发送内容为相同尺寸的未经赋值的数据块及数据块结尾的已发送完毕标志位。6.根据权利要求2所述的一种集中固件更新方法,其特征在于,所述步骤(11)中: 若标志位指示未发送完毕,则将去除标志位的数据块写入BMC端的固件文件; 若标志位指示已发送完毕,则不再向BMC端的固件文件中写入任何数据,并关闭文件; BMC端的固件文件存储在与SMC端类似的位置,即将接收到的数据块存储为BMC端/dev/shm挂载的/mnt目录下的rom. ima文件。
【专利摘要】本发明涉及服务器管理技术领域,尤其涉及一种集中固件更新方法。本发明的一种集中固件更新方法,在不使用任何第三方工具软件的情况下,通过操作SMC的Web管理界面,借助SMC的固件中继作用,实现对多个BMC固件的同时集中更新,避免单独对某一个BMC进行分散式的固件更新的繁琐和低效,同时不存在现有批量更新固件的技术方案中对第三方工具软件的依赖,以提高固件更新效率。
【IPC分类】G06F9/445
【公开号】CN105242940
【申请号】CN201510580904
【发明人】李清石, 金长新, 刘强, 张雁鹏
【申请人】浪潮集团有限公司
【公开日】2016年1月13日
【申请日】2015年9月14日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1