背景技术
SMBIOS (System Management BIOS, 系统管理基本输入输出系统)是主板或者系统制造厂商以标准格式显示产品信息所遵循的统一规范。每个主板厂商或者OEM(OriginalEquipment Manufacturer,定点生产)厂商所生产的电脑,在出厂的时候都会按照SMBIOS标准将信息写入到BIOS中。这些信息包括BIOS信息、系统信息、处理器信息、设备信息等。
SMBIOS的信息通常是固定内容,要对SMBIOS进行更新通常分为几种方式:
方式1、通过直接修改BIOS代码来修改SMBIOS信息的方式:这种方式导致每次第一SMBIOS更新为第二SMBIOS时,需要重新刷写BIOS固件镜像,更新效率低下。
方式2、通过shell/DOS/OS下使用的工具来第一SMBIOS更新为第二SMBIOS:这种方式中计算机制造商一般不会提供这样的工具,这种工具一般为制造商内部使用,并且若计算机数量庞大时,逐台进行人工更新效率低下。
方式3、国外生产的计算机平台的SMBIOS更新的方式,通常是通过操作系统自带的工具(例如TOOL UI)加载Capsule并进行更新,BIOS将更新过的Capsule中的SMBIOS信息提取出来,用于更新自身的SMBIOS。国外的SMBIOS更新功能通常只对硬件的生产商提供。
并且,国产平台目前没有像国外量产的计算机平台那种标准化的工具(方式2、方式3),用方式1更新效率又比较低。
因此,现有技术更新SMBIOS需要更新BIOS或者用包含SMBIOS信息和其他信息的Capsule进行更新,如何提高更新国产平台的SMBIOS的效率成了本领域的课题。
发明内容
本发明提供了更新国产平台SMBIOS的方法和BIOS装置,利用只包含SMBIOS信息的文本文件更新SMBIOS,克服了上述现有技术之不足。
本发明提供了一种更新国产平台SMBIOS的方法,应用于BIOS,包括以下步骤:
第一步,提取存储设备中的文本格式的更新文件;
第二步,从更新文件中提取更新信息,并根据更新信息将第一SMBIOS更新为第二SMBIOS。
上述方法,第一步,还包括以下步骤:
提取第一SMBIOS中的第一信息;
则从更新文件中提取更新信息,并根据更新信息将第一SMBIOS更新为第二SMBIOS,包括以下步骤:
从更新文件中提取第二信息,根据第一信息和第二信息将第一SMBIOS更新为第二SMBIOS。
上述方法,还包括以下步骤:
判定第二步是否完成。
上述方法,判定第二步是否完成,包括以下步骤:
利用校验算法计算更新信息的第一校验值;
读取第二SMBIOS,利用校验算法计算第二SMBIOS的第二校验值;
若第一校验值等于第二校验值,则判定所述第二步完成。
本发明提供了一种更新国产平台SMBIOS的BIOS装置,包括以下模块:
提取模块,用于提取存储设备中的文本格式的更新文件;
更新模块,用于从更新文件中提取更新信息,并根据更新信息将第一SMBIOS更新为第二SMBIOS。
上述BIOS,提取模块,还包括以下子模块:
提取子模块,用于提取第一SMBIOS中的第一信息;
则更新模块,包括以下子模块:
更新子模块,用于从更新文件中提取第二信息,根据第一信息和第二信息将第一SMBIOS更新为第二SMBIOS。
上述BIOS,还包括以下模块:
判定模块,用于判定第二步是否完成。
上述BIOS,判定模块,还包括以下子模块:
第一校验子模块,用于利用校验算法计算更新信息的第一校验值;
第二校验子模块,用于读取SMBIOS信息中被更新信息所更新的内容,利用校验算法计算内容的第二校验值;
判定子模块,用于若第一校验值等于第二校验值,则判定所述第二步完成。
本发明的方法国产平台的BIOS直接利用只包含SMBIOS信息的文本格式的文件对SMBIOS信息进行更新,提高了更新SMBIOS的效率。
具体实施方式
本发明不受下述实施例的限制,可根据本发明的技术方案与实际情况来确定具体的实施方式。
下面结合实施例及附图对本发明作进一步描述:
实施例1:图1为实施例1的一种更新国产平台SMBIOS的方法的流程图,应用于BIOS,包括以下步骤:
S1,提取存储设备中的文本格式的更新文件;
S2,从更新文件中提取更新信息,并根据更新信息将第一SMBIOS更新为第二SMBIOS。
本发明应用的平台为国产平台(例如龙芯平台,申威平台等),进口芯片构建的平台中BIOS更新SMBIOS通常需要采用工具,无法进行底层的读写操作,国产平台的BIOS为自行设计,能够提供底层读写SMBIOS的接口。SMBIOS通常存储在Flash(闪存)芯片上。存储设备可以是硬盘或者其他外接的存储设备(例如移动硬盘或U盘)。存储设备可以是硬盘或者其他外接的存储设备(例如移动硬盘或U盘)。BIOS在上电后会加载接入的硬件的驱动程序(例如,接入的移动硬盘或U盘,存储SMBIOS的Flash芯片),在加载驱动后,可以通过本发明提供的方法利用上述BIOS完成SMBIOS的更新。
文本格式可以是TXT格式或BIN格式。
提取存储设备中的文本格式的更新文件的方式可以是手动的或者自动的。例如,BIOS界面可以提供更新SMBIOS的界面,用户在更新SMBIOS的界面选择存储设备中的更新文件;也可以设定默认目录,当BIOS读取到默认目录下有特定名称的更新文件时,自动提取该更新文件。
更新文件可以包括TYPE0-TYPE3信息,为了区分不同信息,可以在更新文件中为更新信息增添了头标记,即一段信息的开头增加前缀。例如,头标记可以是“TYPE_0_Version_4.0”,代表后面的更新信息是TYPE0信息,版本是4.0。
BIOS根据头标记,将更新信息抽取出来,填入SMBIOS Table的位置。第一SMBIOS为更新前的SMBIOS,第二SMBIOS为更新后的SMBIOS。
本发明的方法国产平台的BIOS直接利用只包含SMBIOS信息的文本格式的文件对SMBIOS信息进行更新,提高了更新SMBIOS的效率。
实施例2:上述方法,S1,还包括以下步骤:
S11,提取第一SMBIOS中的第一信息;
则S2,包括以下步骤:
S21,从更新文件中提取第二信息,根据第一信息和第二信息将第一SMBIOS更新为第二SMBIOS。
SMBIOS信息通常存储在同一个块中,包括TYPE0-TYPE3信息。其中,TYPE0信息(即第一信息)为固件厂商信息需要保留,TYPE1-TYPE3信息(即第二信息)是要更新的部分。如上文,SMBIOS通常存储在Flash芯片中,Flash芯片的写入方式为整块写入,Flash芯片在写入前需要对整块的信息进行擦除。为写入第二信息,位于同一块中的第一信息会被擦除,因此需要在写入第二信息前将第一信息缓存起来,防止丢失。写入的时候把第一信息和第二信息写入。
本实施例的更新SMBIOS的方法能够将SMBIOS信息中的固件厂商信息缓存起来并重新写入,因而该方法能够更有效地保护固件厂商信息。
实施例3:上述方法,还包括以下步骤:
S3,判定第二步是否完成。
实际应用中可以设定一定时间间隔,检验第二SMBIOS是否与更新信息相同。
本实施例的方法能够检验SMBIOS是否成功更新,因而能够更有效地更新SMBIOS。
实施例4:上述方法,S3步骤,包括以下步骤:
S31,利用校验算法计算更新信息的第一校验值;
S32,读取第二SMBIOS,利用校验算法计算第二SMBIOS的第二校验值;
S33,若第一校验值等于第二校验值,则判定所述第二步完成。
具体地,校验算法可以包括但不限于下列算法中的一种:哈希校验算法,奇偶校验算法。
本实施例的方法,利用准确性更高的校验算法判断更新后的SMBIOS是否与用于更新的信息相同,因而能够更准确地判断SMBIOS是否完成更新。
图2为本发明的BIOS更新SMBIOS方法的整体框架图,BIOS加载BIOS的Flash和U盘/硬盘等存储设备的设备驱动后,位于BIOS中的更新模块提取模块通过设备驱动提供的接口从存储设备中提取用于更新SMBIOS的更新文件,更新模块利用设备驱动的接口将SMBIOS文件用于更新BIOS的Flash中的SMBIOS。
基于同一发明构思,本发明实施例中还提供了更新国产平台SMBIOS的BIOS,由于该BIOS解决问题的原理与上述方法相似,因此该BIOS的实施可以参见方法的实施,重复之处不再赘述。
实施例5:图3为实施例5提供的一种更新国产平台SMBIOS的BIOS装置的示意图,包括以下模块:
提取模块,用于提取存储设备中的文本格式的更新文件;
更新模块,用于从更新文件中提取更新信息,并根据更新信息将第一SMBIOS更新为第二SMBIOS。
实施例6:上述BIOS装置,提取模块,还包括以下子模块:
提取子模块,用于提取第一SMBIOS中的第一信息;
更新模块,包括以下子模块:
更新子模块,用于从更新文件中提取第二信息,根据第一信息和第二信息将第一SMBIOS更新为第二SMBIOS。
实施例7:上述BIOS装置,还包括以下模块:
判定模块,用于判定第二步是否完成。
实施例8:上述BIOS装置,判定模块,还包括以下子模块:
第一校验子模块,用于利用校验算法计算更新信息的第一校验值;
第二校验子模块,用于读取SMBIOS信息中被更新信息所更新的内容,利用校验算法计算内容的第二校验值;
判定子模块,用于若第一校验值等于第二校验值,则判定所述第二步完成。