更新的驱动程序安装的制作方法

文档序号:37482168发布日期:2024-04-01 13:51阅读:10来源:国知局
更新的驱动程序安装的制作方法

本发明涉及一种用于确定某些预定目标驱动程序是否需要安装在计算装置的内核上的方法和计算装置。特别地但非排他地,本发明涉及一种方法,其中文件被安装到在自助服务终端或销售点终端上执行的软件容器中,并且软件容器接着负责确定一组预定目标驱动程序是否安装在内核上。如果确定未安装所述文件,则软件容器被配置成在内核上构建和安装目标驱动程序。


背景技术:

1、众所周知,自助服务终端(sst)和/或销售点(pos)终端不时地在零售行业中使用。sst终端和pos终端通常用于使客户能够与零售机构进行交易。任何零售机构中的每个sst或pos终端都可以连接到不同的外围装置。每个sst或pos终端还可以执行不同的软件,例如具有不同的底层操作系统(linux、windows等)和不同的软件应用程序。这通常取决于使用sst或pos终端的零售机构,以及零售机构中sst或pos终端的预期用途。不时地,sst或pos终端上执行的软件也可能被升级,或者连接的外围装置可能会改变。

2、由于终端与终端之间经常存在差异,软件开发人员已经开始使用包含需要在sst或pos终端上执行的软件的软件容器。软件容器隔离运行中的软件,由此帮助避免复杂的平台依赖关系。也就是说,所述软件容器能够独立于终端的计算环境在所述终端的一个或多个处理器上执行。这是因为软件容器包含其需要在任何计算环境中可执行的所有软件(应用程序代码以及任何软件依赖项)。此外,当这些容器在它们自己的独立计算环境中运行时(除了与软件容器之外的其它软件/硬件(例如,访问特定文件、特定端口)的某些预定义通信路径之外),这也使它们特别安全。因此,软件容器是打包和分发用于sst终端和pos终端的软件的有效方式。当在终端上执行软件或硬件升级时,可以在考虑这些升级的终端上执行新的软件容器。此外,由于可以预先构建容器,这可以帮助避免每个终端上的复杂建构。需要注意的是,软件容器与虚拟机不同,因为它们不需要在计算装置上安装管理程序。软件容器通常也比虚拟机更轻便,且运行速度更快。此外,虽然虚拟机使整个计算机系统虚拟化,但软件容器使操作系统虚拟化。软件容器还共享单个操作系统,但每个虚拟机具有其自身的操作系统。

3、当部署软件容器时,利用容器引擎(例如,docker、rkt、cri-o和lxd等)。容器引擎可以接受来自容器编排器(例如kubernetes、swarm、mesos等)的api服务器的用户请求或请求,从注册表拉取图像文件(呈特定图像格式),准备容器安装点,准备执行软件容器所需的元数据,并且调用容器运行时。容器运行时是容器引擎的一部分。容器运行时(例如,runc、containerd、crun、railcar、katacontainers等)使用由容器引擎提供的安装点和元数据,并与在计算装置上运行的(主机os的)内核通信,以执行容器图像文件,并且从而创建软件容器。

4、当在多个计算装置上实施多个容器时,通常会使用软件容器编排器平台。这些平台能够跨多个计算装置(例如,sst或pos终端)调度容器工作负荷,并且还能够提供标准化的应用程序定义文件(例如,kube yaml、docker compose等)。kubernetes是容器编排平台的示例。

5、kubernetes容器编排平台是单元集群,包含名为kubernetes主节点的管理集群的控制单元和运行工作负荷(容器)的至少一个节点(或工作节点)。kubernetes编排器平台的一部分是kubelet。kubelet是在作为kubernetes系统的一部分的每个工作节点上运行的代理。在操作期间,kubelet(从kubernetes主节点上的api服务器)接收命令,所述命令通知kubelet应在计算装置上运行何种容器。在kubernetes中,这些容器设置在“豆荚(pod)”内。通常,单个豆荚包含单个容器,但也可以在豆荚内包含多个容器。kubelet将关于在计算装置上应运行何种容器的信息传递到容器引擎(例如,经由容器运行时接口(cri)),以便经由容器引擎内的容器运行时执行软件容器。

6、当容器运行时执行可执行容器图像文件时,创建软件容器。因此,软件容器基本上是相关联的可执行容器图像文件的运行时实例。在这个意义上,可执行容器图像文件是具有至少作为软件容器元件可执行所需的所有软件的图像文件。更详细地,容器图像文件通常是二进制文件,所述二进制文件除了包含描述软件容器的需求和能力的任何元数据之外,还包含用于运行软件容器的所有必要要求。容器图像文件本身由若干层组成,这些层定义运行软件容器所需的可执行指令。例如,容器图像文件可以包含定义软件应用程序可执行代码的若干层、定义软件应用程序所依赖的任何软件依赖项的代码的若干层,以及定义用于任何所需配置设置的代码的若干层。容器图像文件通常存储在容器图像注册表中。每个容器图像文件以特定容器图像格式存储,所述特定容器图像格式定义容器图像文件内的层和元数据。例如,开源容器倡议(oci)图像格式将图像文件定义为每个层的tar文件和呈json格式的清单文件,所述清单文件指定与图像文件项关联的元数据。

7、安装在sst或pos终端的内核上的驱动程序可能需要不时地进行更新。这样做的一种方式是由工程师进行手动干预,所述工程师在本地或远程访问终端以更新内核驱动程序。实现这一点的另一种方式是在具有权限访问的sst或pos终端上运行软件容器,这意味着容器具有底层主机计算装置的大部分或所有根能力,从而允许访问无权限容器中不可用的资源(例如更新内核)。然而,为软件容器提供权限访问因此是一种安全风险,并且违反了部署最佳实践。考虑到sst和pos终端需要具有稳定的安全性,这一点在零售业尤为重要。

8、已知的方法使用例如ansible之类的一些自动化系统将一组驱动程序自动安装到底层主机计算机的裸金属上。所有这些方法都存在一些问题:

9、1.安全性——某人或某个进程需要在裸金属级别对主机计算机进行权限访问。

10、2.预先构建驱动程序——您必须提前了解您需要的驱动程序以及安装的内核版本,以便您拥有针对正确内核预先构建的正确驱动程序。

11、3.主机文件系统通常至少被修改为包含新的驱动程序,这是“配置漂移”的来源,从而导致应该相同的系统彼此相异。

12、4.用于管理应用程序软件分发的使用周期和加工不同于用于管理驱动程序软件分发的使用周期和加工。


技术实现思路

1、本发明旨在至少部分地缓解一个或多个上文提及的问题。

2、本发明的某些实施例旨在帮助提供可以在不需要软件容器具有权限访问的情况下更新内核驱动程序的软件容器。

3、本发明的某些实施例旨在帮助自动且安全地安装最新的内核驱动程序。

4、本发明的某些实施例旨在帮助提供能够分发内核驱动程序代码并提取内核驱动程序构建过程的软件容器。以此方式,最新的驱动程序可以透明地安装在任何计算环境中的内核上(即,与操作系统无关),而无需提前协调和构建驱动程序。

5、本发明的某些实施例旨在提供可构建目标内核驱动程序并且接着根据内核的需求将这些驱动程序提供到内核的软件容器。

6、本发明的某些实施例旨在提供灵活性,以便在包含不同的操作系统和内核版本的广泛操作环境中使用树外内核驱动程序,而无需预先构建二进制。

7、根据本发明的第一方面,提供了一种用于确定是否应在计算装置的内核上安装至少一个预定目标驱动程序的计算机实施的方法,其包括以下步骤:使用包含能在计算装置的一个或多个处理器上执行的可执行软件的至少一个软件容器元件,从所述计算装置的内核接收指示安装在所述内核上的至少一个活动驱动程序的第一数据;将所述第一数据与指示应安装在所述内核上的至少一个预定目标驱动程序的第二数据进行比较;以及响应于所述比较,确定所述预定目标驱动程序中的至少一个未安装在所述内核上。

8、适当地,所述方法进一步包括响应于确定所述预定目标驱动程序中存在未安装在所述内核上的至少一个选定目标驱动程序,在所述软件容器元件内构建所述选定目标驱动程序中的至少一个。

