CN118057309A - 驱动内核模块封装方法、电子设备和存储介质 - Google Patents
驱动内核模块封装方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN118057309A CN118057309A CN202211449380.8A CN202211449380A CN118057309A CN 118057309 A CN118057309 A CN 118057309A CN 202211449380 A CN202211449380 A CN 202211449380A CN 118057309 A CN118057309 A CN 118057309A
- Authority
- CN
- China
- Prior art keywords
- driving
- kernel module
- driver
- package
- file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004806 packaging method and process Methods 0.000 title claims abstract description 28
- 238000005538 encapsulation Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 230000001172 regenerating effect Effects 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000009434 installation Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- 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/445—Program loading or initiating
-
- 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
-
- 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/4406—Loading of operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种驱动内核模块封装方法,涉及计算机技术领域,驱动内核模块封装方法包括:根据驱动内核模块配置规范文件;根据将驱动内核模块和规范文件封装成目标格式的驱动包。通过配置规范文件,定制化了目标格式的驱动包,基于目标格式的驱动包的特性,能够在系统上用简便的指令控制目标格式的驱动包,简便快捷地实现驱动包的安装、卸载和查询等操作。同时,将该驱动包安装在系统后,系统响应于系统启动指令,根据目标格式的驱动包加载驱动程序,以使驱动程序能够自动加载,本申请还提供一种电子设备和存储介质。
Description
技术领域
本申请涉及计算机技术领域,更具体而言,涉及一种驱动内核模块封装方法、电子设备和存储介质。
背景技术
在Linux中加载驱动内核模块时,用户需要找到驱动内核模块所在的目录的路径下,然后手动输入加载驱动程序的命令,实现驱动程序的加载。用户想要启动系统后,驱动程序加载,需要手动操作,操作不方便。
发明内容
鉴于以上内容,本申请提供一种驱动内核模块封装方法、电子设备和计算机可读存储介质,能够根据目标格式的驱动包加载驱动程序,使驱动程序能够自动加载。同时,能够简便快捷地实现标格式的驱动包的安装、卸载和查询等操作。
本申请第一方面提供一种驱动内核模块封装方法,系统根据驱动内核模块配置规范文件,接着,将驱动内核模块和规范文件封装成目标格式的驱动包。通过配置规范文件,定制化了目标格式的驱动包,基于目标格式的驱动包的特性,能够在系统上用简便的指令控制目标格式的驱动包,简便快捷地实现驱动包的安装、卸载和查询等操作。同时,将该驱动包安装在系统后,系统响应于系统启动指令,根据目标格式的驱动包加载驱动程序,使驱动程序能够自动加载。
作为第一方面的一种可选的实施方式,根据驱动内核模块配置规范文件的步骤可以包括:系统根据驱动内核模块生成配置文件;将配置文件和驱动内核模块集成至启动列表,以完成规范文件的配置,如此,系统根据驱动内核模块能够生成系统自动加载指令的配置文件,该配置文件够使驱动程序在系统启动后自动加载。在启动系统时,系统加载启动列表里的文件,也即是加载配置文件和驱动内核模块,从而使驱动程序自动加载。
作为第一方面的一种可选的实施方式,将配置文件和驱动内核模块集成至启动列表的步骤可以包括:系统将配置文件存放在第一预设目录的第一路径,同时将驱动内核模块存放在第二预设目录的第二路径,将第一路径的配置文件和第二路径的驱动内核模块集成至启动列表,其中,第一路径为配置文件的存储路径,第二路径为系统内核的驱动内核模块的外置存储路径。将驱动内核模块存放在系统内核的外置存储路径,可以尽量不影响系统内核的体积。
作为第一方面的一种可选的实施方式,根据驱动内核模块生成配置文件步骤之后,驱动内核模块封装方法还可以包括:重新生成系统初始化映像文件,以使配置文件生效和将配置文件和驱动内核模块集成至启动列表。重新生成系统初始化映像文件后,配置文件生效,同时可以将配置文件和驱动内核模块集成至启动列表。
作为第一方面的一种可选的实施方式,驱动内核模块封装方法还可以包括步骤:系统根据驱动内核模块定义系统参数。系统根据驱动内核模块定义系统参数,可以使后续生成的目标格式的驱动包符合系统环境。
作为第一方面的一种可选的实施方式,将驱动内核模块和规范文件封装成目标格式的驱动包的步骤可以包括:系统将驱动内核模块存放在第三预设目录,将规范文件存放在第四预设目录后,根据第三预设目录的驱动内核模块和第四预设目录的规范文件封装成目标格式的驱动包。将配置好的规范文件和驱动内核模块存放在指定的路径下,方便后续找到将配置好的规范文件,从而生成目标格式的驱动包。
作为第一方面的一种可选的实施方式,将驱动内核模块和规范文件封装成目标格式的驱动包的步骤之后,驱动内核模块封装方法还可以包括步骤:系统安装目标格式的驱动包。
作为第一方面的一种可选的实施方式,系统安装目标格式的驱动包的步骤之后,驱动内核模块封装方法还可以包括步骤:系统响应于系统启动指令,可以根据目标格式的驱动包加载所述驱动程序;或者响应于用户的相应操作指令,查询、安装或卸载所述目标格式的驱动包。
本申请第二方面提供一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述的封装方法。
本申请第三方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的封装方法。
上述第二方面和第三方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
本申请提供的技术方案带来的有益效果至少包括:系统根据驱动内核模块配置规范文件,接着,将驱动内核模块和规范文件封装成目标格式的驱动包。通过配置规范文件,定制化了目标格式的驱动包,基于目标格式的驱动包的特性,能够在系统上用简便的指令控制目标格式的驱动包,简便快捷地实现驱动包的安装、卸载和查询等操作。同时,将该驱动包安装在系统后,系统响应于系统启动指令,驱动程序能够自动加载。
附图说明
图1是本申请实施方式的驱动内核模块封装方法的流程示意图;
图2是本申请实施方式的驱动内核模块封装方法的流程示意图;
图3是本申请实施方式的驱动内核模块封装方法的流程示意图;
图4是本申请实施方式的电子设备的结构示意图。
具体实施方式
下面先对相关技术的情况做简要说明。
在Linux中加载驱动内核模块时,用户需要找到驱动内核模块所在的目录的路径下,然后手动输入加载驱动程序的命令,实现驱动程序的加载。用户想要启动系统后,驱动程序加载,需要手动操作,操作不方便。
为此,本申请实施方式提供一种驱动内核模块封装方法、电子设备和计算机可读存储介质,能够根据目标格式的驱动包加载驱动程序,使驱动程序能够自动加载。同时,能够简便快捷地实现标格式的驱动包的安装、卸载和查询等操作。
为了准确地对本申请中的技术内容进行叙述,以及为了准确地理解本发明,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
本申请将驱动程序的软件包简称为驱动包。
驱动程序是计算机软件术语,驱动程序全称为“设备驱动程序”。驱动程序是一种可以使计算机和硬件设备通信的程序,相当于硬件设备的接口,操作系统通过这个接口才能控制硬件设备的工作,例如,某一硬件设备未安装驱动程序,操作系统无法识别到该设备,从而无法控制该设备进行相应的操作。可以从硬件设备原厂官网上下载各类设备的驱动程序,下载的驱动程序可以分为已经编译完成的标准系统驱动和驱动源码包。
源码(Source Code)是指最原始程序的代码。
Linux全称GNU/Linux,是一种类UNIX操作系统,一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
内核模块又称为kernel object(kernel object,ko)文件,kernel object文件可以简写为.ko文件。内核模块是内核的某个模块,也即是说,可以将内核划分成多个模块,每个模块代表内核的某个功能。系统需要某部分功能时,可以将代表该功能的功能模块插回内核,系统就能调用该部分功能,当系统不需要该部分功能时,就卸载掉该内核模块。系统需要驱动程序驱动硬件设备工作,因此,驱动程序以内核模块的形式的存在,可以缩小系统内核的体积。本申请中,将以内核模块形式存在的驱动程序,称为驱动内核模块。
硬件设备可以包括显示器、输入设备、主板、拓展卡、电源和中央处理器(centralprocessing unit,CPU)等。
RPM(Redhat Package Manager)是基于Redhat、Centos、Fedora等Linux系统的常用软件包管理器,只需要使用一个命令就可以在系统上,将RPM格式的软件包安装、卸载和查询。
spec文件是规范文件,在Linux操作系统中用于指导rpmbuild命令构建RPM格式的软件包。
本申请的封装方法可以在Linux操作系统下实现,Linux操作系统可以安装有RPM软件包管理器。
请参阅图1,图1为本申请实施方式的驱动内核模块封装方法的流程示意图,本申请实施方式的驱动内核模块封装方法可以包括:
步骤S101:根据驱动内核模块配置规范文件。
目前,本申请的封装方法以在Linux操作系统下实现为例进行阐述。Linux操作系统上的驱动程序一般以内核模块的形式存在,也即是说,驱动内核模块是指以内核模块形式存在的驱动程序。Linux操作系统可以直接在本Linux操作系统上调取驱动内核模块。
规范文件是指spec文件,Linux操作系统获取驱动内核模块后,根据驱动内核模块配置spec文件。Linux操作系统配置完spec文件后,在后续的操作中,会根据已经配置好的spec文件执行相应的动作,从而完成RPM格式驱动包在各阶段的任务。各阶段可以包括预编译阶段、编译阶段、安装前阶段、安装阶段、清理阶段、安装后阶段、卸载前阶段和卸载后阶段等。可以分为三个部分配置spec文件,第一部分为RPM格式驱动包的相关描述,第二部分为各阶段关于RPM格式驱动包的操作,第三部分为RPM格式驱动包的配置信息。
可以理解地,spec文件是规范文件,spec文件说明了RPM格式驱动包如何被配置、安装的哪些文件、安装的目录和在Linux操作系统上安装时调用的系统级别活动等,通过配置spec文件,定制化Linux操作系统在各阶段对RPM格式驱动包的操作。
首先,配置第一部分关于RPM格式驱动包的相关描述。相关描述可以包括:描述RPM格式驱动包的内容概要,在配置时可以使用标签Summary;RPM格式驱动包的名称,在配置时可以使用标签Name;驱动程序的主版本号,在配置时可以使用标签Version;驱动程序的发行系列号,在配置时可以使用标签Release;驱动程序的授权方式,授权方式可以使用GPLv2,在配置时可以使用标签License;RPM格式驱动包里有几个组,在配置时可以使用标签Group。也即是说,通过这些标签可以存放RPM格式驱动包的基本信息。Linux操作系统可以使用%define和标签定义RPM格式驱动包,例如可以%define module<module_name>;%define version<version>;%define kernel%(uname-r)等。其中<module_name>、<version>填入驱动包名称及驱动包的版本。
其次,配置第二部分关于RPM格式驱动包在各阶段的操作。
在预编译阶段,可以执行解压驱动源码压缩包成驱动源码包和生成用于开机自动加载的配置文件的操作,例如生成depmod配置文件和darcut的配置文件。在编译阶段,可以进行编译驱动源码包的操作,将驱动源码编译成驱动程序。在安装阶段,可以执行指定RPM格式驱动包中的ko的文件、depmod的配置文件和dracut配置文件的安装路径的操作。在清理阶段,可以执行清理的多余的中间文件的操作。在安装后阶段,可以执行depmod和darcut命令,使depmod和darcut的配置文件生效的操作,在卸载后阶段,可以执行depmod和darcut命令,使depmod和darcut的配置文件失效的操作。
最后,配置第三部分关于RPM格式的RPM格式驱动包的配置信息。配置信息可以包括待安装文件列表和RPM格式驱动包版本变更记录。
步骤S102:将驱动内核模块和规范文件封装成目标格式的驱动包。
spec文件是构建RPM格式驱动包的工具,因此,目标格式的驱动包是指RPM格式驱动包。可以通过rpmbuild指令将驱动内核模块和已配置好的spec文件封装成RPM格式驱动包。
可以理解地,用spec文件将驱动内核模块封装成RPM格式驱动包,并将该驱动包安装在Linux操作系统,Linux操作系统响应于Linux操作系统的启动指令后,驱动程序能够自动加载。同时,Linux操作系统利用RPM格式驱动包的软件包管理器,能够在Linux操作系统上用简便的指令控制RPM格式驱动包,简便快捷地实现驱动包的安装、卸载和查询等操作。
如此,系统根据驱动内核模块配置规范文件,接着,将驱动内核模块和规范文件封装成目标格式的驱动包。通过配置规范文件,定制化了目标格式的驱动包,基于目标格式的驱动包的特性,能够在系统上用简便的指令控制目标格式的驱动包,简便快捷地实现驱动包的安装、卸载和查询等操作。同时,将该驱动包安装在系统后,系统响应于系统启动指令,根据目标格式的驱动包加载驱动程序,以使驱动程序能够自动加载。
请参阅图2,作为一种可选的实施方式,步骤S101:根据驱动内核模块配置规范文件可以包括以下步骤:
S201:根据驱动内核模块生成配置文件。
要实现开机自动加载,需要执行系统自动加载的相关指令,例如,depmod和dracut指令,因此,用于开机自动加载的配置文件指该相关指令的配置文件,例如depmod的配置文件和dracut的配置文件。也即说,配置文件为Linux操作系统自动加载指令的配置文件。开机自动加载配置文件能够使驱动程序在开机后自动加载。在配置spec文件的预编译阶段时,Linux操作系统生成驱动内核模块的开机自动加载配置文件。开机自动加载配置文件包括depmod配置文件和dracut配置文件。例如,Linux操作系统可以按照以下代码配置spec文件:
为了构建RPM格式驱动包,需要先准备打包环境,包括准备各种文件存放的目录。因此,在配置spec文件之前,可以通过#rpmdev-setuptree命令来创建rpmbuild的工作目录。后续通过各种命令生成的各种文件可以置于该目录下。也即是说,用于开机自动加载的配置文件和驱动内核模块,可以放置在该rpmbuild的工作目录中。其中,$RPM_SOURCE_DIR为RPM的默认参数,为当前rpmbuild目录中的SOURCE路径。
可以理解地,在安装RPM格式驱动包之前,先生成用于开机自动加载的配置文件,为后续安装RPM格式驱动包做准备。同时,用于开机自动加载的配置文件能够使驱动程序在开机后自动加载。
如此,根据驱动内核模块生成系统自动加载指令的配置文件,可以配置规范文件。该配置文件够使驱动程序在系统启动后自动加载。
S202:将配置文件存放在第一预设目录的第一路径。
在配置spec文件的安装阶段,Linux操作系统将生成的用于开机自动加的载配置文件,存放在rpmbuild的工作目录的BUILDROOT子目录,具体为BUILDROOT子目录中存放配置文件的储存目录,该储存目录有映射的存储路径,例如存储路径etc/depmod.d/%{module}.conf和存储路径/etc/dracut.conf.d。也即是说,第一预设目录是指rpmbuild的工作目录中的配置文件的存储目录,第一路径是指配置文件的存储路径。
S203:将驱动内核模块存放在第二预设目录的第二路径;
同时,Linux操作系统内核有用于存放文件的目录,分为内部存储目录和外置存储目录,内部存储目录映射有内部存储路径,外置存储目录映射有外置储存路径。内部存储路径占用内核的体积,而外置存储路径不影响内核的体积。具体地,Linux操作系统将驱动内核模块存放在rpmbuild的工作目录的BUILDROOT子目录,具体为BUILDROOT路径子目录中存放的Linux操作系统内核的外置存储路径,该路径是内核标准的驱动内核模块的外置路径,例如路径/lib/modules/%{kernel}/extra。也即是说第二预设目录为外置存储目录,第二路径为Linux操作系统内核的驱动内核模块的外置存储路径。
可以理解地,将驱动内核模块存放在Linux操作系统内核的外置存储路径,可以尽量不影响Linux操作系统内核的体积。
步骤S204:重新生成系统初始化映像文件,以使配置文件生效。
具体地,Linux操作系统在完成RPM格式驱动包的安装后,和卸载掉RPM格式驱动包后,也即是在安装后和卸载阶段,可以执行depmod和dracut命令,重新生成系统初始化映像文件,系统初始化映像文件为initiramfs文件。使得用于开机自动加载配置文件在完成RPM格式驱动包的安装后生效,和卸载掉RPM格式驱动包后失效。
因此,Linux操作系统在配置spec文件的安装后和卸载阶段时,可以配置重新生成系统初始化映像文件,也即initiramfs文件的操作。
将配置文件和驱动内核模块集成至启动列表,以完成规范文件的配置的细化步骤:
步骤S205:将第一路径的配置文件和第二路径的驱动内核模块集成至启动列表,以完成规范文件的配置。
最后,将在配置文件的储存路径的配置文件和在Linux操作系统内核的外置存储路径的驱动内核模块集成至启动列表,从而配置规范文件。
例如,Linux操作系统可以按照以下代码配置spec文件,也即是配置步骤S202至S203:
如此,将配置文件存放在第一预设目录的第一路径,同时将驱动内核模块存放在第二预设目录的第二路径,根据第一路径的配置文件和第二路径的驱动内核模块可以集成至启动列表。将驱动内核模块存放在第二路径,可以尽量不影响Linux操作系统内核的体积。
位于rpmbuild的工作目录的用于开机自动加载配置文件的生效后,和同位于rpmbuild的工作目录的驱动内核模块可以集成至启动列表。
Linux操作系统在配置spec文件时,可以将用于开机自动加载的配置文件和驱动内核模块都放在rpmbuild的工作目录中,一起封装成RPM格式驱动包。当RPM格式驱动包安装在Linux操作系统上后,Linux操作系统将用于开机自动加载的配置文件和驱动内核模块集成至启动列表。
可以理解地,当启动Linux操作系统时,Linux操作系统会自动加载启动列表中的文件,因此,将用于开机自动加载的配置文件和驱动内核模块放在rpmbuild的工作目录中,集成至启动列表。在启动Linux操作系统时,会自动加载开机自动加载的配置文件和驱动内核模块,从而自动加载驱动程序。
如此,系统根据配置文件和驱动内核模块集成至启动列表,以配置规范文件。在启动系统时,系统加载启动列表里的文件,也即是加载配置文件和驱动内核模块,从而使驱动程序自动加载。
请参阅图3,作为一种可选的实施方式,步骤S102:将驱动内核模块和规范文件封装成目标格式的驱动包可以包括以下步骤:
S301:将驱动内核模块存放在第三预设目录。
rpmbuild的工作目录还包括用于存放spec文件的目录,用代码可以表示为~/rpmbuild/SPECS,包括用于存放源码的目录,用代码可以表示为~/rpmbuild/SOURCES/。包括用于存放rpm格式驱动包的目录,用代码可以表示为~/rpmbuild/RPMS/。也即是说,第三预设目录是指,完成配置spec文件后,rpmbuild的工作目录的源码的存储目录,用代码可以表示为~/rpmbuild/SOURCES/。Linux操作系统在配置完spec文件后,可以将驱动内核模块存放在源码的存储目录。
S302:将规范文件存放在第四预设目录。
第四目录是指spec文件的存储目录,用代码可以表示为~/rpmbuild/SPECS。
S303:将第三目录的驱动内核模块和第四目录的规范文件封装成目标格式的驱动包。
rpmbuild命令可以用于创建RPM格式驱动包。Linux操作系统可以使用rpmbuild–bs<spec>命令将已经配置好的spec文件和驱动内核模块封装成RPM格式驱动包。
因此,Linux操作系统在配置好spec文件和获取驱动内核模块后,将spec文件和驱动内核模块分别存放在rpmbuild的工作目录下,然后在spec文件存放的目录下,可以执行rpmbuild命令,生成RPM格式驱动包,最后将RPM格式驱动包存放在rpmbuild的工作目录下保存。
在一个示例中,Linux操作系统将已经配置好的spec文件存放在/root/rpmbuild/SPECS下,将驱动内核模块存放在/root/rpmbuild/SOURCES/下,接着在/root/rpmbuild/SPECS下执行rpmbuild–bs<spec>命令,生成RPM格式驱动包。最后,将生成的RPM格式驱动包存放在/root/rpmbuild/RPMS/并保存。
可以理解地,将已经配置好的spec文件和驱动内核模块存放在指定的目录下,方便后续找到配置好的spec文件,封装成RPM格式驱动包。
如此,系统将驱动内核模块存放在第三预设目录,同时将规范文件存放在第四预设目录,最后根据第三预设目录的驱动内核模块和第四预设目录的规范文件封装成目标格式的驱动包。将配置好的规范文件和驱动内核模块存放在指定的目录下,方便后续找到将配置好的规范文件,从而生成目标格式的驱动包。
作为一种可选的实施方式,驱动内核模块封装方法还可以包括步骤:
S400:根据驱动内核模块定义系统参数。
在配置spec文件的编译阶段,Linux操作系统可以利用标签和%define定义当前Linux操作系统的参数,当前Linux操作系统的参数包括要封装的RPM格式驱动包的名称和版本等。例如按以下代码配置:
其中,<module_name>填入驱动包的名称,<version>填入驱动包的版本。
可以理解地,定义Linux操作系统参数可以使后续生成的RPM格式驱动包符合当前Linux操作系统环境,防止生成的RPM格式驱动包因不匹配环境Linux操作系统而无法安装。
如此,根据驱动内核模块定义系统参数,从而完成规范文件的配置,可以使后续生成的目标格式的驱动包符合当前系统环境。
作为一种可选的实施方式,步骤102:将驱动内核模块和规范文件封装成目标格式的驱动包之后还可以包括以下步骤:
S501:安装目标格式的驱动包。
首先,利用本申请上述的全部或部分实施方式的封装方法,封装而成RPM格式驱动包后,安装RPM格式驱动包。具体地,在存放RPM格式驱动包的路径下找到RPM格式驱动包,然后执行安装命令,将RPM格式驱动包安装在Linux操作系统中,以完成驱动程序在Linux操作系统上的部署。
在一个示例中,在~/rpmbuild/RPMS/路径下找到RPM格式驱动包后,执行rpm–ivh<RPM>命令后,RPM格式驱动包安装在Linux操作系统中。
可以理解地,可以用一个指令就将RPM格式驱动包安装在Linux操作系统上,从而完成驱动程序在Linux操作系统上的部署,操作简便。也即是说,Linux操作系统利用RPM格式驱动包的软件包管理器,能够在Linux操作系统上用简便的指令控制RPM格式驱动包,简便快捷地实现驱动程序安装、卸载和查询等操作。
作为一种可选的实施方式,步骤501:安装目标格式的驱动包之后还可以包括以下步骤:
S601:响应于系统启动指令,根据所述目标格式的驱动包自动加载驱动程序;
S602:响应于相应的操作指令,查询、安装或卸载所述目标格式的驱动包。
Linux操作系统部署了RPM格式驱动包后,用户进行重启Linux操作系统的操作后,Linux操作系统响应于该操作的指令,自动加载驱动程序,从而驱动Linux操作系统的硬件设备正常工作。
可以理解地,完成RPM格式驱动包在Linux操作系统上的部署后,响应于Linux操作系统启动指令后,驱动程序能够自动加载,驱动Linux操作系统的硬件设备正常工作。
在Linux操作系统上用相应的指令控制RPM格式驱动包,可以简便快捷地实现RPM格式驱动包的安装、卸载和查询等操作。同时,Linux操作系统安装了RPM格式驱动包后,用户进行查询驱动程序的相关信息的操作,Linux操作系统响应于该操作的指令,显示驱动程序的相关信息。相关信息包括驱动程序的状态和版本等。
在一个示例中,用户对Linux操作系统利用rpm-qa指令查询驱动程序的版本,Linux操作系统响应于用户的操作指令,显示驱动程序的版本信息。
可以理解地,目前的Linux操作系统上的驱动程序,用户无法直观地查询到该驱动程序的相关信息。而本申请实施方式部署了RPM格式驱动包后,用户可以直接利用软件包管理器对应的简便指令,查询到驱动程序的相关信息。
可以理解地,安装了目标格式的驱动包后,响应于Linux操作系统启动指令时,驱动程序能够自动加载。同时目标格式的驱动包能够被Linux操作系统用一个的指令控制,从而简便快捷地实现驱动程序安装、卸载或查询等操作。
如此,系统安装目标格式的驱动包。系统安装目标格式的驱动包后,系统响应于系统启动指令,可以根据目标格式的驱动包加载所述驱动程序;或者响应于用户的相应操作指令,查询、安装或卸载所述目标格式的驱动包。
请参阅图4所示,为本申请实施方式提供的电子设备100的一种结构示意图。在一个实施方式中,电子设备100包括存储器101及至少一个处理器102。本领域技术人员应该了解,图4示出的电子设备100的结构并不构成本申请实施方式的限定,电子设备100还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。
作为一种可选的实施方式,所述电子设备100包括一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的终端,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。作为一种可选的实施方式,存储器101用于存储程序代码和各种数据。所述存储器101可以包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-OnlyMemory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
作为一种可选的实施方式,所述至少一个处理器102可以包括集成电路,例如可以包括单个封装的集成电路,也可以包括多个相同功能或不同功能封装的集成电路,包括微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器102是所述控制器的控制核心(Control Unit),通过运行或执行存储在所述存储器101内的程序或者模块,以及调用存储在所述存储器101内的数据,以执行电子设备100的各种功能和处理数据。上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的部分。所述存储器101中存储有程序代码,且所述至少一个处理器102可调用所述存储器101中存储的程序代码以执行相关的功能。在本申请的一个实施方式中,所述存储器101存储多个指令,所述多个指令被所述至少一个处理器102所执行以实现上述驱动内核模块封装方法。具体地,所述至少一个处理器102对上述指令的具体实现方法对应实施方式中相关步骤的描述,在此不赘述。
本申请实施方式还提供了一种存储介质。其中,所述存储介质中存储有计算机指令,所述指令在计算设备上运行时,使得所述计算设备可以执行前述实施方式提供的驱动内核模块封装方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施方式描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施方式中的对应过程,在此不再赘述。
在本申请所提供的几个实施方式中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中注意,上述仅为本申请的较佳实施方式及所运用的技术原理。
本领域技术人员会理解,本发明不限于这里所述的特定实施方式,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施方式对本申请进行了较为详细的说明,但是本发明不仅仅限于以上实施方式,在不脱离本发明的构思的情况下,还可以包括更多其他等效实施方式,均属于本发明的保护范畴。
Claims (10)
1.一种驱动内核模块封装方法,其特征在于,所述驱动内核模块封装方法包括:
根据驱动内核模块配置规范文件;
将所述驱动内核模块和所述规范文件封装成目标格式的驱动包。
2.根据权利要求1所述的驱动内核模块封装方法,其特征在于,所述根据驱动内核模块配置规范文件包括:
根据所述驱动内核模块生成配置文件;
将所述配置文件和所述驱动内核模块集成至启动列表,以完成所述规范文件的配置。
3.根据权利要求2所述的驱动内核模块封装方法,其特征在于,所述将所述配置文件和所述驱动内核模块集成至启动列表包括:
将所述配置文件存放在第一预设目录的第一路径,其中,所述第一路径为所述配置文件的存储路径;
将所述驱动内核模块存放在第二预设目录的第二路径,其中,所述第二路径为系统内核的所述驱动内核模块的外置存储路径;
将所述第一路径中的所述配置文件和所述第二路径中的所述驱动内核模块集成至所述启动列表。
4.根据权利要求2所述的驱动内核模块封装方法,其特征在于,所述根据所述驱动内核模块生成配置文件之后,所述驱动内核模块封装方法还包括:
重新生成系统初始化映像文件,以使所述配置文件生效。
5.根据权利要求1所述的驱动内核模块封装方法,其特征在于,所述驱动内核模块封装方法还包括:
根据所述驱动内核模块定义系统参数。
6.根据权利要求1所述的驱动内核模块封装方法,其特征在于,所述将所述驱动内核模块和所述规范文件封装成目标格式的驱动包包括:
将所述驱动内核模块存放在第三预设目录;
将所述规范文件存放在第四预设目录;
根据所述第三预设目录的所述驱动内核模块和所述第四预设目录的所述规范文件封装成所述目标格式的驱动包。
7.根据权利要求1所述的驱动内核模块封装方法,其特征在于,所述根据所述驱动内核模块和所述规范文件封装成目标格式的驱动包之后,所述驱动内核模块封装方法还包括:
安装所述目标格式的驱动包。
8.根据权利要求7所述的驱动内核模块封装方法,其特征在于,所述安装所述目标格式的驱动包之后,所述驱动内核模块封装方法还包括:
响应于系统启动指令,根据所述目标格式的驱动包自动加载驱动程序;或者
响应于相应的操作指令,查询、安装或卸载所述目标格式的驱动包。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1-8任一项所述的驱动内核模块封装方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的驱动内核模块封装方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211449380.8A CN118057309A (zh) | 2022-11-18 | 2022-11-18 | 驱动内核模块封装方法、电子设备和存储介质 |
TW112101379A TWI834472B (zh) | 2022-11-18 | 2023-01-12 | 驅動內核模組封裝方法、電子設備與存儲介質 |
US18/230,726 US20240168768A1 (en) | 2022-11-18 | 2023-08-07 | Method for packaging driver kernel module, electronic device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211449380.8A CN118057309A (zh) | 2022-11-18 | 2022-11-18 | 驱动内核模块封装方法、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118057309A true CN118057309A (zh) | 2024-05-21 |
Family
ID=91068876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211449380.8A Pending CN118057309A (zh) | 2022-11-18 | 2022-11-18 | 驱动内核模块封装方法、电子设备和存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240168768A1 (zh) |
CN (1) | CN118057309A (zh) |
TW (1) | TWI834472B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR0309383A (pt) * | 2002-04-19 | 2005-03-08 | Radixs Pte Ltd | Sistema e método para uso de múltiplas aplicações |
US20070271552A1 (en) * | 2006-05-19 | 2007-11-22 | Pulley Robert A | System and method for packaging software |
US8533707B2 (en) * | 2008-03-04 | 2013-09-10 | Lsi Corporation | Linux matrix compilation system and method |
CN101840337B (zh) * | 2010-05-06 | 2013-01-23 | 浪潮电子信息产业股份有限公司 | 一种适用于捕包应用的裁减系统定制方法 |
US10936331B2 (en) * | 2017-02-23 | 2021-03-02 | International Business Machines Corporation | Running a kernel-dependent application in a container |
-
2022
- 2022-11-18 CN CN202211449380.8A patent/CN118057309A/zh active Pending
-
2023
- 2023-01-12 TW TW112101379A patent/TWI834472B/zh active
- 2023-08-07 US US18/230,726 patent/US20240168768A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
TWI834472B (zh) | 2024-03-01 |
US20240168768A1 (en) | 2024-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105745617B (zh) | 用于预启动固件更新的选择性功率管理 | |
US7669201B2 (en) | System and method for common file installation | |
US8527744B2 (en) | Board module for providing alternative board functions which are not called by UEFI compatible programs for driving platform service in silicon components | |
JP5307706B2 (ja) | オペレーティングシステムの段階的ブート処理 | |
US7181610B2 (en) | Method and system to encapsulate a driver written for an operating system (OS) runtime environment in an OS independent environment firmware extension | |
US20170228228A1 (en) | Remote launch of deploy utility | |
EP2675110A2 (en) | Method, system and terminal for system update between mobile communication terminals | |
JP2006525575A (ja) | ジャバマイクロデバイスにおけるジャバアプリケーションのデバッグ用の、オフデバイスクラス/リソースローディング方法、システム及びコンピュータプログラム製品 | |
IL181137A (en) | Adaptation of software and operating systems for unpredictable / changing hardware environments | |
US10747523B2 (en) | Methods of updating firmware components, computer systems and memory apparatus | |
US20070282801A1 (en) | Dynamically creating and executing an application lifecycle management operation | |
US9141400B2 (en) | Technique for deploying operating systems in a virtualized environment | |
WO2017052528A1 (en) | Selecting and loading firmware volumes | |
JP2008523519A (ja) | 複数のプラグインを含む電子システムを初期化する方法 | |
WO2017066183A1 (en) | Software architecture for embedded systems | |
US8726258B2 (en) | Supporting multiple hardware components in UEFI | |
CN113064637B (zh) | 从分离的bios映像文件启动的方法及系统 | |
CN113821220A (zh) | 一种linux操作系统的安装方法和装置 | |
CN118057309A (zh) | 驱动内核模块封装方法、电子设备和存储介质 | |
KR100775431B1 (ko) | 임베디드 시스템 및 임베디드 시스템의 펌웨어 업데이트방법 | |
CN118057310A (zh) | 驱动包生成方法、驱动程序部署方法和相关设备 | |
TW202422328A (zh) | 驅動內核模組封裝方法、電子設備與存儲介質 | |
CN115291951A (zh) | Uefi启动方法、装置、电子设备以及存储介质 | |
KR20070060448A (ko) | 2단계 부트로더를 이용한 시스템 업그레이드 장치 및 방법 | |
KR100463838B1 (ko) | 유아이에이 시스템을 위한 부트로더의 프로그램 다운로드및 엔에프에스 개발환경 지원방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |