CN113741926A - 内核驱动程序的升级方法、装置、服务器及存储介质 - Google Patents
内核驱动程序的升级方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN113741926A CN113741926A CN202110157730.2A CN202110157730A CN113741926A CN 113741926 A CN113741926 A CN 113741926A CN 202110157730 A CN202110157730 A CN 202110157730A CN 113741926 A CN113741926 A CN 113741926A
- Authority
- CN
- China
- Prior art keywords
- driver
- server
- package
- kernel
- upgraded
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种内核驱动程序的升级方法、装置、服务器及存储介质。其中,方法包括:获取升级指令;基于获取的升级指令确定待升级驱动程序;判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种内核驱动程序的升级方法、装置、服务器及存储介质。
背景技术
服务器包含很多硬件设备,这些硬件设备可以称为服务器的部件,比如网卡、阵列卡、加速卡、图形处理器(GPU,Graphics Processing Unit)等。部件中通常固化有固件(英文可以表达为Firmware),用于决定部件的功能及性能,并独立于服务器的操作系统而存在。与固件不同,如图1所示,部件的驱动程序安装在操作系统内,相当于部件的接口,是连接硬件(即部件)和操作系统的内核以进行通信的桥梁。对于同一部件,在操作系统的内核版本不同的情况下,驱动程序也不同。
在服务器运行过程中,一些部件可能存在驱动隐患,为避免驱动隐患对服务器的稳定性造成影响,需要及时对相应驱动程序进行升级。
发明内容
为解决相关技术问题,本申请实施例提供一种内核驱动程序的升级方法、装置、服务器及存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供了一种内核驱动程序的升级方法,应用于服务器,包括:
获取升级指令;基于获取的升级指令确定待升级驱动程序;
判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
上述方案中,所述判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,包括:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本相同的情况下,确定所述驱动程序库中存在所述第一驱动程序包;并将所述目标驱动程序包确定为所述第一驱动程序包。
上述方案中,所述判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,包括:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
在所述第二判断结果表征所述驱动程序库中不存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,或者,在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本不同的情况下,确定所述驱动程序库中不存在所述第一驱动程序包。
上述方案中,所述待升级驱动程序对应的内核版本与所述服务器的内核版本不匹配;所述控制所述服务器自动编译第二驱动程序包,包括:
基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包。
上述方案中,所述基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包,包括:
在基于所述服务器的内核版本确定所述服务器的内核为标准内核的情况下,获取所述标准内核对应的标准软件仓库;
基于所述标准软件仓库,控制所述服务器自动编译第二驱动程序包。
上述方案中,所述基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包,包括:
在基于所述服务器的内核版本确定所述服务器的内核为自定义内核的情况下,获取所述自定义内核对应的自定义软件仓库;
基于所述自定义软件仓库,控制所述服务器自动编译第二驱动程序包。
上述方案中,所述方法还包括:
利用所述第一驱动程序包对所述待升级驱动程序进行升级时,在升级失败的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
上述方案中,所述方法还包括:
利用所述第二驱动程序包对所述待升级驱动程序进行升级时,在升级成功的情况下,控制所述服务器将所述第二驱动程序包存储至所述驱动程序库。
上述方案中,所述获取升级指令,包括以下之一:
接收监控装置发送的升级指令;所述监控装置用于监控多个服务器中每个服务器的内核驱动程序的状态;
接收终端发送的升级指令;
监测到所述服务器存在待升级的内核驱动程序。
本申请实施例还提供了一种内核驱动程序的升级装置,包括:
获取单元,用于获取升级指令;基于获取的升级指令确定待升级驱动程序;
第一处理单元,用于判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
第二处理单元,用于在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
第三处理单元,用于在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
本申请实施例还提供了一种服务器,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
其中,所述处理器用于运行所述计算机程序时,执行上述任一方法的步骤。
本申请实施例还提供了一种存储介质,所述介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
本申请实施例提供的内核驱动程序的升级方法、装置、服务器及存储介质,获取升级指令;基于获取的升级指令确定待升级驱动程序;判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。本申请实施例的方案,服务器自适应地对需要升级的驱动程序进行升级,即自动地选择合适的升级方案对需要升级的驱动程序进行升级;如此,能够避免驱动隐患对服务器的稳定性的影响,在批量部署服务器的场景下简化为各服务器升级驱动程序的操作流程,进而提高驱动程序的升级效率,并降低对服务器集群的维护成本。
附图说明
图1为集成驱动程序的内核示意图;
图2为本申请实施例内核驱动程序的升级方法的流程示意图;
图3为本申请应用实施例应用场景的示意图;
图4为本申请应用实施例主机自适应升级驱动的流程示意图;
图5为本申请实施例内核驱动程序的升级装置的结构示意图;
图6为本申请实施例服务器的结构示意图。
具体实施方式
相关技术中,驱动隐患可能造成服务器的宕机现象(即死机现象),为了避免或修复部件的驱动隐患,可以利用相应厂商发布的驱动程序包手动地对相应驱动程序进行升级。当然,在新安装操作系统、重装操作系统、在线系统有漏洞(英文可以表示为Bug)缺陷等情况下,为了保障系统运行的稳定性,也可以利用相应厂商发布的驱动程序包手动地对相应驱动程序进行升级。
具体地,服务器厂商或上层部件供应商会针对一些指定的内核版本提供统一的、编译好的驱动程序包,在需要对驱动程序进行升级时,需要手动检查服务器的原始设备制造商(OEM,Original Equipment Manufacturer)信息和及操作系统的内核信息,并寻找相应厂商提供(即发布)的驱动程序包,对找到的驱动程序包进行验证(比如稳定性测试、功能测试等)后,再手动地对相应驱动程序进行升级。
然而,利用相应厂商提供的驱动程序包手动地对相应驱动程序进行升级,可能存在以下问题:
第一,相应厂商提供的驱动程序包的适用范围有限。
具体地,操作系统的种类及各种操作系统的内核版本繁多,出现升级驱动程序的需求时,相应厂商只会针对主流操作系统的主要内核(也可以称为主流内核,是由官方平台维护或从官方平台获取的标准内核)版本发布驱动程序包,而无法及时提供针对每种操作系统的所有内核版本的驱动程序包。这样,如果服务器的内核类型是在主流内核的基础上进行了优化、裁剪等操作得到的定制版内核(即自定义内核),则无法利用相应厂商提供的驱动程序包对相应驱动程序进行升级。
第二,在数据中心等批量部署服务器的场景下,驱动程序的升级流程复杂,部署效率低,维护成本高。
具体地,针对批量部署的大量服务器,如果为每个服务器手动地升级驱动程序,人为地干预整个升级过程,会使得人工操作过多,升级难度大且低效。另外,由于这些服务器安装的操作系统或内核版本并不相同,针对同一服务器部件,需要维护大量的内核版本与驱动程序包的匹配关系;同时,由于相应厂商提供的驱动程序包通常为二进制形式,存在驱动程序包形式的局限性,还需要维护大量的已编译二进制版本的驱动程序包。
基于此,在本申请的各种实施例中,服务器自适应地对需要升级的驱动程序进行升级,即自动地选择合适的升级方案对需要升级的驱动程序进行升级;如此,能够避免驱动隐患对服务器的稳定性的影响,在批量部署服务器的场景下简化为各服务器升级驱动程序的操作流程,进而提高驱动程序的升级效率,并降低对服务器集群的维护成本。
本申请实施例提供了一种内核驱动程序的升级方法,应用于服务器,如图2所示,该方法包括:
步骤201:获取升级指令;基于获取的升级指令确定待升级驱动程序;
步骤202:判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
步骤203:在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
步骤204:在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
其中,利用所述第一驱动程序包或所述第二驱动程序包对所述待升级驱动程序进行升级,可以包括:利用所述第一驱动程序包或所述第二驱动程序包进行驱动程序的初始安装;或者,利用所述第一驱动程序包或所述第二驱动程序包进行驱动程序的覆盖安装。
这里,需要说明的是,在本申请的各种实施例中,所述服务器也可以称为主机。由于所述服务器中存在待升级驱动程序,所以所述服务器还可以称为待升级服务器或待升级主机。
实际应用时,本申请实施例提供的内核驱动程序的升级方法,可以应用在数据中心等批量部署服务器的场景下,以对服务器集群(也可以称为主机群)中各服务器的驱动程序进行升级。
实际应用时,确定服务器集群中各服务器的驱动程序是否需要升级的方式可以根据需求设置,比如,可以设置能够与服务器集群中的每个服务器进行通信的监控装置,由所述监控装置通过获取各服务器的配置与驱动程序的相关信息监控服务器集群中各服务器的驱动程序是否需要升级。再比如,可以由终端监控服务器集群中各服务器的驱动程序是否需要升级,或者用户通过终端直接指示一个或多个服务器的驱动程序是否需要升级。当然,服务器还可以根据自身的配置与驱动程序的相关信息监测自身是否存在待升级的内核驱动程序。
基于此,对于步骤201,在一实施例中,所述获取升级指令,可以包括以下之一:
接收监控装置发送的升级指令;所述监控装置用于监控多个服务器(即服务器集群)中每个服务器的内核驱动程序的状态;
接收终端发送的升级指令;
监测到所述服务器存在待升级的内核驱动程序。
其中,实际应用时,针对所述多个服务器中的每个服务器,所述监控装置可以监控相应服务器的运行状态,并获取相应服务器的配置与驱动程序的相关信息;所述配置与驱动程序的相关信息可以包括:相应服务器的部件名称、相应服务器的部件数量、相应服务器的部件对应的插槽(英文可以表示为Slot)信息、相应服务器的驱动程序版本信息、相应服务器的固件版本信息、相应服务器的操作系统版本信息、相应服务器的内核版本信息等。所述监控装置根据监控到的相应服务器的运行状态以及获取到的相应服务器的配置与驱动程序的相关信息,可以确定相应服务器中是否存在待升级的内核驱动程序,并在确定相应服务器中存在待升级的内核驱动程序的情况下,向相应服务器发送升级指令。
实际应用时,所述终端可以包括个人电脑(PC,Personal Computer)、手机、可穿戴智能设备等;所述PC可以包括台式电脑、笔记本电脑、平板电脑、车载电脑等。所述终端可以监控所述服务器的运行状态,并获取所述服务器的配置与驱动程序的相关信息,根据监控到的所述服务器的运行状态以及获取到的所述服务器的配置与驱动程序的相关信息,确定所述服务器中是否存在待升级的内核驱动程序,并在确定所述服务器中存在待升级的内核驱动程序的情况下,向所述服务器发送升级指令。当然,用户可以根据需求确定所述服务器中是否存在待升级的内核驱动程序,并直接通过所述终端向所述服务器发送升级指令。
实际应用时,所述服务器可以监测自身的运行状态,并获取自身的配置与驱动程序的相关信息,根据自身的运行状态以及获取到的配置与驱动程序的相关信息,确定自身是否存在待升级的内核驱动程序,并在确定自身存在待升级的内核驱动程序的情况下,确定获取到升级指令。
在步骤202中,实际应用时,所述驱动程序库中的驱动程序包可以根据需求设置,所述驱动程序库的存储位置也可以根据需求设置,比如,所述驱动程序库可以存储在所述服务器的本地;再比如,所述驱动程序库也可以存储在所述监控装置中。在所述驱动程序库存储在所述监控装置中的情况下,所述服务器可以通过向所述监控装置发送查询信息来判断所述驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包。
实际应用时,为了能够成功利用所述第一驱动程序包对所述待升级驱动程序进行升级,所述第一驱动程序包的名称需要与所述待升级驱动程序的名称相同,所述第一驱动程序包对应的内核版本也需要与所述服务器的内核版本相同。
基于此,在一实施例中,所述判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,可以包括:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
这样,在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本相同的情况下,可以确定所述驱动程序库中存在所述第一驱动程序包;并将所述目标驱动程序包确定为所述第一驱动程序包;
在所述第二判断结果表征所述驱动程序库中不存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,或者,在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本不同的情况下,可以确定所述驱动程序库中不存在所述第一驱动程序包。
实际应用时,在所述驱动程序库存储(即维护)在所述监控装置中的情况下,所述判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,具体可以包括:向所述监控装置发送查询信息,所述查询信息用于指示所述监控装置判断自身维护的驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包。所述监控装置得到所述第一判断结果后,可以先将所述第一判断结果返回给所述服务器,再由所述服务器向所述监控装置请求所述第一驱动程序包。当然,所述监控装置也可以在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,直接将所述第一驱动程序包返回给所述服务器。
相应地,在步骤203中,实际应用时,所述从所述驱动程序库中获取所述第一驱动程序包,可以包括:向所述监控装置发送用于请求所述第一驱动程序包的请求消息,并接收所述监控装置响应所述请求消息返回的第一驱动程序包;或者,直接接收所述监控装置发送的第一驱动程序包。
实际应用时,所述待升级驱动程序需要升级的原因可以包括:所述待升级驱动程序对应的内核版本与所述服务器的内核版本不匹配、所述待升级驱动程序运行错误等。
其中,对于步骤204,在一实施例中,在所述待升级驱动程序对应的内核版本与所述服务器的内核版本不匹配的情况下,所述控制所述服务器自动编译第二驱动程序包,可以包括:
基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包。
实际应用时,所述服务器的内核可以是标准内核或自定义内核;所述标准内核也可以称为主流内核,是由官方平台维护或从官方平台获取的内核;所述自定义内核是指在标准内核的基础上进行了优化、裁剪等操作得到的定制版的内核。基于所述服务器的内核类型的不同,具体控制所述服务器自动编译第二驱动程序包的过程也不同。
基于此,在一实施例中,所述基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包,可以包括:
在基于所述服务器的内核版本确定所述服务器的内核为标准内核的情况下,获取所述标准内核对应的标准软件仓库;
基于所述标准软件仓库,控制所述服务器自动编译第二驱动程序包。
在一实施例中,所述基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包,可以包括:
在基于所述服务器的内核版本确定所述服务器的内核为自定义内核的情况下,获取所述自定义内核对应的自定义软件仓库;
基于所述自定义软件仓库,控制所述服务器自动编译第二驱动程序包。
实际应用时,可能存在无法成功利用所述第一驱动程序包对所述待升级驱动程序进行升级的情况,此时,可以利用所述第二驱动程序包对所述待升级驱动程序进行升级。
基于此,在一实施例中,所述方法还可以包括:
利用所述第一驱动程序包对所述待升级驱动程序进行升级时,在升级失败的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
实际应用时,为了提高对驱动程序进行升级的效率,在利用第二驱动程序包对所述待升级驱动程序成功升级后,可以将所述第二驱动程序包存储到所述驱动程序库。
基于此,在一实施例中,所述方法还可以包括:
利用所述第二驱动程序包对所述待升级驱动程序进行升级时,在升级成功的情况下,控制所述服务器将所述第二驱动程序包存储至所述驱动程序库。
实际应用时,在所述驱动程序库未存储在所述服务器的本地的情况下,所述控制所述服务器将所述第二驱动程序包存储至所述驱动程序库,可以包括:所述服务器将所述第二驱动程序包发送给目标电子设备(比如所述监控装置);所述目标电子设备存储(即维护)有所述驱动程序库;所述目标电子设备接收到所述第二驱动程序包后,可以将所述第二驱动程序包存储至所述驱动程序库。如此,在后续出现与所述第二驱动程序包的名称和对应的内核版本匹配的待升级驱动程序时,服务器可以直接从所述驱动程序库中获取所述第二驱动程序包(此时所述第二驱动程序包成为了第一驱动程序包)对所述待升级驱动程序进行升级。
本申请实施例提供的内核驱动程序的升级方法,获取升级指令;基于获取的升级指令确定待升级驱动程序;判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。本申请实施例的方案,服务器自适应地对需要升级的驱动程序进行升级,即自动地选择合适的升级方案对需要升级的驱动程序进行升级;如此,能够避免驱动隐患对服务器的稳定性的影响,在批量部署服务器的场景下简化为各服务器升级驱动程序的操作流程,进而提高驱动程序的升级效率,并降低对服务器集群的维护成本。
下面结合应用实施例对本申请再作进一步详细的描述。
在本应用实施例中,如图3所示,多个服务器被部署为服务器集群,所述服务器集群称为主机群;所述服务器集群中的服务器包括在线的服务器(可以理解为已部署了操作系统的服务器)和即将部署操作系统的服务器,所述在线的服务器称为在线主机,所述即将部署操作系统的服务器称为待部署主机;所述监控装置称为监控系统;所述驱动程序简称为驱动;所述驱动程序包可以简称为Pkg。
下面结合图3对本应用实施例进行详细说明。
1)监控系统。所述监控系统,用于实时地监控在线主机和/或待部署主机的运行状态。具体地,所述监控系统可以通过实时地获取在线主机和/或待部署主机的配置信息及运行版本信息来监控在线主机和/或待部署主机的运行状态。所述配置信息可以包括:相应主机的部件名称、相应主机的部件数量、相应主机的部件对应的Slot信息、相应主机的驱动版本信息、相应主机的固件版本信息等属性信息;所述运行版本信息可以包括:相应主机的操作系统版本信息、相应主机的内核版本信息、相应主机的驱动版本信息等。
示例性地,相应主机的操作系统版本信息可以为Centos6.6、Centos7.4、Ubuntu16.4等;相应主机的内核版本信息可以为2.6.32.504、3.10.0-693、3.10.693.11.6、3.10.693.11.6.stack、4.17.0.32等;相应主机的驱动版本信息可以包括相应主机的网卡类驱动版本信息、相应主机的阵列卡类驱动版本信息等;相应主机的网卡类驱动版本信息可以为mlx5_core、ixgbe、i40e等;相应主机的阵列卡类驱动版本信息可以为mpt3sas、mega_raid、aacraid、hpsa等。
2)升级接口模块。所述升级接口模块用于实时地记录在线系统(即在线主机)和/或离线系统(即待部署主机)所有的部件版本信息。具体地,所述监控系统实时地获取在线主机和/或待部署主机的配置信息及运行版本信息后,可以将获取的信息发送到所述升级接口模块。所述升级接口模块可以设置在所述监控系统的内部或外部。其中,在线主机的部件版本信息可以包括部件名称、驱动名、驱动版本号、部件固件、部件健康版本、升级方案、升级文件、主机所属的业务部门、部件的整体升级数量、升级进度等,这些信息可以分别记录在相应的数据库中。示例性地,按照驱动名称进行分类的驱动数据库可以如表1所示。
表1
3)业务群组。所述业务群组是在线主机的实际使用者,他们的主要特点是:所拥有的主机资源规模大,操作系统版本和内核版本多样化,且驱动需求各异。在图3中,所述业务群组表示为Biz_A、Biz_B、……Biz_X。所述业务群组针对一批某个特性的版本发起驱动升级的过程前,会考虑系统版本、内核版本、驱动版本、需要升级驱动的主机数量、集群规模、升级策略等因素。
为了使所述业务群组中的主机能够自适应地升级驱动,解决系统内核多版本的问题,并自动地为在线主机提供当前内核版本的驱动,如图4所示,主机自适应升级驱动的过程可以包括以下步骤:
步骤401:获取升级请求;之后执行步骤402。
具体地,业务群组中的主机获取业务群组或监控系统发送的升级请求。
步骤402:判断数据库中是否存在相应Pkg;若存在,执行步骤403;若不存在,执行步骤404。
具体地,主机可以通过向所述升级接口模块发送查询信息,判断所述升级接口模块维护的数据库中是否存在与所述升级请求对应的驱动相匹配的Pkg。
步骤403:获取相应Pkg;之后执行步骤409。
步骤404:判断是否是自定义内核;若是,执行步骤407;若否,执行步骤405或406。
具体地,主机可以判断自身的内核是自定义内核还是标准内核;若是自定义内核,则执行步骤407;若是标准内核,则可以基于自身的操作系统,通过Repo获取软件仓库(步骤405)或通过Apt获取软件仓库(步骤406)。
步骤405:获取标准&更新Repo(即通过Repo获取的软件仓库);之后执行步骤408。
步骤406:获取标准&更新Apt(即通过Apt获取的软件仓库);之后执行步骤408。
步骤407:获取相应的定制Repo;或者,获取商业开发内核Pkg;之后执行步骤408。
具体地,判断自身的内核是自定义内核后,主机可以获取与所述自定义内核对应的定制Repo(即定制的软件仓库);再未获取到相应的定制Repo的情况下,主机可以直接获取与所述自定义内核对应的商业开发内核Pkg,并将获取的商业开发内核Pkg同步更新到定制Repo,以便于后续处理。
步骤408:构建相应Pkg;之后执行步骤409。
这里,利用标准&更新Repo、标准&更新Apt、定制Repo或商业开发内核Pkg构建相应Pkg后,可以将得到的Pkg同步存储到所述升级接口模块维护的数据库中,以便于后续处理。
步骤409:升级驱动。
下面基于上述步骤401至步骤409,以升级ixgbe驱动为例,进一步详细描述主机自适应升级驱动的过程。
驱动和内核是高度关联的,驱动文件安装在内核中,会有指定的路径。因此,首先需要查询和比较在升级接口模块的驱动数据库中是否存在驱动名称ixgbe,若存在,则可以比较驱动版本是否能直接应用到当前主机的系统内核上。示例性地,适用于“2.6.32-504.el6.x86_64”内核的驱动不能直接应用到“2.6.32-504.el6.x86_64_custom”或“2.6.32-651.el6.x86_64”或其他内核上。因为每一个版本的ixgbe文件,在安装到操作系统后,其相关文件将会存放在内核指定的路径下。安装后,当前内核加载驱动,只会加载内核本身目录下的驱动,不在此内核目录下的驱动,不能被正常调用和下次系统重启加载。实际应用时,可以通过以下系统命令查询ixgbe驱动的存储路径:
实际应用时,负责下次操作系统启动加载新驱动的是称为initramfs.img的启动模块文件,为此,在更新驱动后,需要通过mkinitrd或者dracut等工具更新驱动文件到新的内核启动initramfs.img文件中。示例性地,可以通过以下系统命令更新驱动文件到新的内核启动initramfs.img文件中:
mkinitrd/boot/initramfs-`uname-r`.img`uname-r`。
驱动升级更新完毕后可以使用lsinitrd来检查是否成功将升级驱动核心文件写入initramfs中。示例性地,内核“3.10.0-327.28.3.el7.x86_64”下的ixgbe驱动查询方式为:
lsinitrd/boot/initramfs-3.10.0-327.28.3.el7.x86_64.img|grep ixgbe。
得到的结果如下:
如果升级失败或者升级接口没有对应内核的升级驱动,则进入自适应编译升级流程。检查主机当前运行内核是否为标准的升级版内核,为自定义编译驱动做环境准备。实际应用时,标准的原生内核和升级内核可以在http://vault.centos.org/、http://cdimages.ubuntu.com/或其他开源站点查询。
示例性地,标准升级版内核如3.10.0-327.36.3.el7.x86_64可以在上述官网查询,由开源社区发布并维护;而3.10.0-327.36.4.el7.x86_64则在开源网站无法找到,也就是开源社区没有发布它及相应的开发包,而是由用户自行修改、优化、定制之后的内核,不具备通用性,只在小范围内流通使用。这类主机操作系统如果要升级任何驱动,都需要有合适的内核开发环境。为此,所有的标准、自定义软件包都存放在对应的软件仓库中(比如图4中的标准&更新Repo、标准&更新Apt以及定制Repo)。
如果是标准的内核或标准内核的升级内核,可以通过yum命令或apt-get命令直接进入编译环节。
示例性地,通过命令kdev=`uname-r`检查自定义内核环境时,可能的输出如下:
(1)kiaas1='3.10.0-327.36.4.el7.x86_64';
(2)kiaas2='3.10.0-693.21.2.el7.x86_64';
(3)kiaas3='4.13.7-1.el7.elrepo.x86_64';
(4)kiaas4='3.10.0-693.5.2.el7.jd_3313.x86_64'等。
这里,(1)、(2)、(3)和(4)均不属于标准的升级包,此时,相应的主机所需要的开发环境包在标准的Repo或者Apt仓库无法找到,则属于用户业务自行做过内核优化,裁剪,定制后的内核。而对于“3.10.0-327.36.X.el7.x86_64”,X大于4时,即说明此内核不是开源社区公开发行内核,它区别于所有其他的标准内核,为此,需要事先从用户研发部门获取当时编译内核的自定义相关的开发包(比如图4中的商业开发内核Pkg)。而“3.10.0-327.36.3.el7.x86_64”是标准内核,可以在标准&更新Repo或标准&更新Apt中找到。示例性地,可以通过以下函数判断内核是标准内核还是自定义内核:
实际应用时,在检测(可以理解为查询或判断)升级接口模块是否保存当前系统内核对应的Pkg时,如果升级接口已保存此版本内核对应的Pkg,则可以直接将相应Pkg下载到当前主机操作系统,并在当前操作系统利用“rpm–ivh ixgbe.centos7.4.x86_64.rpm”、“idpkg-i ixgbe.x86_deb”等升级指令对ixgbe驱动进行升级。
实际应用时,当前系统完成内核开发环境配置后,进一步安装需要编译源码的开发包工具,即可进行驱动源码包的编译(即构建相应Pkg)和安装。示例性地,可以通过以下命令安装需要编译源码的开发包工具:
yum install-y gcc python-devel libnl-devel valgrind-devel binutils-devel numactl-devel。
安装好开发环境和工具包后,编译过程的部分输出结果如下:
实际应用时,源码编译完成后,会在当前主机的操作系统指定的路径生成适用于当前内核的升级驱动包。检查升级包的文件内容时,可以通过“rpm-qpl ixgbe-5.5.3-1.x86_64.rpm”的命令来查看。
实际应用时,在当前主机的操作系统下对相应的驱动进行升级的过程中,可以通过以下命令获知ixgbe包、核心驱动ko文件会被存放在当前操作系统的绝对路径“./3.10.0-327.28.3.el7.x86_64/updates/”下,同时会被initramfs集成,待下次系统重启引用,同时,其他系统文件也会按照要求存放在系统的其他目录下。
实际应用时,通过以上结果可以确定,编译完成的软件包,只适用于特定内核,如果强行安装在其他内核版本上,虽然不报错,但是也不能集成到其他内核的启动文件中,不能真正起到驱动作用。最后,当前主机可以将编译完成的软件包同步(即存储)到升级接口模块维护的驱动数据库中,便于其他主机升级调用。
本应用实施例提供的方案,具有以下优点:
一方面,主机能够自动地在大量的驱动和内核的匹配中找到适合自身的驱动升级方案。另一方面,在部署主机集群时,针对多个主机批量部署本应用实施例的自适应驱动升级方案,能够极大地提高部署效率,简化驱动升级的操作流程,降低集群维护成本。
为了实现本申请实施例的方法,本申请实施例还提供了一种内核驱动程序的升级装置,设置在服务器上,如图5所示,该装置包括:
获取单元501,用于获取升级指令;基于获取的升级指令确定待升级驱动程序;
第一处理单元502,用于判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
第二处理单元503,用于在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,通过所述获取单元501从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
第三处理单元504,用于在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
其中,在一实施例中,所述获取单元501,具体用于执行以下操作之一:
接收监控装置发送的升级指令;所述监控装置用于监控多个服务器中每个服务器的内核驱动程序的状态;
接收终端发送的升级指令;
监测到所述服务器存在待升级的内核驱动程序。
在一实施例中,所述第一处理单元502,具体用于:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本相同的情况下,确定所述驱动程序库中存在所述第一驱动程序包;并将所述目标驱动程序包确定为所述第一驱动程序包。
在一实施例中,所述第一处理单元502,具体用于:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
在所述第二判断结果表征所述驱动程序库中不存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,或者,在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本不同的情况下,确定所述驱动程序库中不存在所述第一驱动程序包。
在一实施例中,所述待升级驱动程序对应的内核版本与所述服务器的内核版本不匹配;所述第三处理单元504,具体用于基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包。
在一实施例中,所述第三处理单元504,具体用于:
在基于所述服务器的内核版本确定所述服务器的内核为标准内核的情况下,通过所述获取单元501获取所述标准内核对应的标准软件仓库;
基于所述标准软件仓库,控制所述服务器自动编译第二驱动程序包。
在一实施例中,所述第三处理单元504,具体用于:
在基于所述服务器的内核版本确定所述服务器的内核为自定义内核的情况下,通过所述获取单元501获取所述自定义内核对应的自定义软件仓库;
基于所述自定义软件仓库,控制所述服务器自动编译第二驱动程序包。
在一实施例中,所述第二处理单元503,还用于:
利用所述第一驱动程序包对所述待升级驱动程序进行升级时,在升级失败的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
在一实施例中,所述第三处理单元504,还用于:
利用所述第二驱动程序包对所述待升级驱动程序进行升级时,在升级成功的情况下,控制所述服务器将所述第二驱动程序包存储至所述驱动程序库。
实际应用时,所述获取单元501可由该装置中的处理器结合通信接口实现;所述第一处理单元502、所述第二处理单元503和所述第三处理单元504可由该装置中的处理器实现。
需要说明的是:上述实施例提供的装置在对驱动程序进行升级时,仅以上述各程序模块的划分进行举例说明,实际应用时,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的装置与内核驱动程序的升级方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种服务器,如图6所示,该服务器600包括:
通信接口601,能够与其他电子设备进行信息交互;
处理器602,与所述通信接口601连接,以实现与其他电子设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的方法;
存储器603,用于存储能够在所述处理器602上运行的计算机程序。
具体地,所述处理器602用于执行以下操作:
获取升级指令;基于获取的升级指令确定待升级驱动程序;
判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,通过所述通信接口601从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制所述服务器600自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
其中,在一实施例中,所述处理器602,具体用于执行以下操作之一:
通过所述通信接口601接收监控装置发送的升级指令;所述监控装置用于监控多个服务器600中每个服务器600的内核驱动程序的状态;
通过所述通信接口601接收终端发送的升级指令;
监测到所述服务器600存在待升级的内核驱动程序。
在一实施例中,所述处理器602,还用于执行以下操作:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器600的内核版本相同,得到第三判断结果;
在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器600的内核版本相同的情况下,确定所述驱动程序库中存在所述第一驱动程序包;并将所述目标驱动程序包确定为所述第一驱动程序包。
在一实施例中,所述处理器602,还用于执行以下操作:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器600的内核版本相同,得到第三判断结果;
在所述第二判断结果表征所述驱动程序库中不存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,或者,在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器600的内核版本不同的情况下,确定所述驱动程序库中不存在所述第一驱动程序包。
在一实施例中,所述待升级驱动程序对应的内核版本与所述服务器600的内核版本不匹配;所述处理器602,还用于执行以下操作:
基于所述服务器600的内核版本,控制所述服务器600自动编译第二驱动程序包。
在一实施例中,所述处理器602,还用于执行以下操作:
在基于所述服务器600的内核版本确定所述服务器600的内核为标准内核的情况下,通过所述通信接口601获取所述标准内核对应的标准软件仓库;
基于所述标准软件仓库,控制所述服务器600自动编译第二驱动程序包。
在一实施例中,所述处理器602,还用于执行以下操作:
在基于所述服务器600的内核版本确定所述服务器600的内核为自定义内核的情况下,通过所述通信接口601获取所述自定义内核对应的自定义软件仓库;
基于所述自定义软件仓库,控制所述服务器600自动编译第二驱动程序包。
在一实施例中,所述处理器602,还用于执行以下操作:
利用所述第一驱动程序包对所述待升级驱动程序进行升级时,在升级失败的情况下,控制所述服务器600自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
在一实施例中,所述处理器602,还用于执行以下操作:
利用所述第二驱动程序包对所述待升级驱动程序进行升级时,在升级成功的情况下,控制所述服务器600将所述第二驱动程序包存储至所述驱动程序库。
需要说明的是:所述处理器602具体执行上述操作的过程详见方法实施例,这里不再赘述。
当然,实际应用时,服务器600中的各个组件通过总线系统604耦合在一起。可理解,总线系统604用于实现这些组件之间的连接通信。总线系统604除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统604。
本申请实施例中的存储器603用于存储各种类型的数据以支持服务器600的操作。这些数据的示例包括:用于在服务器600上操作的任何计算机程序。
上述本申请实施例揭示的方法可以应用于处理器602中,或者由处理器602实现。处理器602可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器602中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器602可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器602可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器603,处理器602读取存储器603中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,服务器600可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或者其他电子元件实现,用于执行前述方法。
可以理解,本申请实施例的存储器603可以是易失性存储器或者非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random Access Memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random AccessMemory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random AccessMemory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其他适合类型的存储器。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器603,上述计算机程序可由服务器600的处理器602执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
需要说明的是:“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
另外,本申请实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (12)
1.一种内核驱动程序的升级方法,其特征在于,应用于服务器,包括:
获取升级指令;基于获取的升级指令确定待升级驱动程序;
判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
2.根据权利要求1所述的方法,其特征在于,所述判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,包括:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本相同的情况下,确定所述驱动程序库中存在所述第一驱动程序包;并将所述目标驱动程序包确定为所述第一驱动程序包。
3.根据权利要求1所述的方法,其特征在于,所述判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,包括:
判断所述驱动程序库中是否存在与所述待升级驱动程序的名称相同的目标驱动程序包,得到第二判断结果;
在所述第二判断结果表征所述驱动程序库中存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,判断所述目标驱动程序包对应的内核版本是否与所述服务器的内核版本相同,得到第三判断结果;
在所述第二判断结果表征所述驱动程序库中不存在与所述待升级驱动程序的名称相同的目标驱动程序包的情况下,或者,在所述第三判断结果表征所述目标驱动程序包对应的内核版本与所述服务器的内核版本不同的情况下,确定所述驱动程序库中不存在所述第一驱动程序包。
4.根据权利要求1所述的方法,其特征在于,所述待升级驱动程序对应的内核版本与所述服务器的内核版本不匹配;所述控制所述服务器自动编译第二驱动程序包,包括:
基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包。
5.根据权利要求4所述的方法,其特征在于,所述基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包,包括:
在基于所述服务器的内核版本确定所述服务器的内核为标准内核的情况下,获取所述标准内核对应的标准软件仓库;
基于所述标准软件仓库,控制所述服务器自动编译第二驱动程序包。
6.根据权利要求4所述的方法,其特征在于,所述基于所述服务器的内核版本,控制所述服务器自动编译第二驱动程序包,包括:
在基于所述服务器的内核版本确定所述服务器的内核为自定义内核的情况下,获取所述自定义内核对应的自定义软件仓库;
基于所述自定义软件仓库,控制所述服务器自动编译第二驱动程序包。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用所述第一驱动程序包对所述待升级驱动程序进行升级时,在升级失败的情况下,控制所述服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
利用所述第二驱动程序包对所述待升级驱动程序进行升级时,在升级成功的情况下,控制所述服务器将所述第二驱动程序包存储至所述驱动程序库。
9.根据权利要求1至7任一项所述的方法,其特征在于,所述获取升级指令,包括以下之一:
接收监控装置发送的升级指令;所述监控装置用于监控多个服务器中每个服务器的内核驱动程序的状态;
接收终端发送的升级指令;
监测到所述服务器存在待升级的内核驱动程序。
10.一种内核驱动程序的升级装置,其特征在于,包括:
获取单元,用于获取升级指令;基于获取的升级指令确定待升级驱动程序;
第一处理单元,用于判断驱动程序库中是否存在与所述待升级驱动程序匹配的第一驱动程序包,得到第一判断结果;
第二处理单元,用于在所述第一判断结果表征所述驱动程序库中存在所述第一驱动程序包的情况下,从所述驱动程序库中获取所述第一驱动程序包;利用所述第一驱动程序包对所述待升级驱动程序进行升级;
第三处理单元,用于在所述第一判断结果表征所述驱动程序库中不存在所述第一驱动程序包的情况下,控制服务器自动编译第二驱动程序包;利用所述第二驱动程序包对所述待升级驱动程序进行升级。
11.一种服务器,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至9任一项所述方法的步骤。
12.一种存储介质,所述介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110157730.2A CN113741926A (zh) | 2021-02-04 | 2021-02-04 | 内核驱动程序的升级方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110157730.2A CN113741926A (zh) | 2021-02-04 | 2021-02-04 | 内核驱动程序的升级方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113741926A true CN113741926A (zh) | 2021-12-03 |
Family
ID=78728156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110157730.2A Pending CN113741926A (zh) | 2021-02-04 | 2021-02-04 | 内核驱动程序的升级方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113741926A (zh) |
-
2021
- 2021-02-04 CN CN202110157730.2A patent/CN113741926A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2421785C2 (ru) | Автоматизированное управление драйверами устройств | |
US8719810B2 (en) | Program upgrade system and method for over the air-capable mobile terminal | |
CN108847950B (zh) | 电子装置、云系统软件自动部署方法及存储介质 | |
CN108027741A (zh) | 基于补丁升级的文件处理方法、装置、终端以及存储介质 | |
CN112882729B (zh) | 应用镜像升级方法、装置、计算机设备和存储介质 | |
US11093321B1 (en) | System and method for automatically updating an information handling system upon system crash | |
US20170052854A1 (en) | Method and system for performing automatic system recovery | |
US11886886B2 (en) | System and method for runtime synchronization and authentication of pre-boot device drivers for a rescue operating system | |
CN113835644B (zh) | 整机迁移方法、装置、设备及存储介质 | |
CN107608681A (zh) | 操作系统安装方法、装置和服务器 | |
CN114756290A (zh) | 一种操作系统安装方法、设备及可读存储介质 | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
US20200364040A1 (en) | System and Method for Restoring a Previously Functional Firmware Image on a Non-Volatile Dual Inline Memory Module | |
CN117369840A (zh) | 一种基于定制软件源的嵌入式操作系统构建方法 | |
CN112199099A (zh) | 应用更新方法、装置、服务器及存储介质 | |
CN116225617A (zh) | 容器实例的管理迁移方法、装置和电子设备及存储介质 | |
CN113741926A (zh) | 内核驱动程序的升级方法、装置、服务器及存储介质 | |
CN114675902B (zh) | 基于嵌入式设备的软件版本的管理方法与管理装置 | |
CN116260718A (zh) | 一种物联网设备固件升级方法及系统 | |
CN115617488A (zh) | 操作系统迁移方法、装置、计算设备及存储介质 | |
CN114116030A (zh) | 操作系统的运行方法、装置、电子设备、存储介质 | |
CN111880828B (zh) | 一种在Secure Boot环境中批量升级多板卡驱动的方法 | |
CN114860202A (zh) | 项目运行方法、装置、服务器及存储介质 | |
CN111949278B (zh) | 一种自动安装mcs系统的方法、系统、终端及存储介质 | |
CN112379867A (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 |