9、适当地,所述方法进一步包括使用动态内核制作系统dkms在所述软件容器元件中构建所述选定目标驱动程序。

10、适当地,所述方法进一步包括:向所述内核提供在所述软件容器元件内构建的所述选定目标驱动程序;以及在所述内核上安装在所述软件容器元件内构建的所述选定目标驱动程序。

11、适当地,所述方法进一步包括在单个软件容器元件内提供所述可执行软件作为至少定义源代码和代码的软件,所述源代码与所述预定目标驱动程序中的每一个相关联,所述代码定义如何构建所述预定目标驱动程序中的每一个。

12、适当地,所述方法进一步包括在单个软件容器元件内提供所述可执行软件作为至少定义以下各项的软件:

13、与所述预定目标驱动程序中的每一个相关联的源代码;

14、用于动态内核制作系统dkms的框架;

15、所述dkms的配置;以及

16、可由dkms使用以构建所述预定目标驱动程序的至少一个构建工具。

17、适当地,所述方法进一步包括在每个相应软件容器元件中提供可执行软件作为至少定义源代码和代码的软件,所述源代码与所述预定目标驱动程序中的相应预定目标驱动程序相关联,所述代码定义如何构建所述相应预定目标驱动程序。

18、适当地,所述方法进一步包括接收所述第一数据作为指示安装在所述内核上的每个活动驱动程序的数据。

19、适当地,所述方法进一步包括接收所述第一数据作为指示安装在所述内核上的所述至少一个活动驱动程序的驱动程序类型和驱动程序版本的数据。

20、适当地,所述方法进一步包括在所述软件容器元件处接收一个或多个内核头文件。

21、适当地,所述方法进一步包括将所述内核头文件以只读方式安装到所述软件容器元件中。

22、适当地,将所述第一数据与所述第二数据进行比较包括查询从所述内核接收到的一个或多个文件,以确定安装在所述内核上的每个活动驱动程序的类型和版本。

23、适当地,将所述第一数据与所述第二数据进行比较进一步包括查询所述可执行软件以确定所述至少一个预定目标驱动程序的类型和版本。

24、适当地,所述方法进一步包括响应于所述比较,确定所述预定目标驱动程序中的不存在于所述内核上或具有安装在所述内核上的过时版本的至少一个选定目标驱动程序。

25、适当地,所述方法进一步包括将所述软件容器元件提供为init类型的软件容器元件。

26、适当地,所述方法进一步包括将所述可执行软件提供为能独立于计算环境执行的软件。

27、适当地,所述方法进一步包括经由所述软件容器元件,在隔离计算环境中执行所述可执行软件。

28、根据本发明的第二方面,提供了一种计算装置,其包括一个或多个处理器,所述一个或多个处理器被配置成执行包含在软件容器元件内的可执行软件,其中所述软件在被执行时被配置成:从计算装置的内核接收指示安装在所述内核上的至少一个活动驱动程序的第一数据;将所述第一数据与指示应安装在所述内核上的至少一个预定目标驱动程序的第二数据进行比较;并且确定所述预定目标驱动程序中的至少一个是否安装在所述内核上。

29、适当地,所述计算装置是销售点终端或自助服务终端。

30、根据本发明的第三方面,提供了一种计算机程序,其包括指令,所述指令在由计算装置执行时使所述计算装置执行由本发明的第一方面所定义的方法的步骤。

31、本发明的某些实施例有助于在软件容器内提供动态内核制作系统,使得容器可以用必要的驱动程序配置主机计算装置的内核。

32、本发明的某些实施例有助于在软件容器内提供内核驱动程序构建软件,从而使得构建软件能够被打包并分发到任何计算环境。

33、本发明的某些实施例有助于提供用于安装最新的内核驱动程序的方法,而不必提前针对sst终端或pos终端上运行的各种操作系统和内核版本预先构建内核驱动程序。因此,这种方法有助于在任何sst或pos终端上安装什么操作系统和内核版本方面提供灵活性。

34、本发明的某些实施例有助于提供一种在计算装置上执行其它软件容器之前执行软件容器的计算装置,所述软件容器确保计算装置上存在的内核驱动程序是正确的且是最新的。

35、本发明的某些实施例有助于提供用于构建内核驱动程序的init类型的软件容器。

36、本发明的某些实施例有助于提供一种用于确定应安装在内核上的任何预定目标驱动程序是否未安装在内核中的方法。

37、本发明的某些实施例有助于提供一种方法,用于确定是否需要在内核上安装任何驱动程序,动态构建确实需要安装在内核上的驱动程序,并且向内核提供这些构建的驱动程序以进行安装。

38、根据本发明的第四方面,提供了一种用于确定是否应在计算装置的内核上安装至少一个预定目标驱动程序的计算机实施的方法,其包括以下步骤(1)-(3)。在步骤(1)中,使用包含能在计算装置的一个或多个处理器上执行的可执行软件的至少一个软件容器元件,从所述计算装置的内核接收指示安装在所述内核上的至少一个活动驱动程序的第一数据。在步骤(2)中,将所述第一数据与指示应安装在所述内核上的至少一个预定目标驱动程序的第二数据进行比较。在步骤(3)中,响应于所述比较,确定所述预定目标驱动程序中的至少一个未安装在所述内核上。

39、根据上述第四方面,上述方法进一步包括:响应于确定所述预定目标驱动程序中存在未安装在所述内核上的至少一个选定目标驱动程序,在所述软件容器元件内构建所述选定目标驱动程序中的至少一个。

40、根据上述第四方面,上述方法进一步包括执行以下步骤(1)-(2)中的至少一个步骤。在步骤(1)中,使用动态内核制作系统dkms在所述软件容器元件中构建所述选定目标驱动程序。步骤(2)包括以下步骤(2-1)和(2-2)。在步骤(2-1)中,向所述内核提供在所述软件容器元件内构建的所述选定目标驱动程序。在步骤(2-2)中,在所述内核上安装在所述软件容器元件内构建的所述选定目标驱动程序。

41、根据上述第四方面,上述方法进一步包括执行以下步骤(1)-(9)中的任何一个步骤。在步骤(1)中,在单个软件容器元件内提供所述可执行软件作为至少定义源代码和代码的软件,所述源代码与所述预定目标驱动程序中的每一个相关联,所述代码定义如何构建所述预定目标驱动程序中的每一个。在步骤(2)中,在单个软件容器元件内提供所述可执行软件作为至少定义以下各项的软件:与所述预定目标驱动程序中的每一个相关联的源代码;用于动态内核制作系统dkms的框架;所述dkms的配置;以及可由dkms使用以构建所述预定目标驱动程序的至少一个构建工具。在步骤(3)中,在每个相应软件容器元件中提供可执行软件作为至少定义源代码和代码的软件,所述源代码与所述预定目标驱动程序中的相应预定目标驱动程序相关联,所述代码定义如何构建所述相应预定目标驱动程序。在步骤(4)中,接收所述第一数据作为指示安装在所述内核上的每个活动驱动程序的数据。在步骤(5)中,接收所述第一数据作为指示安装在所述内核上的所述至少一个活动驱动程序的驱动程序类型和驱动程序版本的数据。在步骤(6)中,响应于所述比较,确定所述预定目标驱动程序中的不存在于所述内核上或具有安装在所述内核上的过时版本的至少一个选定目标驱动程序。在步骤(7)中,将所述软件容器元件提供为init类型的软件容器元件。在步骤(8)中,将所述可执行软件提供为能独立于计算环境执行的软件。在步骤(9)中,经由所述软件容器元件,在隔离计算环境中执行所述可执行软件。

42、根据上述第四方面,上述方法进一步包括:在所述软件容器元件处接收一个或多个内核头文件。

43、根据上述第四方面,在上述方法中,将所述第一数据与所述第二数据进行比较包括查询从所述内核接收到的一个或多个文件,以确定安装在所述内核上的每个活动驱动程序的类型和版本。

44、根据上述第四方面,上述方法进一步分别执行以下步骤(1)-(2)。在步骤(1)中,将所述内核头文件以只读方式安装到所述软件容器元件中。在步骤(2)中,将所述第一数据与所述第二数据进行比较进一步包括查询所述可执行软件以确定所述至少一个预定目标驱动程序的类型和版本。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1