CN117472457B - 一种双bios***、***切换方法、装置、设备及存储介质 - Google Patents

一种双bios***、***切换方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117472457B
CN117472457B CN202311824634.4A CN202311824634A CN117472457B CN 117472457 B CN117472457 B CN 117472457B CN 202311824634 A CN202311824634 A CN 202311824634A CN 117472457 B CN117472457 B CN 117472457B
Authority
CN
China
Prior art keywords
bios
subsystem
switching
chip
condition
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.)
Active
Application number
CN202311824634.4A
Other languages
English (en)
Other versions
CN117472457A (zh
Inventor
王兵
刘朝辉
李道童
孙秀强
陈鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202410399736.4A priority Critical patent/CN118227214A/zh
Priority to CN202311824634.4A priority patent/CN117472457B/zh
Publication of CN117472457A publication Critical patent/CN117472457A/zh
Application granted granted Critical
Publication of CN117472457B publication Critical patent/CN117472457B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例涉及操作***技术领域,具体涉及一种双BIOS***、***切换方法、装置、设备及存储介质,旨在提升双BIOS***切换的效率。所述***包括:第一BIOS芯片,用于运行第一BIOS子***;第二BIOS芯片,用于运行第二BIOS子***;BMC芯片,用于运行BMC程序;BMC控制芯片,用于控制所述BMC芯片以及所述第二BIOS芯片,所述BMC控制芯片与所述BMC芯片以及所述第二BIOS芯片连接;平台控制器芯片组,用于控制所述第一BIOS芯片以及所述BMC控制芯片,所述平台控制器芯片组通过第一总线与所述第一BIOS芯片连接,所述平台控制器芯片组通过第二总线与所述BMC控制芯片连接,所述第一总线与所述第二总线连接,所述平台控制器芯片组与CPU连接。

Description

一种双BIOS***、***切换方法、装置、设备及存储介质
技术领域
本申请实施例涉及操作***技术领域,具体而言,涉及一种双BIOS***、***切换方法、装置、设备及存储介质。
背景技术
在服务器***中,BIOS(Basic Input Output System,基本输入输出***)芯片承担着整个***的引导、硬件初始化和操作***的加载功能,在***运行时还提供了部分必要的底层服务,对整个服务器***起着至关重要的作用。
当BIOS芯片出现故障时,服务器***无法正常启动,需要对BIOS芯片进行修复之后再启动,会耽误整个***的工作效率,给使用方造成损失。
发明内容
本申请实施例提供一种双BIOS***、***切换方法、装置、设备及存储介质,旨在保证BIOS***的稳定运行。
本申请实施例第一方面提供一种双BIOS***,所述***包括:
第一BIOS芯片,用于运行第一BIOS子***;
第二BIOS芯片,用于运行第二BIOS子***;
BMC芯片,用于运行BMC程序;
BMC控制芯片,用于控制所述BMC芯片以及所述第二BIOS芯片,所述BMC控制芯片与所述BMC芯片以及所述第二BIOS芯片连接;
平台控制器芯片组,用于控制所述第一BIOS芯片以及所述BMC控制芯片,所述平台控制器芯片组通过第一总线与所述第一BIOS芯片连接,所述平台控制器芯片组通过第二总线与所述BMC控制芯片连接,所述第一总线与所述第二总线连接,所述平台控制器芯片组与CPU连接。
可选地,所述双BIOS***的访问主体包括host以及所述BMC控制芯片,所述host以及所述BMC控制芯片通过发送指令进行交互访问。
可选地,所述BMC控制芯片对所述第一BIOS芯片进行子***刷新后,向所述host发送子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第一BIOS子***切换至所述第二BIOS子***;
在所述第一BIOS子***切换至所述第二BIOS子***的情况下,所述BMC控制芯片对所述第二BIOS芯片上的所述第二BIOS子***进行刷新;
在所述第二BIOS芯片上的所述第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述host发送所述子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第二BIOS子***切换至所述第一BIOS子***。
可选地,所述host对所述第一BIOS芯片上的所述第一BIOS子***进行子***刷新后,将所述第一BIOS子***切换为所述第二BIOS子***;
在所述第一BIOS子***切换为所述第二BIOS子***的情况下,所述host对所述第二BIOS芯片上的所述第二BIOS子***进行刷新;
在所述第二BIOS芯片上的所述第二BIOS子***刷新完毕的情况下,所述host 将所述第二BIOS子***切换为所述第一BIOS子***。
可选地,所述BMC控制芯片在接收到子***切换指令的情况下,向所述host发送子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述host在主动进行子***切换的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述BMC控制芯片在检测到操作***启动故障的情况下,向所述host发送子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述host在正常运行的情况下,读取所述第一BIOS芯片中的数据;
所述host向所述BMC控制芯片发送数据读取指令;
所述BMC控制芯片在接收到所述数据读取指令的情况下,将所述第二BIOS芯片中的数据发送至所述host;
所述host对所述第一BIOS芯片中的数据与所述第二BIOS芯片中的数据进行数据校验;
所述host根据数据校验结果,对所述第一BIOS芯片与所述第二BIOS芯片进行数据同步。
本申请实施例第二方面提供一种***切换方法,所述方法应用于所述双BIOS***,包括:
在第一BIOS子***运行的情况下,确定是否需要进行子***切换;
在需要进行子***切换的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发;
根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***;
在所述第一BIOS子***切换为所述第二BIOS子***的情况下,获取标志寄存器的值;
根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***;
使用所述BIOS子***进行数据访问。
可选地,所述根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***,包括:
在所述切换触发条件为所述刷新双BIOS触发的情况下,确定刷新所述第一BIOS子***的执行主体;
在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第一切换请求发送至host;
所述host根据所述第一切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,在通过所述BMC控制芯片将第一切换请求发送至host之前,所述方法还包括:
通过所述BMC控制芯片对所述第一BIOS子***进行刷新;
将所述标志寄存器的值设置为第二预设值。
可选地,所述方法还包括:
在所述执行主体为所述host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,在通过所述host将所述第一BIOS子***切换为所述第二BIOS子***之前,所述方法还包括:
通过所述host对所述第一BIOS子***进行刷新;
将所述标志寄存器的值设置为第三预设值。
可选地,所述方法还包括:
在所述切换触发条件为所述手动切换触发的情况下,通过BMC控制芯片接收子***切换指令;
通过所述BMC控制芯片,将第二切换请求发送至host;
所述host根据所述第二切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述方法还包括:
在所述切换触发条件为所述自动切换触发的情况下,确定所述自动切换触发对应的执行主体;
在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第三切换请求发送至host;
所述host根据所述第三切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述方法还包括:
在所述执行主体为host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***,包括:
在所述标志寄存器的值为第一预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第二BIOS子***;
在所述标志寄存器的值为第二预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***;
在所述标志寄存器的值为第三预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***。
可选地,所述方法还包括:
在所述标志寄存器的值为所述第二预设值的情况下,通过BMC控制芯片对所述第二BIOS子***进行刷新;
在所述第二BIOS子***刷新完毕的情况下,向host发送第四切换请求;
所述host根据所述第四切换请求,将所述第二BIOS子***切换为所述第一BIOS子***。
可选地,所述方法还包括:
在所述标志寄存器的值为所述第三预设值的情况下,通过host对所述第二BIOS子***进行刷新;
在所述第二BIOS子***刷新完毕的情况下,通过所述host将所述第二BIOS子***切换为所述第一BIOS子***;
将所述标志寄存器的值修改为所述第一预设值。
可选地,所述方法还包括:
在host正常运行的情况下,读取所述第一BIOS子***的***数据;
读取所述第二BIOS子***的***数据;
对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据校验;
根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步。
可选地,所述根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步,包括:
在所述第一BIOS子***的参数进行修改的情况下,将修改的参数同步备份至所述第二BIOS子***中;
在所述第一BIOS子***进行保留配置刷新的情况下,将保留配置写入所述第一BIOS子***中;
将所述第一BIOS子***的***数据备份至所述第二BIOS子***中;
在所述第一BIOS子***进行数据回滚同步的情况下,读取所述第二BIOS子***的***数据;
将所述第二BIOS子***的***数据同步至所述第一BIOS子***中。
可选地,所述方法还包括:
在所述host运行异常的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
本申请实施例第三方面提供一种双BIOS***,其特征在于,所述***包括:
第一BIOS芯片,用于运行第一BIOS子***;
第二BIOS芯片,用于运行第二BIOS子***;
BMC芯片,用于运行BMC程序;
交换芯片,用于控制所述第一BIOS芯片与所述第二BIOS芯片连接,所述交换芯片与所述第一BIOS芯片以及所述第二BIOS芯片连接;
复杂可编程逻辑器件,用于控制所述交换芯片进行链路切换,所述复杂可编程逻辑器件与所述交换芯片连接;
BMC控制芯片,用于控制所述BMC芯片,所述BMC控制芯片与所述BMC芯片连接,所述BMC控制芯片与所述复杂可编程逻辑器件连接,所述BMC控制芯片与所述交换芯片连接;
平台控制器芯片组,所述平台控制器芯片组通过第一总线与所述交换芯片连接,所述平台控制器芯片组通过第二总线与所述BMC控制芯片连接,所述平台控制器芯片组与CPU连接,所述第一总线与所述第二总线连接。
可选地,所述双BIOS***的访问主体包括host以及所述BMC控制芯片。
可选地,所述BMC控制芯片在接收到子***切换指令的情况下,向所述复杂可编程逻辑器件发送子***切换请求指令;
所述BMC控制芯片控制所述双BIOS***执行关机操作;
所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,向所述交换芯片发送线路切换指令;
所述交换芯片在接收到所述线路切换指令的情况下,将连接的芯片由所述第一BIOS芯片切换为所述第二BIOS芯片;
所述双BIOS***使用所述第二BIOS子***进行开机启动。
可选地,所述BMC控制芯片在操作***启动故障的情况下,向所述复杂可编程逻辑器件发送子***切换请求指令;
所述BMC控制芯片控制所述双BIOS***执行关机操作;
所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,向所述交换芯片发送线路切换指令;
所述交换芯片在接收到所述线路切换指令的情况下,将连接的芯片由所述第一BIOS芯片切换为所述第二BIOS芯片;
所述双BIOS***使用所述第二BIOS子***进行开机启动。
可选地,所述BMC控制芯片在需要对所述双BIOS***进行子***刷新的情况下,向所述复杂可编程逻辑器件发送子***切换请求指令;
所述BMC控制芯片控制所述双BIOS***执行关机操作;
所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,向所述交换芯片发送第一线路切换指令;
所述交换芯片在接收到所述第一线路切换指令的情况下,将连接的芯片由所述第一BIOS芯片切换为所述第二BIOS芯片;
所述复杂可编程逻辑芯片向所述交换芯片发送第二线路切换指令;
所述交换芯片在接收到所述第二线路切换指令的情况下,将所述访问主体由所述host切换为所述BMC控制芯片;
所述BMC控制芯片对所述第二BIOS芯片上的所述第二BIOS子***进行刷新;
在所述第二BIOS芯片上的第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送子***切换请求指令;
所述可编程逻辑器件在接收到所述子***切换请求指令的情况下,向所述交换芯片发送第三线路切换指令;
所述交换芯片在接收到所述第三线路切换指令的情况下,将连接的芯片由所述第二BIOS芯片切换为所述第一BIOS芯片;
所述BMC控制芯片对所述第一BIOS芯片上的所述第一BIOS子***进行刷新;
在所述第一BIOS芯片上的所述第一BIOS子***刷新完毕的情况下,所述复杂可编程逻辑芯片向所述交换芯片发送第四线路切换指令;
所述交换芯片在接收到所述第四线路切换指令的情况下,将所述访问主体由所述BMC控制芯片切换为所述host;
所述双BIOS***使用所述第一BIOS子***进行开机启动。
本实施例第四方面提供一种***切换方法,所述方法应用于双BIOS***,包括:
在第一BIOS子***运行的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:手动切换触发、自动切换触发、刷新双BIOS触发;
根据所述切换触发条件,执行对应的子***切换流程。
可选地,所述根据所述切换触发条件,执行对应的子***切换流程,包括:
在所述切换触发条件为所述手动切换触发的情况下,通过复杂可编程逻辑器件,控制交换芯片,将所述第一BIOS子***切换为第二BIOS子***;
BMC控制芯片控制所述双BIOS***执行关机操作;
确定标志寄存器中的值;
在所述标志寄存器中的值不是第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
可选地,所述方法还包括:
在所述切换触发条件为所述自动切换触发的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送子***切换请求指令;
所述BMC控制芯片控制所述双BIOS***执行关机操作;
所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,控制所述交换芯片将所述第一BIOS子***切换为所述第二BIOS子***;
确定所述标志寄存器中的值;
在所述标志寄存器中的值不是所述第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
可选地,所述方法还包括:
在所述切换触发条件为所述刷新双BIOS触发时,设置所述标志寄存器中的值为所述第一预设值;
所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令;
所述BMC控制芯片控制所述双BIOS***进行关机操作;
所述复杂可编程逻辑器件控制所述交换芯片,将所述第一BIOS子***切换为所述第二BIOS子***;
获取所述标志寄存器中的值;
在所述标志寄存器中的值为所述第一预设值的情况下,所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由host切换为所述BMC控制芯片;
所述BMC控制芯片对所述第二BIOS子***进行刷新;
在所述第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令;
所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,控制所述交换芯片,将所述第二BIOS子***切换为所述第一BIOS子***;
所述BMC控制芯片对所述第一BIOS子***进行刷新;
在所述第一BIOS子***刷新完毕的情况下,清除所述标志寄存器中的值;
所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由所述BMC控制芯片切换为所述host;
所述双BIOS***使用所述第一BIOS子***进行开机启动。
本申请实施例第五方面提供一种***切换装置,所述装置包括:
切换判断模块,用于在第一BIOS子***运行的情况下,确定是否需要进行子***切换;
切换触发条件判断模块,用于在需要进行子***切换的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发;
子***切换模块,用于根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***;
数值获取模块,用于在所述第一BIOS子***切换为所述第二BIOS子***的情况下,获取标志寄存器的值;
子***确定模块,用于根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***;
数据访问模块,用于使用所述BIOS子***进行数据访问。
可选地,所述子***切换模块包括:
第一执行主体确认子模块,用于在所述切换触发条件为所述刷新双BIOS触发的情况下,确定刷新所述第一BIOS子***的执行主体;
第一发送子模块,用于在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第一切换请求发送至host;
第一切换子模块,用于所述host根据所述第一切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第一数据刷新子模块,用于通过所述BMC控制芯片对所述第一BIOS子***进行刷新;
第一寄存器值设置子模块,用于将所述标志寄存器的值设置为第二预设值。
可选地,所述装置还包括:
第二切换子模块,用于在所述执行主体为所述host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第二数据刷新子模块,用于通过所述host对所述第一BIOS子***进行刷新;
第二寄存器值设置子模块,用于将所述标志寄存器的值设置为第三预设值。
可选地,所述装置还包括:
第一接收子模块,用于在所述切换触发条件为所述手动切换触发的情况下,通过BMC控制芯片接收子***切换指令;
第二发送子模块,用于通过所述BMC控制芯片,将第二切换请求发送至host;
第三子***切换子模块,用于所述host根据所述第二切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第二执行主体确认子模块,用于在所述切换触发条件为所述自动切换触发的情况下,确定所述自动切换触发对应的执行主体;
第三发送子模块,用于在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第三切换请求发送至host;
第三切换子模块,用于所述host根据所述第三切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第四切换子模块,用于在所述执行主体为host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述子***确定模块包括:
第一子***确认子模块,用于在所述标志寄存器的值为第一预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第二BIOS子***;
第二子***确认子模块,用于在所述标志寄存器的值为第二预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***;
第三子***确认子模块,用于在所述标志寄存器的值为第三预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***。
可选地,所述装置还包括:
第三数据刷新子模块,用于在所述标志寄存器的值为所述第二预设值的情况下,通过BMC控制芯片对所述第二BIOS子***进行刷新;
第四发送子模块,用于在所述第二BIOS子***刷新完毕的情况下,通过所述BMC控制芯片向host发送第四切换请求;
第四切换子模块,用于所述host根据所述第四切换请求,将所述第二BIOS子***切换为所述第一BIOS子***。
可选地,所述装置还包括:
第四数据刷新子模块,用于在所述标志寄存器的值为所述第三预设值的情况下,通过host对所述第二BIOS子***进行刷新;
第五切换子模块,用于在所述第二BIOS子***刷新完毕的情况下,通过所述host将所述第二BIOS子***切换为所述第一BIOS子***;
第三寄存值设置子模块,用于将所述标志寄存器的值修改为所述第一预设值。
可选地,所述装置还包括:
第一数据读取模块,用于在所述host正常运行的情况下,读取所述第一BIOS子***的***数据;
第二数据读取模块,用于读取所述第二BIOS子***的***数据;
数据校验模块,用于对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据校验;
数据同步模块,用于根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步。
可选地,所述数据同步模块包括:
第一数据同步子模块,用于在所述第一BIOS子***的参数进行修改的情况下,将修改的参数同步备份至所述第二BIOS子***中;
数据写入子模块,用于在所述第一BIOS子***进行保留配置刷新的情况下,将保留配置写入所述第一BIOS子***中;
第二数据同步子模块,用于将所述第一BIOS子***的***数据备份至所述第二BIOS子***中;
第三数据同步子模块,用于在所述第一BIOS子***进行数据回滚同步的情况下,读取所述第二BIOS子***的***数据;
第四数据同步子模块,用于将所述第二BIOS子***的***数据同步至所述第一BIOS子***中。
可选地,所述装置还包括:
第二子***切换模块,用于在所述host运行异常的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
本申请实施例第六方面提供一种***切换装置,其特征在于,所述装置包括:
切换触发条件判断模块,用于在第一BIOS子***运行的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:手动切换触发、自动切换触发、刷新双BIOS触发;
***切换流程执行模块,用于根据所述切换触发条件,执行对应的子***切换流程。
可选地,所述***切换流程执行模块包括:
手动切换子模块,用于在所述切换触发条件为所述手动切换触发的情况下,通过复杂可编程逻辑器件,控制交换芯片,将所述第一BIOS子***切换为第二BIOS子***;
第一关机操作子模块,用于所述BMC控制芯片控制所述双BIOS***执行关机操作;
第一数据确定子模块,用于确定标志寄存器中的值;
第一开机启动子模块,用于在所述标志寄存器中的值不是第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
可选地,所述***切换流程执行模块还包括:
自动切换子模块,用于在所述切换触发条件为所述自动切换触发的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送子***切换请求指令;
第二关机操作子模块,用于所述BMC控制芯片控制所述双BIOS***执行关机操作;
自动切换执行子模块,用于所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,控制所述交换芯片将所述第一BIOS子***切换为所述第二BIOS子***;
第二数值确定子模块,用于确定所述标志寄存器中的值;
第二开机启动子模块,用于在所述标志寄存器中的值不是所述第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
可选地,所述***切换流程执行模块还包括:
数值设置子模块,用于在所述切换触发条件为所述刷新双BIOS触发时,设置所述标志寄存器中的值为所述第一预设值;
第一指令发送子模块,用于所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令;
第三关机操作子模块,用于所述BMC控制芯片控制所述双BIOS***进行关机操作;
第一刷新切换执行子模块,用于所述复杂可编程逻辑器件控制所述交换芯片,将所述第一BIOS子***切换为所述第二BIOS子***;
第三数值确定子模块,用于获取所述标志寄存器中的值;
访问主体切换子模块,用于在所述标志寄存器中的值为所述第一预设值的情况下,所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由host切换为所述BMC控制芯片;
第一子***刷新子模块,用于所述BMC控制芯片对所述第二BIOS子***进行刷新;
第二指令发送子模块,用于在所述第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令;
第二刷新切换执行子模块,用于所述复杂可编程逻辑器件在接收到所述子***切换的情况下,控制所述交换芯片,将所述第二BIOS子***切换为所述第一BIOS子***;
第二子***刷新子模块,用于所述BMC控制芯片对所述第一BIOS子***进行刷新;
数值清除子模块,用于在所述第一BIOS子***刷新完毕的情况下,清除所述标志寄存器中的值;
第二访问主体切换子模块,用于所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由所述BMC控制芯片切换为所述host;
第三开机启动子模块,用于所述双BIOS***使用所述第一BIOS子***进行开机启动。
本申请实施例第七方面提供一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所述的方法中的步骤。
本申请实施例第八方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请第一方面所述的方法的步骤。
采用本申请提供的双BIOS***,该***包括了:第一BIOS芯片,用于运行第一BIOS子***;
第二BIOS芯片,用于运行第二BIOS子***;
BMC芯片,用于运行BMC程序;BMC控制芯片,用于控制所述BMC芯片以及所述第二BIOS芯片,所述BMC控制芯片与所述BMC芯片以及所述第二BIOS芯片连接;平台控制器芯片组,用于控制所述第一BIOS芯片以及所述BMC控制芯片,所述平台控制器芯片组通过第一总线与所述第一BIOS芯片连接,所述平台控制器芯片组通过第二总线与所述BMC控制芯片连接,所述第一总线与所述第二总线连接,所述平台控制器芯片组与CPU连接。本***中平台控制器芯片组通过第一总线即SPI连接第一BIOS芯片,通过第二总线即ESPI连接第二BIOS芯片,ESPI与SPI连接,host控制SPI连接的第一BIOS芯片,BMC控制芯片控制第二BIOS芯片,host侧可以通过ESPI指令访问BMC控制芯片下的第二BIOS芯片,BMC控制芯片可以通过ESPI请求访问host侧的第一BIOS芯片,根据host和BMC访问第一BIOS芯片和第二BIOS芯片的需求,利用ESPI的flash访问通道和共享功能,让host和BMC在满足条件的情况下使能各自方向的flash访问链路,还可以进行数据同步,该***不需要依赖CPLD以及交换芯片,降低了架构的成本,提升了双BIOS***切换子***的效率。
采用本申请提供的***切换方法, 在第一BIOS子***运行的情况下,确定是否需要进行子***切换;在需要进行子***切换的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发;根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***;在所述第一BIOS子***切换为所述第二BIOS子***的情况下,获取标志寄存器的值;根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***;使用所述BIOS子***进行数据访问。本方法中,在需要对当前运行的第一BIOS子***进行切换的情况下,判断双BIOS***满足的切换触发条件,根据切换触发条件,使用对应的方式将第一BIOS子***切换为第二BIOS子***,考虑到了双BIOS***出现的多种需要进行子***切换的情况,保证了操作***在启动运行时出现故障时可以快速切换至另一个BIOS子***,保证了操作***的稳定运行。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的双BIOS***的结构示意图;
图2是本申请一实施例提出的***切换方法的流程图;
图3是本申请一实施例提出的双BIOS***切换流程示意图;
图4是本申请一实施例提出的双BIOS***数据同步流程示意图;
图5是本申请一实施例提出的双BIOS***结构示意图;
图6是本申请一实施例提出的***切换流方法的流程图;
图7是本申请一实施例提出的双BIOS***切换流程示意图;
图8是本申请一实施例提出的***切换装置的示意图;
图9是本申请一实施例提出的***切换装置的示意图;
图10是本申请一实施例提出的电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本实施例中,为了方便理解,对出现的名词进行解释:
ESPI(Enhanced Serial Peripheral Interface,增强型串行外设接口)CPU(Central Processing Unit,中央处理器)
BIOS(Basic Input Output System,基本输入输出***)
BMC(Baseboard Management Controller,基板管理控制器)
SPI(Serial Peripheral Interface,增强型串行外设接口)
PCH(Platform Controller Hub,平台控制器芯片组)
CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)
switch(交换芯片)
参考图1,图1是本申请一实施例提出的双BIOS***的结构示意图,如图1所述,该***包括:
第一BIOS芯片,用于运行第一BIOS子***。
本实施例中,BIOS芯片上运行有第一BIOS子***,BIOS***是操作***在启动时运行的一组程序,保存着计算机最重要的基本输入输出程序和***的自启动程序,其主要功能是为计算机提供最底层的,最直接的硬件设置和控制。第一BIOS芯片是双BIOS***中的一个BIOS芯片,第一BIOS子***是运行在第一BIOS芯片上的一个BIOS***。
第二BIOS芯片,用于运行第二BIOS子***。
本实施例中,第二BIOS芯片是双BIOS***中的另一个BIOS芯片,第二BIOS子***是运行在第二BIOS芯片上的另一个BIOS***。
本实施例中,第一BIOS子***和第二BIOS子***互相独立运行,第一BIOS芯片和第二BIOS芯片上存储的数据相同,并且同步实时更新。
BMC芯片,用于运行BMC程序。
本实施例中,BMC芯片用于运行BMC程序,BMC是一个独立于服务器的设备,可以对服务器信息进行管理,例如服务器的型号、制造日期等,对服务器状态进行监控管理,例如服务器的状态、服务器的硬盘状态等,对服务器进行远程控制管理,例如服务器的开机、关机、重启等,对服务器进行维护管理,例如日志管理、用户管理、BIOS管理、告警管理等。
BMC控制芯片,用于控制所述BMC芯片以及所述第二BIOS芯片,所述BMC控制芯片与所述BMC芯片以及所述第二BIOS芯片连接。
本实施例中,BMC控制芯片用于控制BMC芯片的运行,向BMC芯片下发指令,向host侧发送请求等,BMC控制芯片与BMC芯片以及第二BIOS芯片连接。
平台控制器芯片组,用于控制所述第一BIOS芯片以及所述BMC控制芯片,所述平台控制器芯片组通过第一总线与所述第一BIOS芯片连接,所述平台控制器芯片组通过第二总线与所述BMC控制芯片连接,所述第一总线与所述第二总线连接,所述平台控制器芯片组与CPU连接。
本实施例中,平台控制器芯片组(PCH)用于控制第一BIOS芯片以及BMC控制芯片,平台控制器芯片组上配置有第一总线即SPI以及第二总线即ESPI,通过SPI控制程序以及ESPI控制程序对这两个接口进行管理控制,平台控制器芯片组通过SPI与第一BIOS芯片连接,通过ESPI与BMC控制芯片连接,平台控制器芯片组的另一端还与CPU连接。在平台控制器芯片组上,ESPI与SPI连接,SPI是高速串行总线接口,而ESPI是基于SPI扩展的另一个高速串行总线接口,ESPI在运行时会调用SPI的某些功能,SPI和ESPI连接,可以互相进行数据传输访问。
本实施例中,所述双BIOS***的访问主体包括host以及所述BMC控制芯片,所述host以及所述BMC控制芯片使用所述ESPI的数据传输协议发送指令进行交互访问:
本实施例中,host(主机)由CPU-SPI-第一BIOS芯片这条链路构成,可以称作双BIOS***的主机,BMC控制芯片与host为两个独立的访问主体,host与BMC控制芯片使用ESPI的数据传输协议发送指令进行交互访问。
本实施例中,两个主体可以随时访问自己下方所连接的BIOS芯片,当host需要访问BMC下的第二BIOS芯片时,使用ESPI的数据传输协议发送ESPI指令给BMC进行交互,使能BMC的芯片访问功能,后续host便可以使用兼容于ESPI的SPI数据传输协议进行第二BIOS芯片中固件内容的读写访问,当BMC想访问host下的第一BIOS芯片时,BMC发送ESPI请求给host,host再发送ESPI指令给BMC进行交互,使能host的芯片访问功能,后续BMC便可以使用兼容于ESPI的SPI数据传输协议进行第一BIOS芯片中固件内容的读写访问。
本实施例中,提出了基于ESPI的双BIOS***,第一BIOS芯片直接连接于服务器***平台控制器芯片组的SPI上,第二BIOS芯片连接至BMC控制芯片,进而通过BMC控制芯片连接至平台控制器芯片组上的ESPI上,然后利用ESPI的数据传输协议以及兼容于SPI和ESPI的数据传输协议进行两个BIOS芯片内容的交互访问和读写,基于该物理架构建立双BIOS***及其子***的功能逻辑和实现方案,通过该方案优化改善了双BIOS***中的子***切换,降低了架构的成本,提升了子***的切换效率。
双BIOS***的访问主体包括host以及BMC控制芯片,host以及BMC控制芯片通过发送指令进行交互访问。
BMC控制芯片对第一BIOS芯片进行***刷新后,向host发送子***切换请求指令。
本实施例中,子***切换请求指令是BMC控制芯片向host发送的指令,用于请求host进行子***切换。
host在接收到子***切换请求指令的情况下,执行子***切换操作,将第一BIOS子***切换至第二BIOS子***。
在子***切换完毕的情况下,BMC控制芯片对第二BIOS芯片进行子***刷新。
在第二BIOS芯片上的第二BIOS子***刷新完毕的情况下,BMC控制芯片向host发送子***切换请求指令。
host在接收到子***切换请求指令的情况下,执行子***切换操作,将第二BIOS子***切换至第一BIOS子***。
host对第一BIOS芯片上的第一BIOS子***进行刷新后,执行子***切换操作,将第一BIOS子***切换为第二BIOS子***。
在子***切换完毕的情况下,host对第二BIOS芯片进行子***刷新。
在第二BIOS子***刷新完毕的情况下,host执行子***切换操作,将第二BIOS子***切换为第一BIOS子***。
BMC控制芯片在接收到子***切换请求指令的情况下,向host发送子***切换请求指令。
host在接收到子***切换请求指令的情况下,执行子***切换操作,将第一BIOS子***切换为第二BIOS子***。
host在需要主动进行子***切换的情况下,执行子***切换操作,将第一BIOS子***切换为第二BIOS子***。
BMC在检测到***启动故障的情况下,向host发送子***切换请求指令;
host在接收到子***切换请求指令的情况下,执行子***切换操作,将第一BIOS子***切换为第二BIOS子***。
host在正常运行的情况下,读取第一BIOS芯片中的数据。
host向BMC控制芯片发送数据读取指令。
BMC控制芯片在接收到数据读取指令的情况下,将第二BIOS芯片中的数据发送至host。
host对第一BIOS芯片中的数据与第二BIOS芯片中的数据进行数据校验。
根据数据校验结果,对第一BIOS芯片与第二BIOS芯片进行数据同步。
参考图2,图2是本申请一实施例提出的***切换方法的流程图,该方法应用于双BIOS***中。如图2所示,该方法包括以下步骤:
S11:在第一BIOS子***运行的情况下,确定是否需要进行子***切换。
本实施例中,参考图3,图3是本申请一实施例提出的双BIOS***切换流程示意图,当双BIOS***以第一BIOS子***运行时,确定双BIOS***是否需要进行子***切换,在***接收到外界的切换请求、host主动发送切换指令、BMC请求进行切换时,都属于需要进行子***切换的情况,当***正常运行且外界以及执行主体都未发送切换指令或者切换请求时,不需要进行子***切换。
S12:在需要进行子***切换的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发。
本实施例中,切换触发条件是双BIOS***中触发子***切换的条件,包括刷新双BIOS触发、自动切换触发以及手动切换触发。刷新双BIOS触发是指在BIOS的运行过程中,对其中一个BIOS子***进行刷新之后,需要同步对另一个BIOS子***进行刷新,此时需要切换至另一个BIOS子***再进行刷新,就满足了刷新双BIOS触发这个切换触发条件。自动切换指BMC或者host检测到***出现故障需要进行BIOS子***切换,由host发起切换或者由BMC向host请求进行***切换,此时就满足自动切换触发这个触发条件。手动切换触发是用户需要对BIOS子***进行切换时,手动发送子***切换指令给BMC,此时满足的切换触发条件为手动切换触发。
本实施例中,如图3所示,假设当前运行的BIOS***为第一BIOS子***,在需要对当前运行的第一BIOS子***进行切换的情况下,首先需要判断双BIOS***满足的切换触发条件。
示例地,当接收到管理人员手动发送的子***切换指令时,确定满足的切换触发条件为手动切换触发,当host检测到***出现故障主动发起子***切换时,确定满足的触发条件为自动切换触发,当host或者BMC刷新BIOS子***时,确定满足的触发条件为刷新双BIOS触发。
S13:根据所述触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***。
本实施例中,在每个触发条件下,使用的***切换方式不同,在确定了触发条件后,使用对应的切换方式将当前运行的第一BIOS子***切换为第二BIOS子***。
本实施例中,所述根据所述触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***的具体步骤包括:
S13-1:在所述切换触发条件为所述刷新双BIOS触发的情况下,确定刷新所述第一BIOS子***的执行主体。
本实施例中,如图3所示,在触发条件为刷新双BIOS触发的情况下,首先确定刷新第一BIOS子***的执行主体。
本实施例中,执行主体为host的情况下的***切换方式与执行主体为BMC控制芯片的情况下的***切换方式不同,故需要先确定刷新BIOS子***的执行主体,执行主体对第一BIOS子***进行刷新之后,再切换至第二BIOS子***,对第二BIOS子***进行刷新。
S13-2:在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第一切换请求发送至host。
本实施例中,第一切换请求为基于ESPI协议的ESPI请求指令,由BMC控制芯片发送至host中。
本实施例中,在执行主体为BMC控制芯片的情况下,在BMC控制芯片对第一BIOS子***进行刷新之后,需要对第二BIOS子***进行同步刷新,以保证第二BIOS子***中的数据与当前的第一BIOS子***相同,此时通过BMC控制芯片向host发送ESPI请求指令,申请进行BIOS子***切换。
S13-3:所述host根据所述第一切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,host在接收到第一切换请求后,响应BMC发送的请求,执行切换BIOS子***的操作,向BMC发送ESPI指令,将双BIOS***当前用于数据访问的子***由第一BIOS子***切换为第二BIOS子***。
本实施例中,在将第一BIOS子***切换为第二BIOS子***后,host和BMC都通过第二BIOS子***进行数据访问。
本实施例中,所述方法还包括:
S13-4:在所述执行主体为所述host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,在执行主体为host的情况下,直接通过host向BMC发送ESPI指令,执行切换BIOS访问的操作,在操作执行完毕后,host和BMC都通过第二BIOS子***进行数据访问。
本实施例中,所述方法还包括:
S13-5:在所述切换触发条件为所述手动切换触发的情况下,通过BMC控制芯片接收子***切换指令。
本实施例中,子***切换指令是由管理人向BMC控制芯片发出的指令,用于指示BMC控制芯片进行子***切换。
本实施例中,在触发条件为手动切换触发的情况下,通过BMC控制芯片接收子***切换指令,管理人员可以通过BMC对整个***进行控制。
S13-6:通过所述BMC控制芯片,将第二切换请求发送至host。
本实施例中,第二切换请求由BMC控制芯片发送至host,是BMC控制芯片在接收到第一切换指令后生成的对应的请求。
本实施例中,BMC控制芯片在接收到子***切换指令时,将第二切换请求发送至host。
S13-7:所述host根据所述第二切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,host在接收到第二切换请求后,响应于第二切换请求,向BMC控制芯片发出ESPI指令,执行切换BIOS芯片的操作,将host和BMC访问数据的子***由第一BIOS子***切换为第二BIOS子***。
本实施例中,所述方法还包括:
S13-8:在所述切换触发条件为所述自动切换触发的情况下,确定所述自动切换触发对应的执行主体。
本实施例中,在触发条件为自动切换触发的情况下,确定执行自动切换触发操作的执行主体。
S13-9:在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第三切换请求发送至host。
本实施例中,第三切换请求是由BMC控制芯片发送至host,是BMC控制芯片在检测到服务器发生故障时,自动发出的切换请求。
本实施例中,在执行主体为BMC控制芯片的情况下,BMC主体检测到服务器宕机等问题后会自动发起BIOS芯片的切换访问,通过BMC控制芯片将第三切换请求发送至host。
S13-10:所述host根据所述第三切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,host在接收到第三切换请求后,响应于该请求,向BMC控制芯片发送ESPI指令,执行BIOS切换操作,将***当前运行的第一BIOS子***切换为第二BIOS子***。
本实施例中,所述方法还包括:
S13-11:在所述执行主体为host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,在执行主体为host的情况下,是host主体主动想切换BIOS芯片进行数据访问,此时host直接发送ESPI指令至BMC控制芯片,执行BIOS子***切换操作,将进行数据访问的子***由第一BIOS子***切换为第二BIOS子***。
S14:获取当前的标志寄存器的值。
本实施例中,如图3所示,在双BIOS***切换子***完毕,即第一BIOS子***切换为第二BIOS子***之后,获取当前的标志寄存器的值。
S15:根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***。
本实施例中,根据标志寄存器的值,确定数据访问使用的BIOS子***,具体的步骤包括:
S15-1:在所述标志寄存器的值为第一预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第二BIOS子***。
本实施例中,第一预设值为标志寄存器的默认值。
本实施例中,在标记寄存器的值为第一预设值时,表示标志寄存器的值未被修改过,即不是因为刷新双BIOS***而触发的子***切换,因此确定进行数据访问使用的BIOS子***为第二BIOS子***,直接使用第二BIOS子***进行数据访问。
示例地,第一预设值为0。
S15-2:在所述标志寄存器的值为第二预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***。
本实施例中,在标志寄存器的值为第二预设值的情况下,表示是BMC进行第一BIOS子***的刷新时,进行的子***切换,此时确定进行数据访问使用的BIOS子***为第一BIOS子***。
S15-3:在所述标志寄存器的值为第三预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***。
本实施例中,在标志寄存器的值为第三预设值时,表示是host进行第一BIOS子***的刷新时,进行的子***切换,此时确定进行数据访问使用的BIOS子***为第一BIOS子***。
在本申请的另一个实施例中,所述方法还包括:
S15-4:在所述标志寄存器的值为所述第二预设值的情况下,通过BMC控制芯片对所述第二BIOS子***进行刷新。
本实施例中,如图3所示,在标志寄存器的值为第二预设值的情况下,通过BMC控制芯片对第二BIOS子***进行刷新。
S15-5:在所述第二BIOS子***刷新完毕的情况下,通过所述BMC控制芯片向host发送第四切换请求。
本实施例中,第四切换请求是由BMC控制芯片发送至host的请求,第四切换请求是在第二BIOS子***刷新完毕后,生成的请求。
本实施例中,第二BIOS子***刷新完毕后,BMC控制芯片向host发送第四切换请求。
S15-6:所述host根据所述第四切换请求,将所述第二BIOS子***切换为所述第一BIOS子***。
本实施例中,host在接收到第四切换请求时,向BMC控制芯片发送ESPI指令,执行BIOS子***切换操作,将第二BIOS子***切换为第一BIOS子***。
在本申请的另一个实施例中,所述方法还包括:
S15-7:在所述标志寄存器的值为所述第三预设值的情况下,通过host对所述第二BIOS子***进行刷新。
本实施例中,如图3所示,在标志寄存器的值为第三预设值的情况下,通过host对第二BIOS子***进行刷新。
S15-8:在所述第二BIOS子***刷新完毕的情况下,通过所述host将所述第二BIOS子***切换为所述第一BIOS子***。
本实施例中,在host对第二BIOS子***刷新完毕后,再由host执行切换BIOS子***的操作,将第二BIOS子***切换为第一BIOS子***。
S15-9:将所述标志寄存器的值修改为所述第一预设值。
本实施例中,在双BIOS***刷新完毕并切换为原来的BIOS子***后,将标志寄存器的值修改为第一预设值,即将标志寄存器的值恢复为默认值。
S16:使用所述BIOS子***进行数据访问。
本实施例中,在确定进行数据访问所使用的BIOS子***后,使用该子***进行数据访问。
在本申请的另一个实施例中,当执行主体为BMC控制芯片时,在通过所述BMC控制芯片将第一切换请求发送至host之前,所述方法还包括:
S21:通过所述BMC控制芯片对所述第一BIOS子***进行刷新。
本实施例中,如图3所示,在确定执行主体为BMC控制芯片的情况下,通过BMC控制芯片对第一BIOS子***中的数据进行刷新。
S22:将所述标志寄存器的值设置为第二预设值。
本实施例中,标志寄存器(FlashFlag)用于标志第一BIOS子***的刷新主体,当标志寄存器的值为第二预设值时,说明第一BIOS子***的刷新主体为BMC控制芯片。
本实施例中,在通过BMC控制芯片对第一BIOS子***进行刷新后,将所述标志寄存器的值设置为第二预设值。
示例地,第二预设值为1。
在本申请的另一个实施例中,当执行主体为host时,在通过所述host将所述第一BIOS子***切换为所述第二BIOS子***之前,所述方法还包括:
S41:通过所述host对所述第一BIOS子***进行刷新。
本实施例中,在确定执行主体为host时,通过host对第一BIOS子***中的数据进行刷新。
S42:将所述标志寄存器的值设置为第三预设值。
本实施例中,第三预设值表征对第一BIOS子***进行刷新的执行主体为host。
本实施例中,在使用host对第一BIOS子***中的数据进行刷新之后,将标志寄存器的值设置为第三预设值。
在本申请的另一个实施例中,所述方法还包括:
S51:在所述host正常运行的情况下,读取所述第一BIOS子***的***数据。
本实施例中,如图4所示,图4是本申请一实施例提出的双BIOS***数据同步流程示意图,在host正常运行的情况下,读取第一BIOS子***的***数据。
本实施例中host读取第一BIOS子***的***数据时,从连接的第一BIOS芯片中直接读取。
S52:读取所述第二BIOS子***的***数据。
本实施例中,在读取第一BIOS子***的数据之后,读取第二BIOS子***的***数据。
本实施例中,host在读取第二BIOS子***的***数据时,向BMC发送ESPI数据访问指令,以访问BMC控制芯片下连接的第二BIOS子***的***数据。
S53:对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据校验。
本实施例中,对第一BIOS子***的数据以及第二BIOS子***的***数据进行数据校验,对两个子***的***数据进行对比,确定两个子***的***数据之间的差异。
S54:根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步。
本实施例中,根据校验结果,对第一BIOS子***的***数据以及第二BIOS子***的***数据进行数据同步,具体步骤包括:
S54-1:在所述第一BIOS子***的参数进行修改的情况下,将修改的参数同步备份至所述第二BIOS子***中。
本实施例中,如图4所示,在第一BIOS子***的参数进行修改的情况下,将修改的参数写入到当前的BIOS子***所在的芯片中,同时将差异,即修改的参数同步备份至第二BIOS子***中,即写入第二BIOS子***中所在的芯片中。
S54-2:在所述第一BIOS子***进行保留配置刷新的情况下,将保留配置写入所述第一BIOS子***中。
本实施例中,保留配置刷新是在保留某些现有参数的情况下进行刷新,保留的配置不会改变。
本实施例中,在进行保留配置刷新时,将保留的配置写入当前BIOS子***,即第一BIOS子***的第一BIOS芯片中。
S54-3:将所述第一BIOS子***的***数据备份至所述第二BIOS子***中。
本实施例中,在对第一BIOS子***进行保留配置刷新之后,将第一BIOS子***刷新后的数据备份至第二BIOS子***中,即保存至第二BIOS芯片中。
S54-4:在所述第一BIOS子***进行数据回滚同步的情况下,读取所述第二BIOS子***的***数据。
本实施例中,数据回滚同步是将第一BIOS子***中的数据回滚至与第二BIOS子***中的***数据相同,当第一BIOS子***出现故障时,使用该方法删除异常数据,进行数据恢复。
本实施例中,在第一BIOS子***进行数据回滚同步的情况下,读取第二BIOS子***的***数据,从第二BIOS芯片中获取该数据。
S54-5:将所述第二BIOS子***的***数据同步至所述第一BIOS子***中。
本实施例中,在读取了第二BIOS芯片中的第二BIOS子***的***数据之后,将第二BIOS子***的***数据同步至第一BIOS子***中。
在本申请的另一个实施例中,所述方法还包括:
S61:在所述host运行异常的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,如图4所示,当host运行异常的情况下,确定需要进行双BIOS***的子***切换,此时执行子***切换流程,在切换流程完毕后再进行数据同步。
本实施例中,可以实现实时的双BIOS***数据访问和同步子***,能够实时进行双BIOS固件数据内容的同时访问和数据校验,支持运行的BIOS配置修改后同步到备份的BIOS芯片中,支持进行BIOS保留配置刷新后将配置内容同步更新至备份BIOS芯片中,支持运行BIOS异常切换到备份BIOS并成功开机后,将备份BIOS子***的数据同步更新到异常BIOS子***中,进一步提升了服务器***的可靠性。
本申请上述实施例中,完全采用SPI和ESPI的标准协议规范,以此为基础,利用ESPI的芯片访问通道和共享功能,让host和BMC控制芯片在条件满足的情况下使能各自方向的芯片访问链路,还可以自由进行BIOS子***切换以及数据同步,大大降低了架构的成本以及提高了子***切换和数据同步的效率。基于新的物理架构,优化实现了双BIOS***的子***的切换,实现服务器启动异常和正常情况下可手动切换BIOS子***,在操作***启动宕机或其他异常时能够进行自动切换BIOS子***,支持通过BMC等带外***或者工具刷新BIOS时切换BIOS子***进行刷新,新增实现操作***下刷新BIOS时切换BIOS芯片进行刷新的功能,并且所有相应的切换控制和动作都是由host和BMC两个主体利用ESPI和SPI的指令交互完成的,不涉及第三方的芯片控制设备。同时可以根据需求实时进行数据同步和更新,支持在各种情况下的两个BIOS芯片中的数据更新。
参考图5,图5是本申请一实施例提出的双BIOS***结构示意图,该***包括:
第一BIOS芯片,用于运行第一BIOS子***。
第二BIOS芯片,用于运行第二BIOS子***。
BMC芯片,用于运行BMC程序。
交换芯片,用于控制第一BIOS芯片与的第二BIOS芯片的连接,交换芯片与第一BIOS芯片以及第二BIOS芯片连接;复杂可编程逻辑器件,用于控制交换芯片进行链路切换,复杂可编程逻辑器件与交换连接。
本实施例中,交换芯片(switch)可以控制双BIOS***的执行主体与第一BIOS芯片或者与第二BIOS芯片连接,连接的链路可以根据实际情况进行自由切换。
BMC控制芯片,用于控制BMC芯片,BMC控制芯片与BMC芯片连接,BMC控制芯片与复杂可编程逻辑器件连接,BMC控制芯片与交换芯片连接;平台控制器芯片组,平台控制器芯片组通过第一总线与交换芯片连接,平台控制器芯片组通过第二总线与BMC控制芯片连接,平台控制器芯片组与CPU连接,第一总线与第二总线连接。
本实施例中,第一总线为SPI,第二总线为ESPI。
本实施例中,双BIOS***的访问主体包括host以及BMC控制芯片。
本实施例中,BMC控制芯片在接收到子***切换指令的情况下,向复杂可编程逻辑器件发送子***切换请求指令。
本实施例中,子***切换指令是操作人员对BMC控制芯片下达的指令,用于对当前运行的BIOS子***进行切换。子***切换请求指令是BMC控制芯片发送的指令,用于请求对当前运行的BIOS子***进行切换。
本实施例中,BMC控制芯片控制双BIOS***执行关机操作。
本实施例中,复杂可编程逻辑器件在接收到子***切换请求指令的情况下,向交换芯片发送线路切换指令。
本实施例中,线路切换指令是复杂可编程逻辑器件在接收到子***切换请求指令的情况下,生成的指令,用于控制交换芯片对当前连接的BIOS芯片进行切换。
本实施例中,交换芯片在接收到线路切换指令的情况下,将连接的芯片由第一BIOS芯片切换为第二BIOS芯片。
本实施例中,双BIOS***使用第二BIOS子***进行开机启动。
本实施例中,BMC控制芯片在操作***启动故障的情况下,向复杂可编程逻辑器件发送子***切换请求指令。
本实施例中,BMC控制芯片控制双BIOS***执行关机操作。
本实施例中,复杂可编程逻辑器件在接收到子***切换请求指令的情况下,向交换芯片发送线路切换指令。
本实施例中,交换芯片在接收到线路切换指令的情况下,将连接的芯片由第一BIOS芯片切换为第二BIOS芯片。
本实施例中,双BIOS***使用第二BIOS子***进行开机启动。
本实施例中,BMC控制芯片在需要对双BIOS***进行子***刷新的情况下,向复杂可编程逻辑器件发送子***切换请求指令。
本实施例中,BMC控制芯片控制双BIOS***执行关机操作。
本实施例中,复杂可编程逻辑器件在接收到子***切换请求指令的情况下,向交换芯片发送第一线路切换指令。
本实施例中,交换芯片在接收到第一线路切换指令的情况下,将连接的芯片由第一BIOS芯片切换为第二BIOS芯片。
本实施例中,复杂可编程逻辑芯片向交换芯片发送第二线路切换指令。
本实施例中,交换芯片在接收到第二线路切换指令的情况下,将访问主体由host切换为BMC控制芯片。
本实施例中,BMC控制芯片对第二BIOS芯片进行子***刷新。
本实施例中,在第一BIOS芯片的子***刷新完毕的情况下,BMC向复杂可编程逻辑器件发送子***切换请求指令。
本实施例中,可编程逻辑器件在接收到子***切换请求指令的情况下,向交换芯片发送第三线路切换指令。
本实施例中,交换芯片在接收到第三线路切换指令的情况下,将连接的芯片由第二BIOS芯片切换为第一BIOS芯片。
本实施例中,BMC控制芯片对第一BIOS芯片进行子***刷新。
本实施例中,在第二BIOS芯片的子***刷新完毕的情况下,复杂可编程逻辑芯片向交换芯片发送第四线路切换指令。
本实施例中,交换芯片在接收到第四线路切换指令的情况下,将访问主体由BMC控制芯片切换为host。
本实施例中,双BIOS***使用第一BIOS子***进行开机启动。
本实施例中,如图5所示,通过交换芯片连接第一BIOS芯片与第二BIOS芯片以及SPI,并且由CPLD负责控制交换芯片,这种结构,由CPLD控制联通任意一个BIOS芯片进行通信访问数据,只有平台控制器芯片组或BMC控制芯片中的任意一个控制器具有对选通的BIOS芯片具有访问权限。
参考图6,图6是本申请一实施例提出的***切换流方法的流程图,如图6所示,该方法包括以下步骤:
S111:在所述第一BIOS子***运行的情况下,判断双BIOS***满足的切换触发条件,所述切换触发条件包括:手动切换触发、自动切换触发、刷新双BIOS触发。
本实施例中,在第一BIOS子***运行的情况下,判断双BIOS***满足的切换触发条件,切换触发条件包括:手动切换触发、自动切换触发、刷新双BIOS触发。
S112:根据所述切换触发条件,执行对应的子***切换流程。
本实施例中,在需要进行子***切换时,根据切换触发条件,执行对应的子***切换流程。
本实施例中,所述根据所述切换触发条件,执行对应的子***切换流程,包括:
S112-1:在所述切换触发条件为所述手动切换触发的情况下,通过复杂可编程逻辑器件,控制交换芯片,将所述第一BIOS子***切换为第二BIOS子***。
本实施例中,在切换触发条件为手动切换触发的情况下,通过复杂可编程逻辑器件,控制交换芯片,将第一BIOS子***切换为第二BIOS子***。
S112-2:所述BMC控制芯片控制所述双BIOS***执行关机操作。
本实施例中,BMC控制芯片控制双BIOS***执行关机操作。
S112-3:确定标志寄存器中的值。
本实施例中,在BMC控制双BIOS***执行关机操作,再进行开机启动时,确定当前的标志寄存器中的值。
S112-4:在所述标志寄存器中的值不是第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
本实施例中,在标志寄存器中的值不是第一预设值的情况下,使用第二BIOS子***进行开机启动。
本实施例中,所述方法还包括:
S112-5:在所述切换触发条件为所述自动切换触发的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送子***切换请求指令。
本实施例中,在切换触发条件为自动切换的情况下,BMC控制芯片向复杂可编程逻辑器件发送子***切换请求指令。
S112-6:所述BMC控制芯片控制所述双BIOS***执行关机操作。
本实施例中,BMC控制芯片控制双BIOS***执行关机操作。
S112-7:所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,控制所述交换芯片将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,复杂可编程逻辑器件在接收到子***切换请求指令的情况下,控制交换芯片将第一BIOS子***切换为第二BIOS子***。
S112-8:确定所述标志寄存器中的值。
本实施例中,确定当前的标志寄存器中的值。
S112-9:在所述标志寄存器中的值不是第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
本实施例中,在标志寄存器中的值不是第一预设值的情况下,使用第二BIOS子***进行开机启动。
本实施例中,所述方法还包括:
S112-10:在所述切换触发条件为所述刷新双BIOS触发时,设置所述标志寄存器中的值为所述第一预设值。
本实施例中,在切换触发条件为刷新双BIOS触发时,设置当前的标志寄存器中的值为第一预设值。
S112-11:所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令。
本实施例中,BMC控制芯片向复杂可编程逻辑器件发送子***切换请求指令。
S112-12:所述BMC控制芯片控制所述双BIOS***进行关机操作。
本实施例中,BMC控制芯片控制双BIOS***进行关机操作。
S112-13:所述复杂可编程逻辑器件控制所述交换芯片,将所述第一BIOS子***切换为所述第二BIOS子***。
本实施例中,复杂可编程逻辑器件控制交换芯片,将第一BIOS子***切换为第二BIOS子***。
S112-14:获取所述标志寄存器中的值。
本实施例中,获取标志寄存器中的值。
S112-15:在所述标志寄存器中的值为所述第一预设值的情况下,所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由host切换为所述BMC控制芯片。
本实施例中,在标志寄存器中的值为第一预设值的情况下,复杂可编程逻辑器件控制交换芯片,将当前的访问主体由host切换为BMC控制芯片。
S112-16:所述BMC控制芯片对所述第二BIOS子***进行刷新。
本实施例中,BMC控制芯片对第二BIOS子***进行子***刷新。
S112-17:在所述第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令。
本实施例中,在第二BIOS子***刷新完毕的情况下,BMC控制芯片向复杂可编程逻辑器件发送子***切换请求指令。
S112-18:所述复杂可编程逻辑器件在接收到所述子***切换的情况下,控制所述交换芯片,将所述第二BIOS子***切换为所述第一BIOS子***。
本实施例中,复杂可编程逻辑器件在接收到子***切换的情况下,控制交换芯片,将第二BIOS子***切换为第一BIOS子***。
S112-19:所述BMC控制芯片对所述第一BIOS子***进行刷新。
本实施例中,BMC控制芯片对第一BIOS子***进行子***刷新。
S112-20:在所述第一BIOS子***刷新完毕的情况下,清除所述标志寄存器中的值。
本实施例中,在第一BIOS子***刷新完毕的情况下,清除标志寄存器中的值。
S112-21:所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由所述BMC控制芯片切换为所述host。
本实施例中,复杂可编程逻辑器件控制交换芯片,将当前访问主体由BMC控制芯片切换为host。
S112-22:所述双BIOS***使用所述第一BIOS子***进行开机启动。
本实施例中,双BIOS***使用第一BIOS子***进行开机启动。
本实施例中,对BIOS进行子***切换时的流程如图7所示,图7是本申请一实施例提出的双BIOS***切换流程示意图。切换步骤如下所示:
S000:切换子***开始;
S001:假设默认使用第一BIOS芯片启动***(如果是第二BIOS芯片的话,将后续步骤中的第二BIOS芯片替换为第一BIOS芯片即可);
S002:判断BIOS子***切换为第二BIOS子***的触发条件,如果是手动切换触发,执行S003;如果是带外刷新双BIOS触发,执行S004;如果是自动切换触发,执行S005;
S003:手动使用工具发送切换为第二BIOS芯片的指令,即子***切换指令,然后执行S006;
S004:BIOS将代表为刷新双BIOS的标记寄存器值(FlashFlag)设置为1,后续步骤会根据该标志寄存器值进行对应的动作;
S005:BMC控制芯片自动发送切换为第二BIOS子***的指令给CPLD,通知CPLD做好切换第二BIOS子***的准备;
S006:BMC控制芯片执行关机指令,让***进行关机;
S007:CPLD控制SPI 交换芯片的通路,将交换芯片切换为第二BIOS芯片连接;
S008:判断标志寄存器值是否为1,如果是,执行步骤S009;否则,执行步骤S015;
S009:CPLD控制SPI 交换芯片的通路,将交换芯片的SPI访问切换为BMC***;
S010:BMC开始访问第二BIOS子***并进行BIOS版本刷新;
S011:BMC控制芯片自动发送切换为第一BIOS子***的指令给CPLD,通知CPLD做好切换第一BIOS子***的准备;
S012:CPLD控制SPI 交换芯片的通路,将交换芯片切换为第一BIOS芯片连接;
S013:BMC开始访问第一BIOS子***并进行BIOS版本刷新,清除标志寄存器的值为0;
S014:CPLD控制SPI 交换的通路,将交换的SPI访问切换为host;
S015:双BIOS***使用第一BIOS子***开机启动,然后执行步骤S017;
S016:双BIOS***使用第二BIOS子***开机启动;
S017:切换子***结束。
本实施例中,在第一BIOS子***运行的情况下,判断双BIOS***满足的切换触发条件,在需要进行子***切换时,根据切换触发条件,执行对应的子***切换流程。保证在服务器的操作***启动时,BIOS***可以正常运行,进而保证了操作***的稳定启动运行。
基于同一发明构思,本申请一实施例提供一种***切换装置。参考图8,图8是本申请一实施例提出的***切换装置800的示意图。如图8所示,该装置包括:
切换判断模块801,用于在第一BIOS子***运行的情况下,确定是否需要进行子***切换;
切换触发条件判断模块802,用于在需要进行子***切换的情况下,判断双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发;
子***切换模块803,用于根据所述触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***;
数值获取模块804,用于在子***切换完毕的情况下,获取标志寄存器的值;
子***确定模块805,用于根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***;
数据访问模块806,用于使用所述BIOS子***进行数据访问。
可选地,所述子***切换模块包括:
第一执行主体确认子模块,用于在所述切换触发条件为所述刷新双BIOS触发的情况下,确定刷新所述第一BIOS子***的执行主体;
第一发送子模块,用于在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第一切换请求发送至host;
第一切换子模块,用于所述host根据所述第一切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第一数据刷新子模块,用于通过所述BMC控制芯片对所述第一BIOS子***进行刷新;
第一寄存器值设置子模块,用于将所述标志寄存器的值设置为第二预设值。
可选地,所述装置还包括:
第二切换子模块,用于在所述执行主体为所述host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第二数据刷新子模块,用于通过所述host对所述第一BIOS子***进行刷新;
第二寄存器值设置子模块,用于将所述标志寄存器的值设置为第三预设值。
可选地,所述装置还包括:
第一接收子模块,用于在所述切换触发条件为所述手动切换触发的情况下,通过BMC控制芯片接收子***切换指令;
第二发送子模块,用于通过所述BMC控制芯片,将第二切换请求发送至host;
第三子***切换子模块,用于所述host根据所述第二切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第二执行主体确认子模块,用于在所述切换触发条件为所述自动切换触发的情况下,确定所述自动切换触发对应的执行主体;
第三发送子模块,用于在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第三切换请求发送至host;
第三切换子模块,用于所述host根据所述第三切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述装置还包括:
第四切换子模块,用于在所述执行主体为host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
可选地,所述子***确定模块包括:
第一子***确认子模块,用于在所述标志寄存器的值为第一预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第二BIOS子***;
第二子***确认子模块,用于在所述标志寄存器的值为第二预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***;
第三子***确认子模块,用于在所述标志寄存器的值为第三预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***。
可选地,所述装置还包括:
第三数据刷新子模块,用于在所述标志寄存器的值为所述第二预设值的情况下,通过BMC控制芯片对所述第二BIOS子***进行刷新;
第四发送子模块,用于在所述第二BIOS子***刷新完毕的情况下,通过所述BMC控制芯片向host发送第四切换请求;
第四切换子模块,用于所述host根据所述第四切换请求,将所述第二BIOS子***切换为所述第一BIOS子***。
可选地,所述装置还包括:
第四数据刷新子模块,用于在所述标志寄存器的值为所述第三预设值的情况下,通过host对所述第二BIOS子***进行刷新;
第五切换子模块,用于在所述第二BIOS子***刷新完毕的情况下,通过所述host将所述第二BIOS子***切换为所述第一BIOS子***;
第三寄存值设置子模块,用于将所述标志寄存器的值修改为所述第一预设值。
可选地,所述装置还包括:
第一数据读取模块,用于在所述host正常运行的情况下,读取所述第一BIOS子***的***数据;
第二数据读取模块,用于读取所述第二BIOS子***的***数据;
数据校验模块,用于对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据校验;
数据同步模块,用于根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步。
可选地,所述数据同步模块包括:
第一数据同步子模块,用于在所述第一BIOS子***的参数进行修改的情况下,将修改的参数同步备份至所述第二BIOS子***中;
数据写入子模块,用于在所述第一BIOS子***进行保留配置刷新的情况下,将保留配置写入所述第一BIOS子***中;
第二数据同步子模块,用于将所述第一BIOS子***的***数据备份至所述第二BIOS子***中;
第三数据同步子模块,用于在所述第一BIOS子***进行数据回滚同步的情况下,读取所述第二BIOS子***的***数据;
第四数据同步子模块,用于将所述第二BIOS子***的***数据同步至所述第一BIOS子***中。
可选地,所述装置还包括:
第二子***切换模块,用于在所述host运行异常的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
基于同一发明构思,本申请一实施例提供一种***切换装置。参考图9,图9是本申请一实施例提出的***切换装置900的示意图。如图9所示,该装置包括:
切换触发条件判断模块901,用于在所述第一BIOS子***运行的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:手动切换触发、自动切换触发、刷新双BIOS触发;
***切换流程执行模块902,用于根据所述切换触发条件,执行对应的子***切换流程。
可选地,所述***切换流程执行模块包括:
手动切换子模块,用于在所述切换触发条件为所述手动切换触发的情况下,通过复杂可编程逻辑器件,控制交换芯片,将所述第一BIOS子***切换为第二BIOS子***;
第一关机操作子模块,用于所述BMC控制芯片控制所述双BIOS***执行关机操作;
第一数据确定子模块,用于确定当前的标志寄存器中的值;
第一开机启动子模块,用于在所述标志寄存器中的值不是第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
可选地,所述***切换流程执行模块还包括:
自动切换子模块,用于在所述切换触发条件为所述自动切换触发的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送子***切换请求指令;
第二关机操作子模块,用于所述BMC控制芯片控制所述双BIOS***执行关机操作;
自动切换执行子模块,用于所述复杂可编程逻辑器件在接收到所述子***切换请求指令的情况下,控制所述交换芯片将所述第一BIOS子***切换为所述第二BIOS子***;
第二数值确定子模块,用于确定当前的标志寄存器中的值;
在所述标志寄存器中的值不是所述第一预设值的情况下,使用所述第二BIOS子***进行开机启动。
可选地,所述***切换流程执行模块还包括:
数值设置子模块,用于在所述切换触发条件为所述刷新双BIOS触发时,设置所述标志寄存器中的值为所述第一预设值;
第一指令发送子模块,用于所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令;
第三关机操作子模块,用于所述BMC控制芯片控制所述双BIOS***进行关机操作;
第一刷新切换执行子模块,用于所述复杂可编程逻辑器件控制所述交换芯片,将所述第一BIOS子***切换为所述第二BIOS子***;
第三数值确定子模块,用于获取所述标志寄存器中的值;
访问主体切换子模块,用于在所述标志寄存器中的值为所述第一预设值的情况下,所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由host切换为所述BMC控制芯片;
第一子***刷新子模块,用于所述BMC控制芯片对所述第二BIOS子***进行刷新;
第二指令发送子模块,用于在所述第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述复杂可编程逻辑器件发送所述子***切换请求指令;
第二刷新切换执行子模块,用于所述复杂可编程逻辑器件在接收到所述子***切换的情况下,控制所述交换芯片,将所述第二BIOS子***切换为所述第一BIOS子***;
第二子***刷新子模块,用于所述BMC控制芯片对所述第一BIOS子***进行刷新;
数值清除子模块,用于在所述第一BIOS子***刷新完毕的情况下,清除所述标志寄存器中的值;
第二访问主体切换子模块,用于所述复杂可编程逻辑器件控制所述交换芯片,将所述双BIOS***的访问主体由所述BMC控制芯片切换为所述host;
第三开机启动子模块,用于所述双BIOS***使用所述第一BIOS子***进行开机启动。
基于同一发明构思,本申请另一实施例提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的***切换方法中的步骤。
基于同一发明构思,本申请另一实施例提供一种电子设备,如图10所示,图10是本申请一实施例提出的电子设备1000的示意图,包括存储器1002、处理器1001及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的***切换方法中的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的***切换方法、装置、设备及存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (25)

1.一种双BIOS***,其特征在于,所述***包括:
第一BIOS芯片,用于运行第一BIOS子***;
第二BIOS芯片,用于运行第二BIOS子***;
BMC芯片,用于运行BMC程序;
BMC控制芯片,用于控制所述BMC芯片以及所述第二BIOS芯片,所述BMC控制芯片与所述BMC芯片以及所述第二BIOS芯片连接;
平台控制器芯片组,用于控制所述第一BIOS芯片以及所述BMC控制芯片,所述平台控制器芯片组通过第一总线与所述第一BIOS芯片连接,所述平台控制器芯片组通过第二总线与所述BMC控制芯片连接,所述第一总线与所述第二总线连接,所述平台控制器芯片组与CPU连接。
2.根据权利要求1所述的双BIOS***,其特征在于,所述双BIOS***的访问主体包括host以及所述BMC控制芯片,所述host以及所述BMC控制芯片通过发送指令进行交互访问。
3.根据权利要求2所述的双BIOS***,其特征在于,所述BMC控制芯片对所述第一BIOS芯片进行子***刷新后,向所述host发送子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第一BIOS子***切换至所述第二BIOS子***;
在所述第一BIOS子***切换至所述第二BIOS子***的情况下,所述BMC控制芯片对所述第二BIOS芯片上的所述第二BIOS子***进行刷新;
在所述第二BIOS芯片上的所述第二BIOS子***刷新完毕的情况下,所述BMC控制芯片向所述host发送所述子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第二BIOS子***切换至所述第一BIOS子***。
4.根据权利要求2所述的双BIOS***,其特征在于,所述host对所述第一BIOS芯片上的所述第一BIOS子***进行子***刷新后,将所述第一BIOS子***切换为所述第二BIOS子***;
在所述第一BIOS子***切换为所述第二BIOS子***的情况下,所述host对所述第二BIOS芯片上的所述第二BIOS子***进行刷新;
在所述第二BIOS芯片上的所述第二BIOS子***刷新完毕的情况下,所述host 将所述第二BIOS子***切换为所述第一BIOS子***。
5.根据权利要求2所述的双BIOS***,其特征在于,所述BMC控制芯片在接收到子***切换指令的情况下,向所述host发送子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
6.根据权利要求2所述的双BIOS***,其特征在于,所述host在主动进行子***切换的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
7.根据权利要求2所述的双BIOS***,其特征在于,所述BMC控制芯片在检测到操作***启动故障的情况下,向所述host发送子***切换请求指令;
所述host在接收到所述子***切换请求指令的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
8.根据权利要求2所述的双BIOS***,其特征在于,所述host在正常运行的情况下,读取所述第一BIOS芯片中的数据;
所述host向所述BMC控制芯片发送数据读取指令;
所述BMC控制芯片在接收到所述数据读取指令的情况下,将所述第二BIOS芯片中的数据发送至所述host;
所述host对所述第一BIOS芯片中的数据与所述第二BIOS芯片中的数据进行数据校验;
所述host根据数据校验结果,对所述第一BIOS芯片与所述第二BIOS芯片进行数据同步。
9.一种***切换方法,其特征在于,所述方法应用于权利要求1至8任一所述的双BIOS***,包括:
在第一BIOS子***运行的情况下,确定是否需要进行子***切换;
在需要进行子***切换的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发;
根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***;
在所述第一BIOS子***切换为所述第二BIOS子***的情况下,获取标志寄存器的值;
根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***;
使用所述BIOS子***进行数据访问。
10.根据权利要求9所述的方法,其特征在于,所述根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***,包括:
在所述切换触发条件为所述刷新双BIOS触发的情况下,确定刷新所述第一BIOS子***的执行主体;
在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第一切换请求发送至host;
所述host根据所述第一切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
11.根据权利要求10所述的方法,其特征在于,在通过所述BMC控制芯片将第一切换请求发送至host之前,所述方法还包括:
通过所述BMC控制芯片对所述第一BIOS子***进行刷新;
将所述标志寄存器的值设置为第二预设值。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在所述执行主体为所述host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
13.根据权利要求12所述的方法,其特征在于,在通过所述host将所述第一BIOS子***切换为所述第二BIOS子***之前,所述方法还包括:
通过所述host对所述第一BIOS子***进行刷新;
将所述标志寄存器的值设置为第三预设值。
14.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述切换触发条件为所述手动切换触发的情况下,通过BMC控制芯片接收子***切换指令;
通过所述BMC控制芯片,将第二切换请求发送至host;
所述host根据所述第二切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
15.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在所述切换触发条件为所述自动切换触发的情况下,确定所述自动切换触发对应的执行主体;
在所述执行主体为BMC控制芯片的情况下,通过所述BMC控制芯片将第三切换请求发送至host;
所述host根据所述第三切换请求,将所述第一BIOS子***切换为所述第二BIOS子***。
16.根据权利要求15所述的方法,其特征在于,所述方法还包括:
在所述执行主体为host的情况下,通过所述host将所述第一BIOS子***切换为所述第二BIOS子***。
17.根据权利要求9所述的方法,其特征在于,所述根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***,包括:
在所述标志寄存器的值为第一预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第二BIOS子***;
在所述标志寄存器的值为第二预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***;
在所述标志寄存器的值为第三预设值的情况下,确定所述进行数据访问使用的BIOS子***为所述第一BIOS子***。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
在所述标志寄存器的值为所述第二预设值的情况下,通过BMC控制芯片对所述第二BIOS子***进行刷新;
在所述第二BIOS子***刷新完毕的情况下,通过所述BMC控制芯片向host发送第四切换请求;
所述host根据所述第四切换请求,将所述第二BIOS子***切换为所述第一BIOS子***。
19.根据权利要求17所述的方法,其特征在于,所述方法还包括:
在所述标志寄存器的值为所述第三预设值的情况下,通过host对所述第二BIOS子***进行刷新;
在所述第二BIOS子***刷新完毕的情况下,通过所述host将所述第二BIOS子***切换为所述第一BIOS子***;
将所述标志寄存器的值修改为所述第一预设值。
20.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在host正常运行的情况下,读取所述第一BIOS子***的***数据;
读取所述第二BIOS子***的***数据;
对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据校验;
根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步。
21.根据权利要求20所述的方法,其特征在于,所述根据数据校验结果,对所述第一BIOS子***的***数据以及所述第二BIOS子***的***数据进行数据同步,包括:
在所述第一BIOS子***的参数进行修改的情况下,将修改的参数同步备份至所述第二BIOS子***中;
在所述第一BIOS子***进行保留配置刷新的情况下,将保留配置写入所述第一BIOS子***中;
将所述第一BIOS子***的***数据备份至所述第二BIOS子***中;
在所述第一BIOS子***进行数据回滚同步的情况下,读取所述第二BIOS子***的***数据;
将所述第二BIOS子***的***数据同步至所述第一BIOS子***中。
22.根据权利要求21所述的方法,其特征在于,所述方法还包括:
在所述host运行异常的情况下,将所述第一BIOS子***切换为所述第二BIOS子***。
23.一种***切换装置,其特征在于,所述装置应用于权利要求1至8任一所述的双BIOS***,包括:
切换判断模块,用于在第一BIOS子***运行的情况下,确定是否需要进行子***切换;
切换触发条件判断模块,用于在需要进行子***切换的情况下,判断所述双BIOS***满足的切换触发条件,所述切换触发条件包括:刷新双BIOS触发、自动切换触发以及手动切换触发;
子***切换模块,用于根据所述切换触发条件,使用对应的切换方式将当前运行的所述第一BIOS子***切换为第二BIOS子***;
数值获取模块,用于在所述第一BIOS子***切换为所述第二BIOS子***的情况下,获取标志寄存器的值;
子***确定模块,用于根据所述标志寄存器的值,确定进行数据访问使用的BIOS子***;
数据访问模块,用于使用所述BIOS子***进行数据访问。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求9至22任一所述的方法中的步骤。
25.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求9至22任一所述的方法的步骤。
CN202311824634.4A 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质 Active CN117472457B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202410399736.4A CN118227214A (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质
CN202311824634.4A CN117472457B (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311824634.4A CN117472457B (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410399736.4A Division CN118227214A (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117472457A CN117472457A (zh) 2024-01-30
CN117472457B true CN117472457B (zh) 2024-04-23

Family

ID=89624194

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202410399736.4A Pending CN118227214A (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质
CN202311824634.4A Active CN117472457B (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202410399736.4A Pending CN118227214A (zh) 2023-12-27 2023-12-27 一种双bios***、***切换方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (2) CN118227214A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499044A (zh) * 2008-02-03 2009-08-05 英业达股份有限公司 具有双基本输入输出***的电脑***及其操作方法
CN108228394A (zh) * 2018-01-02 2018-06-29 郑州云海信息技术有限公司 一种服务器双BIOS Flash控制***及方法
CN111857840A (zh) * 2020-06-10 2020-10-30 新华三技术有限公司 基本输入输出***bios启动方法及装置
CN112084064A (zh) * 2020-08-05 2020-12-15 锐捷网络股份有限公司 主从bios切换方法、板卡及设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101499044A (zh) * 2008-02-03 2009-08-05 英业达股份有限公司 具有双基本输入输出***的电脑***及其操作方法
CN108228394A (zh) * 2018-01-02 2018-06-29 郑州云海信息技术有限公司 一种服务器双BIOS Flash控制***及方法
CN111857840A (zh) * 2020-06-10 2020-10-30 新华三技术有限公司 基本输入输出***bios启动方法及装置
CN112084064A (zh) * 2020-08-05 2020-12-15 锐捷网络股份有限公司 主从bios切换方法、板卡及设备

Also Published As

Publication number Publication date
CN117472457A (zh) 2024-01-30
CN118227214A (zh) 2024-06-21

Similar Documents

Publication Publication Date Title
US9015458B2 (en) Computer system and method for updating basic input/output system by switching between local mode and bypass mode through baseboard management controller
WO2017067448A1 (zh) 一种无线固件升级方法、***及计算机存储介质
TWI633487B (zh) 自動回復基本輸入輸出系統映像檔的方法及電腦系統
CN109542744B (zh) 检测终端开机异常问题的方法、装置、存储介质及终端
US11314665B2 (en) Information processing system, information processing device, BIOS updating method for information processing device, and BIOS updating program for information processing device
CN112380062A (zh) 一种基于***备份点多次快速恢复***的方法及***
CN111552489A (zh) 用户态文件***热升级方法、装置、服务器及介质
WO2019062576A1 (zh) 一种***升级异常断电的保护方法及终端设备
CN112433769A (zh) 一种bmc启动方法、装置、计算机设备及存储介质
WO2012149774A1 (zh) 一种处理器启动方法及装置
CN117472457B (zh) 一种双bios***、***切换方法、装置、设备及存储介质
CN113867807A (zh) 一种缩短服务器上电时间的方法、装置、设备和存储介质
WO2024113995A1 (zh) 一种bmc异构升级方法、***、设备及可读存储介质
JP5387767B2 (ja) 実行中のプログラムの更新技術
JPH117382A (ja) ファームウェアのバージョンアップ方法
CN115951949A (zh) 一种bios的配置参数的恢复方法、装置及计算设备
CN110740382B (zh) 避免电视机非期望自动重启方法、装置、电视机及介质
JP2006106914A (ja) ファームウェアで動作する処理装置およびファームウェア更新方法
JP3231561B2 (ja) バックアップメモリ制御方式
CN110086668B (zh) 一种配置文件切换方法及***
TW202223655A (zh) 可自我監視及恢復作業系統運作的電腦系統及方法
CN117389637B (zh) 一种主机状态确认方法、装置、设备及存储介质
CN103744702A (zh) 一种交换、路由设备的双***启动方法
CN111158783A (zh) 一种环境变量修改方法、装置、设备及可读存储介质
CN114218010B (zh) 一种数据备份与恢复方法、***、终端设备及存储介质

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