WO2017166447A1 - 内核模块加载方法和装置 - Google Patents

内核模块加载方法和装置 Download PDF

Info

Publication number
WO2017166447A1
WO2017166447A1 PCT/CN2016/086411 CN2016086411W WO2017166447A1 WO 2017166447 A1 WO2017166447 A1 WO 2017166447A1 CN 2016086411 W CN2016086411 W CN 2016086411W WO 2017166447 A1 WO2017166447 A1 WO 2017166447A1
Authority
WO
WIPO (PCT)
Prior art keywords
kernel
module
target
loaded
loading
Prior art date
Application number
PCT/CN2016/086411
Other languages
English (en)
French (fr)
Inventor
郑龙日
夏良钊
卢永强
包沉浮
张煜龙
韦韬
Original Assignee
百度在线网络技术(北京)有限公司
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 百度在线网络技术(北京)有限公司 filed Critical 百度在线网络技术(北京)有限公司
Publication of WO2017166447A1 publication Critical patent/WO2017166447A1/zh

Links

Images

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/445Program loading or initiating
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Definitions

  • the present application relates to the field of computers, and in particular to the field of operating systems, and in particular, to a kernel module loading method and apparatus.
  • kernel program In the development of a kernel program, it is usually necessary to generate a kernel module containing the source code of the kernel program, and then load the kernel module into the kernel, thereby enabling the kernel program to run in the kernel.
  • a kernel module when a kernel module is loaded into the kernel, the usual way is to configure the parameters that the kernel needs to verify during the kernel module loading process in the kernel module, and then recompile the kernel module and load it into the kernel.
  • kernel versions due to the variety of kernel versions, the parameters that need to be verified by the kernel in the kernel module loaded on a version of the kernel are fixed, so that the kernel module can only be loaded on one version of the kernel, so that the kernel module Applicability is limited and development costs are increased.
  • the present application provides a kernel module loading method and apparatus for solving the technical problems existing in the above background art.
  • the present application provides a kernel module loading method, the method comprising: acquiring feature information of a target kernel in response to a loading operation of loading a kernel module to be loaded into a target kernel, wherein the target kernel is loaded by a kernel module to be loaded After running the kernel; based on the feature information, configuring the loading information corresponding to the kernel module to be loaded, wherein the loading letter
  • the information includes: information verified by the target kernel for loading the kernel module to the target kernel; and loading the kernel module to be loaded into the target kernel based on the loading information.
  • the present application provides a kernel module loading apparatus, the apparatus comprising: an obtaining unit configured to acquire feature information of a target kernel in response to a loading operation of loading a kernel module to be loaded into a target kernel, wherein the target kernel is a kernel to be loaded after the kernel module is loaded; the configuration unit is configured to configure loading information corresponding to the kernel module to be loaded based on the feature information, where the loading information includes: the core module is verified by the target kernel. Information loaded into the target kernel; a load unit configured to load the kernel module to be loaded into the target kernel based on the loading information.
  • the kernel module loading method and apparatus acquires feature information of a target kernel in response to a loading operation of loading a kernel module to be loaded into a target kernel; and configuring loading information corresponding to the kernel module to be loaded based on the feature information; Information, loading the kernel module to be loaded into the target kernel.
  • the loading information of the kernel version parameter, the kernel symbol verification parameter, the kernel module loading function pointer, the kernel module unloading function pointer, etc. in the ELF file corresponding to the kernel module is directly performed. Modifications make the loading information suitable for the verification of the target kernel, and the kernel module can be loaded into the target kernel. That is, the kernel module is loaded in different versions of the kernel without recompiling, which enhances the applicability of the kernel module and saves development costs.
  • FIG. 1 is an exemplary system architecture diagram to which the present application can be applied;
  • FIG. 2 shows a flow diagram of one embodiment of a kernel module loading method in accordance with the present application
  • FIG. 3 shows an exemplary flowchart of a kernel module loading method in the present application
  • FIG. 4 is a block diagram showing the structure of an embodiment of a kernel module loading device according to the present application.
  • FIG. 5 is a schematic structural diagram of a computer system suitable for implementing a terminal device or a server of an embodiment of the present application.
  • FIG. 1 illustrates an exemplary system architecture 100 of an embodiment of a kernel module loading method or apparatus to which the present application may be applied.
  • system architecture 100 can include terminal devices 101, 102, 103, network 104, and server 105.
  • the network 104 is used to provide a medium for the transmission link between the terminal devices 101, 102, 103 and the server 105.
  • Network 104 may include various types of connections, such as wired, wireless transmission links, or fiber optic cables, to name a few.
  • the user can interact with the server 105 over the network 104 using the terminal devices 101, 102, 103 to receive or transmit messages and the like.
  • Various communication applications such as an instant messaging application, a browser application, a search application, a word processing application, and the like, may be installed on the terminal devices 101, 102, and 103.
  • the terminal devices 101, 102, 103 may be various electronic devices having a display screen and supporting network communication, including but not limited to smart phones, tablets, e-book readers, MP3 players (Moving Picture Experts Group Audio Layer III, dynamic The video specialist compresses the standard audio layer 3), MP4 (Moving Picture Experts Group Audio Layer IV) player, laptop portable computer and desktop computer, and the like.
  • MP3 players Motion Picture Experts Group Audio Layer III, dynamic The video specialist compresses the standard audio layer 3
  • MP4 Moving Picture Experts Group Audio Layer IV
  • the server 105 can store the feature information of the kernel of the multiple versions.
  • the feature information of the kernel of the operating system on the terminal can be fed back to the terminal device, so that the terminal device can
  • the kernel module is loaded in the target kernel by configuring the loading information of the kernel module according to the feature information.
  • terminal devices, networks and servers in Figure 1 is merely illustrative. Sexual. Depending on the implementation needs, there can be any number of terminal devices, networks, and servers.
  • FIG. 2 illustrates a flow 200 of one embodiment of a kernel module loading method in accordance with the present application.
  • the kernel module loading method provided by the embodiment of the present application is generally performed by the terminal devices 101, 102, and 103 in FIG. The method includes the following steps:
  • Step 201 Acquire feature information of the target kernel in response to a loading operation of loading the kernel module to be loaded into the target kernel.
  • the target kernel is the kernel that the kernel module to be loaded runs after loading.
  • the feature information of the target kernel for loading the kernel module may be first acquired in response to the loading operation on the loaded kernel module.
  • the Linux kernel program can be loaded into the kernel through kernel module loading.
  • kernel module loading For example, when developing a Linux device driver, you can first generate a Linux kernel module that contains the Linux device driver, and then load the Linux kernel module into the kernel. Thus, the Linux device driver can be called in the kernel.
  • the feature information includes: a kernel version parameter, a kernel symbol check parameter, a kernel module load function pointer, and a kernel module unload function pointer.
  • acquiring the feature information of the target kernel includes: acquiring feature information of the target kernel by using a proc file system of the target kernel.
  • the kernel version parameter that is, the vermagic parameter, the kernel symbol checksum parameter, the CRC parameter of the kernel symbol, and the kernel module load function pointer can be found through the proc file system of the Linux kernel.
  • the kernel module unloads the function pointer.
  • Step 202 Configure loading information corresponding to the kernel module to be loaded based on the feature information.
  • the loading information includes information that is verified by the target kernel to load the kernel module to the target kernel.
  • Linux module loading mechanism when the kernel module needs to be loaded into the Linux kernel, Enter the command insmod on the console provided by the Linux operating system.
  • the insmod command can load kernel modules into the kernel via the system call init_module.
  • the linux kernel After calling the insmod command, the linux kernel first checks whether the kernel module conforms to the ELF (Executable and Linkable Format) format. If it does not, the kernel refuses to load the kernel module.
  • ELF Executable and Linkable Format
  • the ELF file corresponding to the kernel module can be generated, and the ELF file contains parameters that need to be verified during the kernel module loading process.
  • the linux kernel can read the parameters to be verified from the ELF file corresponding to the kernel module for verification.
  • the parameters that the linux kernel needs to verify include: the kernel version parameter, that is, the vermagic parameter, the kernel symbol checksum parameter, that is, the CRC parameter of the kernel symbol, the kernel module load function pointer, and the kernel module unload function pointer.
  • the kernel version parameter can be stored in the data segment .modinfo data segment of the ELF file corresponding to the kernel module.
  • the kernel verifies the kernel version parameters, that is, whether the kernel version parameter in the kernel module is consistent with the kernel version parameter of the kernel itself. If it is inconsistent, the kernel module cannot be loaded in the kernel.
  • the checksum parameters of the kernel symbol can be stored in the data segment __versions data segment of the ELF file corresponding to the kernel module.
  • the kernel verifies the saved kernel symbol checksum parameters in the __versions data segment, that is, whether the kernel symbol checksum parameters of the kernel module and the kernel symbol check of the kernel itself are verified. Consistent with the parameters, if they are inconsistent, the kernel symbol cannot be loaded.
  • the kernel module's kernel module load function init function is executed to initialize the kernel module.
  • the kernel module's kernel module exit function is executed.
  • the this_module structure is included, the this_module structure contains relocation information, and the relocation information includes a kernel module load function pointer pointing to the storage address of the kernel module load function in the kernel, and the kernel module uninstall function is in the kernel. The kernel module unloads the function pointer for the storage address.
  • the kernel module load function pointer and the kernel module unload function pointer point to different addresses. Therefore, in order to apply the kernel module to load into multiple different versions of the kernel, you need to modify the kernel version parameters, kernel symbol checksum parameters in the kernel module, and you need to modify the kernel module load function pointer and kernel module in the relocation information.
  • the function pointer is unloaded so that the kernel module's kernel version parameter, kernel symbol checksum parameter, kernel module load function pointer, kernel module unload function pointer are consistent with the kernel kernel load function pointer of the target kernel, and the kernel module unload function pointer.
  • configuring, according to the feature information, the loading information corresponding to the kernel module to be loaded includes: configuring a value of a kernel version parameter field in an executable file corresponding to the kernel module as the kernel version. Parameter; configures the value of the kernel symbol check parameter field in the executable file corresponding to the kernel module as the kernel symbol check parameter.
  • the module load function pointer and the module unload function pointer in the executable file corresponding to the kernel module are configured as a module load function pointer and a module unload function pointer.
  • the target kernel can read kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, kernel module unload function pointers from the ELF file corresponding to the kernel module, thereby Verify that the kernel module is loaded into the target kernel.
  • the loading information includes a kernel version loading function pointer, a kernel module unloading function pointer, a kernel version loading parameter, and a kernel symbol checksum parameter, which are stored in a corresponding ELF file in the kernel module. Kernel module load function pointer, kernel module unload function pointer.
  • the method further includes: determining a storage address of a kernel function or a variable indicated by a kernel symbol referenced in the kernel module in the target kernel; and storing the address as a link address of the kernel symbol.
  • the kernel function indicated by the kernel symbol or the change in the kernel The addresses in the kernel are also different. Therefore, for the kernel symbol referenced in the kernel module indicating the kernel function or the variable in the kernel, the storage address of the kernel function or the variable in the kernel in the target kernel can be determined first, and then the storage address is configured as a link of the kernel symbol. address.
  • a kernel function is called in a kernel module or a variable in the kernel is accessed, since the kernel function or a variable in the access kernel is already being linked, it is replaced with the corresponding storage address in the target kernel, so that the target kernel can be called.
  • the function corresponding to the kernel symbol or the variable in the kernel corresponding to the kernel symbol.
  • the kernel function may also be invoked in the following manner: a function function for finding the address of the kernel function is implemented in the kernel module, and all kernel module codes can be obtained through the function function when the kernel function is needed. The address to the calling kernel function in the target kernel. Then, reference is made through the kernel function pointer, thereby eliminating the kernel version dependency caused by the kernel module's code directly calling the kernel function.
  • a structure of a parameter type required to transfer parameter data may be implemented in a kernel module, and a function pointer in the structure may occupy a place in a specific function address form. This allows data to be passed to the kernel module as parameters when loading kernel modules into the kernel. Before the kernel module is loaded into the target kernel, the in-structure function pointer can be assigned the address of the referenced kernel function in the target kernel.
  • Step 203 Load the kernel module to be loaded into the target kernel based on the loading information.
  • the kernel module to be loaded can be loaded into the target kernel by using the post-configuration loading information.
  • the insmod command can load kernel modules into the kernel via the system call init_module.
  • the target kernel obtains kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, and kernel module unload function pointers from the ELF file corresponding to the kernel module. Then, it compares with the target kernel's own kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, and kernel module unload function pointers.
  • the kernel symbol checksum parameter the kernel module load function pointer
  • the kernel module uninstall function the kernel module uninstall function.
  • the pointers are the same.
  • the kernel module can be loaded by verification. Go to the target kernel.
  • FIG. 3 shows an exemplary flowchart of the kernel module loading method in the present application.
  • Step 301 Collect the parameters required by all kernel modules during the loading process.
  • the parameters required by the kernel module during the loading process may include, but are not limited to, kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, kernel module unload function pointers.
  • Step 302 Acquire attribute information of the target kernel.
  • the attribute information of the target kernel can be obtained through the proc file system of the Linux kernel.
  • the attribute information may include, but is not limited to, the architecture of the processor on which the kernel is running, and the Linux kernel version.
  • Step 303 Search for feature information of the target kernel corresponding to the attribute information in the cloud.
  • Kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, kernel module unload function pointers for different processor architectures, different kernel versions can be pre-collected.
  • the attribute information of the processor running on the kernel of the target kernel, the Linux kernel version, and the kernel version parameters, the kernel symbol checksum parameters, the kernel module load function pointer, and the kernel module unload function pointer are stored in the cloud. Therefore, when the kernel module is loaded into the kernel on the terminal, the query request may be sent to the cloud, and the cloud may return the attribute information to the terminal according to the architecture of the processor in which the kernel of the target kernel is running, the attribute version of the Linux kernel, and the like.
  • Corresponding kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, kernel module unload function pointers for the target kernel are stored in the cloud.
  • kernels there are also special restrictions on kernel module loading.
  • the kernel of the Android system is the Linux kernel, and the Linux kernel verifies the checksum value of the kernel module to determine whether the kernel module is compiled simultaneously with the kernel.
  • the checksum value of the kernel module for the target kernel can be obtained from the cloud, so that the kernel module is loaded on the target kernel by verification.
  • Step 304 Find feature information of the target kernel locally.
  • kernel symbol checksum parameters When the kernel does not find the kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, kernel module unload function pointers, etc. for the target kernel, etc. Further searching can be done locally. Can be found in the kernel image file, memory device file, proc file system. For example, when a kernel module of the same type already loaded in the target kernel is found, kernel version parameters, kernel symbol checksum parameters, kernel module load function pointers, kernel module unload function pointers can be obtained from the kernel module.
  • Step 305 Set a corresponding field in the ELF file corresponding to the kernel module.
  • the kernel symbol checksum parameter, the kernel module loading function pointer, the kernel module unloading function pointer and other feature information After obtaining the kernel version parameter of the target kernel, the kernel symbol checksum parameter, the kernel module loading function pointer, the kernel module unloading function pointer and other feature information, the corresponding field in the ELF file corresponding to the kernel module can be found. Then, modify the value of the corresponding field to match the kernel version parameter of the target kernel, the kernel symbol checksum parameter, the kernel module load function pointer, and the kernel module unload function.
  • Step 306 Load the kernel module in the target kernel.
  • kernel version parameters For each version of the kernel, it is necessary to modify kernel version parameters, kernel symbol check parameters, kernel module load function pointers, kernel module unload function pointers. Then, for each version of the kernel, this version of the kernel module needs to be recompiled.
  • the loading information of the kernel version parameter, the kernel symbol verification parameter, the kernel module loading function pointer, the kernel module unloading function pointer, and the like in the ELF file are directly performed. Modifications allow the loading information to be adapted to the target kernel, and the kernel module can be loaded into the target kernel. That is, the kernel module is loaded in different versions of the kernel without recompiling.
  • the present application provides an embodiment of a kernel module loading device, which corresponds to the method embodiment shown in FIG. Can be applied to a variety of electronic devices.
  • the kernel module loading apparatus 400 of this embodiment includes: an obtaining unit 401, a configuration unit 402, and a loading unit 403.
  • the obtaining unit 401 is configured to acquire a target kernel in response to a loading operation of loading a kernel module to be loaded into a target kernel.
  • Feature information wherein the target kernel is a kernel that is to be loaded after the kernel module is loaded
  • the configuration unit 402 is configured to configure loading information corresponding to the kernel module to be loaded based on the feature information, where the loading information includes: The kernel verified information for loading the kernel module to the target kernel
  • the loading unit 403 is configured to load the kernel module to be loaded into the target kernel based on the loading information.
  • the feature information includes: a kernel version parameter, a kernel symbol checksum parameter, a kernel module load function pointer, and a kernel module unload function pointer.
  • the obtaining unit 401 includes: a feature information acquiring subunit (not shown) configured to acquire feature information of the target kernel by using a proc file system of the target kernel.
  • the configuration unit 402 includes: a kernel version parameter configuration subunit (not shown) configured to configure a value of a kernel version parameter field in an executable file corresponding to the kernel module.
  • a kernel version parameter configured to configure a value of a kernel version parameter field in an executable file corresponding to the kernel module.
  • a kernel version parameter a kernel symbol checksum parameter configuration subunit (not shown) configured to configure a value of a kernel symbol check parameter field in an executable file corresponding to the kernel module as a kernel symbol checksum parameter.
  • the function pointer configuration subunit (not shown) is configured to configure the module load function pointer and the module unload function pointer in the executable file corresponding to the kernel module as a module load function pointer and a module unload function pointer.
  • the apparatus 400 further includes: a determining unit (not shown) configured to determine storage of the kernel function or variable indicated by the kernel symbol referenced in the kernel module in the target kernel
  • An address unit (not shown) configured to store a link address whose address is set to a kernel symbol.
  • FIG. 5 is a block diagram showing the structure of a computer system suitable for implementing the terminal device or server of the embodiment of the present application.
  • computer system 500 includes a central processing unit (CPU) 501 that can be loaded into a program in random access memory (RAM) 503 according to a program stored in read only memory (ROM) 502 or from storage portion 508. And perform various appropriate actions and processes.
  • RAM random access memory
  • ROM read only memory
  • RAM 503 various programs and data required for the operation of the system 500 are also stored.
  • the CPU 501, the ROM 502, and the RAM 503 are connected to each other through a bus 504.
  • Input An output (I/O) interface 505 is also coupled to bus 504.
  • the following components are connected to the I/O interface 505: an input portion 506 including a keyboard, a mouse, etc.; an output portion 507 including, for example, a cathode ray tube (CRT), a liquid crystal display (LCD), and the like, and a storage portion 508 including a hard disk or the like. And a communication portion 509 including a network interface card such as a LAN card, a modem, or the like. The communication section 509 performs communication processing via a network such as the Internet.
  • Driver 510 is also coupled to I/O interface 505 as needed.
  • a removable medium 511 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory or the like is mounted on the drive 510 as needed so that a computer program read therefrom is installed into the storage portion 508 as needed.
  • an embodiment of the present disclosure includes a computer program product comprising a computer program tangibly embodied on a machine readable medium, the computer program comprising program code for executing the method illustrated in the flowchart.
  • the computer program can be downloaded and installed from the network via the communication portion 509, and/or installed from the removable medium 511.
  • each block of the flowchart or block diagrams can represent a module, a program segment, or a portion of code that includes one or more logic for implementing the specified.
  • Functional executable instructions can also occur in a different order than that illustrated in the drawings. For example, two successively represented blocks may in fact be executed substantially in parallel, and they may sometimes be executed in the reverse order, depending upon the functionality involved.
  • each block of the block diagrams and/or flowcharts, and combinations of blocks in the block diagrams and/or flowcharts can be implemented in a dedicated hardware-based system that performs the specified function or operation. Or it can be implemented by a combination of dedicated hardware and computer instructions.
  • the present application further provides a non-volatile computer storage medium, which may be a non-volatile computer storage medium included in the apparatus described in the foregoing embodiments; It may be a non-volatile computer storage medium that exists alone and is not assembled into the terminal.
  • the above non-volatile computer storage medium stores one or a plurality of programs, when the one or more programs are executed by a device, causing the device to: acquire feature information of a target kernel in response to a loading operation of loading a kernel module to be loaded into a target kernel, wherein
  • the target kernel is a kernel that is to be loaded after the kernel module is loaded; and the loading information corresponding to the kernel module to be loaded is configured based on the feature information, where the loading information includes: The information loaded by the module to the target kernel; based on the loading information, the kernel module to be loaded is loaded into the target kernel.

Landscapes

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

Abstract

一种内核模块加载方法和装置。该方法的一具体实施方式包括:响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息(201);基于特征信息,配置待加载内核模块对应的加载信息(202);基于加载信息,将待加载内核模块加载到目标内核中(203)。实现了在需要将内核模块在目标内核上进行加载时,直接对内核模块对应的ELF文件中的内核版本参数、内核符号校验参数、内核模块加载函数指针、内核模块卸载函数指针等加载信息进行修改,使得加载信息适用于目标内核的校验,内核模块可以加载到目标内核中。即内核模块在无需重新编译的情况下,加载在不同版本的内核中,增强了内核模块的适用性,节省开发成本。

Description

内核模块加载方法和装置
相关申请的交叉引用
本申请要求于2016年3月30日提交的中国专利申请号为“201610191888.0”的优先权,其全部内容作为整体并入本申请中。
技术领域
本申请涉及计算机领域,具体涉及操作系统领域,尤其涉及内核模块加载方法和装置。
背景技术
在内核程序的开发中,通常需要生成包含内核程序的源代码的内核模块,然后,将内核模块加载到内核中,从而,使得内核程序可以在内核中运行。目前,在将内核模块加载到内核中时,通常采用的方式为:在内核模块中配置内核模块加载过程中由内核需要校验的参数,然后,对内核模块进行重新编译后加载到内核中。
然而,由于内核版本的多样性,在一个版本的内核上加载的内核模块中的内核所需要校验的参数是固定的,导致内核模块只能在一个版本的内核上进行加载,使得内核模块的适用性受到限制,增加开发成本。
发明内容
本申请提供了内核模块加载方法和装置,用于解决上述背景技术部分存在的技术问题。
第一方面,本申请提供了内核模块加载方法,该方法包括:响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,目标内核为待加载内核模块在加载之后所运行的内核;基于特征信息,配置待加载内核模块对应的加载信息,其中,加载信 息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;基于所述加载信息,将待加载内核模块加载到目标内核中。
第二方面,本申请提供了内核模块加载装置,该装置包括:获取单元,配置用于响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,目标内核为待加载内核模块在加载之后所运行的内核;配置单元,配置用于基于特征信息,配置待加载内核模块对应的加载信息,其中,加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;加载单元,配置用于基于加载信息,将待加载内核模块加载到目标内核中。
本申请提供的内核模块加载方法和装置,通过响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息;基于特征信息,配置待加载内核模块对应的加载信息;基于加载信息,将待加载内核模块加载到目标内核中。实现了在需要将内核模块在目标内核上进行加载时,直接对内核模块对应的ELF文件中的内核版本参数、内核符号校验参数、内核模块加载函数指针、内核模块卸载函数指针等加载信息进行修改,使得加载信息适用于目标内核的校验,内核模块可以加载到目标内核中。即内核模块在无需重新编译的情况下,加载在不同版本的内核中,增强了内核模块的适用性,节省开发成本。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2示出了根据本申请的内核模块加载方法的一个实施例的流程图;
图3示出了本申请中的内核模块加载方法的一个示例性流程图;
图4示出了根据本申请的内核模块加载装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的内核模块加载方法或装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供传输链路的介质。网络104可以包括各种连接类型,例如有线、无线传输链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯应用,例如、即时通讯类应用、浏览器类应用、搜索类应用、文字处理类应用等。
终端设备101、102、103可以是具有显示屏并且支持网络通信的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以存储多个版本的内核的特征信息,当接收到终端设备101、102、103发送的查询请求时,可以将终端上的操作系统的内核的特征信息反馈给终端设备,使得终端设备可以根据特征信息配置内核模块的加载信息,从而将内核模块加载在目标内核中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意 性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
请参考图2,其示出了根据本申请的内核模块加载方法的一个实施例的流程200。需要说明的是,本申请实施例所提供的内核模块加载方法一般由图1中的终端设备101、102、103执行。该方法包括以下步骤:
步骤201,响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息。
在本实施例中,目标内核为待加载内核模块在加载之后所运行的内核。在本实施例中,当需要将内核模块在内核中加载时,可以响应于对加载内核模块的加载操作,首先获取用于加载内核模块的目标内核的特征信息。
下面说明内核模块和内核的关系:以Linux操作系统的linux内核为例,Linux内核程序可以通过内核模块加载加入到内核中。例如,当开发完成Linux设备驱动程序时,可以首先生成包含Linux设备驱动程序的Linux内核模块,然后,将该Linux内核模块加载到内核中。从而,可以在内核中调用该Linux设备驱动程序。
在本实施例的一些可选的实现方式中,特征信息包括:内核版本参数、内核符号校验参数、内核模块加载函数指针、内核模块卸载函数指针。
本实施例的一些可选的实现方式中,获取目标内核的特征信息包括:通过目标内核的proc文件系统获取目标内核的特征信息。
在本实施例中,当目标内核为Linux内核时,可以通过Linux内核的proc文件系统,查找到内核版本参数即vermagic参数、内核符号校验和参数即内核符号的CRC参数、内核模块加载函数指针、内核模块卸载函数指针。
步骤202,基于特征信息,配置待加载内核模块对应的加载信息。
在本实例中,加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息。
下面说明在内核模块加载过程中,内核对内核模块的校验过程:Linux的模块加载机制:当需要将内核模块加载到linux内核时,可以 在linux操作系统提供的控制台上输入命令insmod。insmod命令可以通过系统调用init_module来将内核模块加载到内核。调用insmod命令之后,linux内核会首先检查内核模块是否符合ELF(Executable and Linkable Format,可执行连接格式)格式,如果不符合,则内核拒绝加载该内核模块。
内核模块在进行编译之后,可以生成内核模块对应的ELF文件,ELF文件中包含在内核模块加载过程中需要校验的参数。当将内核模块加载到内核时,linux内核可以从内核模块对应的ELF文件中读取需要校验的参数进行校验。在将内核模块加载到内核时,linux内核需要校验的参数包括:内核版本参数即vermagic参数、内核符号校验和参数即内核符号的CRC参数、内核模块加载函数指针、内核模块卸载函数指针。
内核版本参数可以存储在内核模块对应的ELF文件的数据段.modinfo数据段中。当将内核模块加载到内核时,内核会对内核版本参数进行校验,即判断内核模块中的内核版本参数是否跟内核本身的内核版本参数一致,如果不一致,则内核模块无法加载在内核中。
内核符号的校验和参数可以存储在内核模块对应的ELF文件的数据段__versions数据段中。当将内核模块加载到内核时,内核对__versions数据段里面的中的保存的内核符号校验和参数进行校验,即内核模块的内核符号校验和参数是否与内核本身的内核符号校验和参数一致,如果不一致,则内核符号无法进行加载。
当将内核模块加载到内核时,会执行内核模块的内核模块加载函数init函数对内核模块进行初始化。当将内核模块从内核进行卸载时,会执行内核模块的内核模块exit函数。在内核模块中,包含this_module结构体,this_module结构体中包含重定位信息,重定位信息中包含指向内核模块加载函数在内核中的存储地址的内核模块加载函数指针、指向内核模块卸载函数在内核中的存储地址的内核模块卸载函数指针。
下面继续说明本申请中基于特征信息,配置待加载内核模块对应的加载信息的原理:在将内核模块加载到内核时,由于每一个版本的 内核,内核版本参数、内核符号校验参数的数值是不同的,内核模块加载函数指针、内核模块卸载函数指针所指向的地址也是不同的。因此,为了将内核模块适用于加载到多个不同版本的内核中,需要修改内核模块中的内核版本参数、内核符号校验和参数,需要修改重定位信息中的内核模块加载函数指针、内核模块卸载函数指针,使得内核模块的内核版本参数、内核符号校验和参数,内核模块加载函数指针、内核模块卸载函数指针与目标内核的内核模块加载函数指针、内核模块卸载函数指针一致。
在本实施例的一些可选的实现方式中,基于特征信息,配置待加载内核模块对应的加载信息包括:将内核模块对应的可执行文件中的内核版本参数字段的数值配置为所述内核版本参数;将内核模块对应的可执行文件中的内核符号校验参数字段的数值配置为内核符号校验参数。将内核模块对应的可执行文件中的模块加载函数指针和模块卸载函数指针配置为模块加载函数指针和模块卸载函数指针。
在本实施例中,在获取到目标内核的内核版本参数、内核符号校验和参数,内核模块加载函数指针、内核模块卸载函数指针之后,可以查找到内核模块对应的ELF文件中的相应字段,然后,将相应字段的数值修改为与目标内核的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数一致即可。从而,在将内核模块加载到内核时,目标内核可以从内核模块对应的ELF文件中读取出内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针,从而通过校验,将内核模块加载到目标内核中。
换言之,在本实施例中,加载信息包括存储在内核模块中对应的ELF文件中的与目标内核的内核模块加载函数指针、内核模块卸载函数指针一致的内核版本参数、内核符号校验和参数,内核模块加载函数指针、内核模块卸载函数指针。
在本实施例的一些可选的实现方式中,还包括:确定内核模块中引用的内核符号所指示的内核函数或变量在目标内核中的存储地址;存储地址设置为内核符号的链接地址。
在不同版本的内核中,内核符号所指示的内核函数或内核中的变 量在内核中的地址也是不同的。因此,对于内核模块中引用的指示内核函数或内核中的变量的内核符号,可以首先确定内核函数或内核中的变量在目标内核中的存储地址,然后,将该存储地址配置为内核符号的链接地址。从而,可以在内核模块中调用内核函数或访问内核中的变量时,由于内核函数或访问内核中的变量已经在链接时,被替换为了在目标内核中对应的存储地址,从而可以调用目标内核中内核符号对应的函数或访问内核符号对应的内核中的变量。
在本实施例中,还可以采用以下方式对内核函数进行调用:在内核模块中实现一个查找内核函数地址的功能函数,所有内核模块代码在需要使用内核函数时,均可以通过该功能函数,获取到调用的内核函数在目标内核中的地址。然后,通过内核函数指针进行引用,从而消除由于内核模块的代码直接调用内核函数而产生的对内核版本依赖。
在本实施例中,可以在内核模块中实现传递参数数据所需的参数类型的结构体,该结构体内的函数指针可以以特定的函数地址形式来占位。使得在将内核模块加载到内核时,可以以参数的形式向内核模块传递数据。在将内核模块加载到目标内核之前,可以将结构体内函数指针赋值为引用的内核函数在目标内核中的地址。
步骤203,基于加载信息,将待加载内核模块加载到目标内核中。
在本实施例中,可以利用配置之后加载信息,将待加载内核模块加载到目标内核中。例如,可以在linux操作系统提供的控制台上输入insmod命令。insmod命令可以通过系统调用init_module来将内核模块加载到内核。目标内核会从内核模块对应的ELF文件中获取内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。然后,与目标内核自身的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针进行比较。
在本实施例中,由于已经预先将内核模块对应的ELF文件中的相应的字段的数值修改为与目标内核的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针一致即可。从而,在将内核模块加载到内核时,可以通过校验,使得内核模块加载 到目标内核中。
请参考图3,其示出了本申请中的内核模块加载方法的一个示例性流程图。
步骤301:收集所有内核模块在加载过程中所需的参数。
内核模块在加载过程中所需的参数可以包括但不仅限于:内核版本参数,内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。
步骤302:获取目标内核的属性信息。
在本实施例中,可以通过Linux内核的proc文件系统,获取目标内核的属性信息。属性信息可以包括但不限于:内核所运行在的处理器的架构、Linux内核版本。
步骤303:在云端查找属性信息对应的目标内核的特征信息。
可以预先收集适用于不同的处理器架构、不同的内核版本的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。将目标内核的内核所运行在的处理器的架构、Linux内核版本等属性信息与内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针,在云端对应存储。从而,当在终端上将内核模块加载到内核时,可以向云端发送查询请求,云端可以根据目标内核的内核所运行在的处理器的架构、Linux内核版本等属性信息,向终端返回该属性信息对应的适用于目标内核的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。
在一些内核中,还存在对内核模块加载的特殊限制。例如:在一些使用Android系统的设备中,Android系统的内核为Linux内核,Linux内核会对内核模块的校验和值进行校验,判断内核模块是否是与内核同时编译。此时,可以从云端获取适用于目标内核的内核模块的校验和值,从而通过校验,将内核模块在目标内核上加载。
步骤304,在本地查找目标内核的特征信息。
当在云端没有查找到适用于目标内核的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针等信息 时,可以在本地进行进一步地查找。可以在内核镜像文件、内存设备文件、proc文件系统中查找。例如,当查找到已经加载在目标内核中的相同类型的内核模块时,可以从该内核模块中获取内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。
步骤305:设置内核模块对应的ELF文件中的相应字段。
在获取到目标内核的内核版本参数、内核符号校验和参数,内核模块加载函数指针、内核模块卸载函数指针等特征信息之后,可以查找到内核模块对应的ELF文件中的相应字段。然后,将相应字段的数值修改为与目标内核的内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数一致即可。
步骤306:将内核模块在目标内核中加载。
通过insmod命令将内核模块加载到内核中。
下面在上述说明的本申请的内核模块加载方法的基础上,说明本申请中的内核模块加载方法与现有技术的区别:
在现有技术中,针对每一个版本的内核,需要修改内核版本参数、内核符号校验参数、内核模块加载函数指针、内核模块卸载函数指针。然后,针对每一个版本的内核,均需对这一版本的内核模块进行重新编译。
而在本申请中,当需要将内核模块在目标内核上进行加载时,直接对ELF文件中的内核版本参数、内核符号校验参数、内核模块加载函数指针、内核模块卸载函数指针等加载信息进行修改,使得加载信息适配与目标内核,内核模块可以加载到目标内核中。即内核模块在无需重新编译的情况下,加载在不同版本的内核中。
请参考图4,作为对上述各图所示方法的实现,本申请提供了一种内核模块加载装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例的内核模块加载装置400包括:获取单元401,配置单元402,加载单元403。其中,获取单元401配置用于响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的 特征信息,其中,所述目标内核为待加载内核模块在加载之后所运行的内核;配置单元402配置用于基于特征信息,配置待加载内核模块对应的加载信息,其中,加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;加载单元403配置用于基于加载信息,将待加载内核模块加载到目标内核中。
在本实施例的一些可选的实现方式中,特征信息包括:内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。
在本实施例的一些可选的实现方式中,获取单元401包括:特征信息获取子单元(未示出),配置用于通过目标内核的proc文件系统获取目标内核的特征信息。
在本实施例的一些可选的实现方式中,配置单元402包括:内核版本参数配置子单元(未示出),配置用于将内核模块对应的可执行文件中的内核版本参数字段的数值配置为内核版本参数;内核符号校验和参数配置子单元(未示出),配置用于将内核模块对应的可执行文件中的内核符号校验参数字段的数值配置为内核符号校验和参数。函数指针配置子单元(未示出),配置用于将内核模块对应的可执行文件中的模块加载函数指针和模块卸载函数指针配置为模块加载函数指针和模块卸载函数指针。
在本实施例的一些可选的实现方式中,装置400还包括:确定单元(未示出),配置用于确定内核模块中引用的内核符号所指示的内核函数或变量在目标内核中的存储地址;设置单元(未示出),配置用于存储地址设置为内核符号的链接地址。
图5示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM502以及RAM 503通过总线504彼此相连。输入 /输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或 者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,所述目标内核为待加载内核模块在加载之后所运行的内核;基于所述特征信息,配置待加载内核模块对应的加载信息,其中,所述加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;基于所述加载信息,将待加载内核模块加载到目标内核中。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

  1. 一种内核模块加载方法,其特征在于,所述方法包括:
    响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,所述目标内核为待加载内核模块在加载之后所运行的内核;
    基于所述特征信息,配置待加载内核模块对应的加载信息,其中,所述加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;
    基于所述加载信息,将待加载内核模块加载到目标内核中。
  2. 根据权利要求1所述的方法,其特征在于,所述特征信息包括:内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。
  3. 根据权利要求2所述的方法,其特征在于,所述获取目标内核的特征信息包括:
    通过目标内核的proc文件系统获取目标内核的特征信息。
  4. 根据权利要求3所述的方法,其特征在于,所述基于所述特征信息,配置待加载内核模块对应的加载信息包括:
    将内核模块对应的可执行文件中的内核版本参数字段的数值配置为所述内核版本参数;
    将内核模块对应的可执行文件中的内核符号校验和参数字段的数值配置为所述内核符号校验和参数;
    将内核模块对应的可执行文件中的内核模块加载函数指针和内核模块卸载函数指针配置为所述内核模块加载函数指针和内核模块卸载函数指针。
  5. 根据权利要求4所述的方法,其特征在于,所述方法还包括:
    确定内核模块中引用的内核符号所指示的内核函数或变量在目标内核中的存储地址;
    将所述存储地址设置为所述内核符号的链接地址。
  6. 一种内核模块加载装置,其特征在于,所述装置包括:
    获取单元,配置用于响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,所述目标内核为待加载内核模块在加载之后所运行的内核;
    配置单元,配置用于基于所述特征信息,配置待加载内核模块对应的加载信息,其中,所述加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;
    加载单元,配置用于基于所述加载信息,将待加载内核模块加载到目标内核中。
  7. 根据权利要求6所述的装置,其特征在于,所述特征信息包括:内核版本参数、内核符号校验和参数、内核模块加载函数指针、内核模块卸载函数指针。
  8. 根据权利要求7所述的装置,其特征在于,所述获取单元包括:
    特征信息获取子单元,配置用于通过目标内核的proc文件系统获取目标内核的特征信息。
  9. 根据权利要求8所述的装置,其特征在于,配置单元包括:
    内核版本参数配置子单元,配置用于将内核模块对应的可执行文件中的内核版本参数字段的数值配置为所述内核版本参数;
    内核符号校验和参数配置子单元,配置用于将内核模块对应的可执行文件中的内核符号校验和参数字段的数值配置为所述内核符号校验和参数;
    函数指针配置子单元,配置用于将内核模块对应的可执行文件中的模块加载函数指针和模块卸载函数指针配置为所述内核模块加载函 数指针和内核模块卸载函数指针。
  10. 根据权利要求9所述的装置,其特征在于,所述装置还包括:
    确定单元,配置用于确定内核模块中引用的内核符号所指示的内核函数或变量在目标内核中的存储地址;
    设置单元,配置用于将所述存储地址设置为所述内核符号的链接地址。
  11. 一种设备,包括:
    处理器;和
    存储器,
    所述存储器中存储有能够被所述处理器执行的计算机可读指令,在所述计算机可读指令被执行时,所述处理器执行内核模块加载方法,所述方法包括:
    响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,所述目标内核为待加载内核模块在加载之后所运行的内核;
    基于所述特征信息,配置待加载内核模块对应的加载信息,其中,所述加载信息包括:被目标内核校验的、用于将内核模块加载到目标内核的信息;
    基于所述加载信息,将待加载内核模块加载到目标内核中。
  12. 一种非易失性计算机存储介质,所述计算机存储介质存储有能够被处理器执行的计算机可读指令,当所述计算机可读指令被处理器执行时,所述处理器执行内核模块加载方法,所述方法包括:
    响应于将待加载内核模块加载到目标内核的加载操作,获取目标内核的特征信息,其中,所述目标内核为待加载内核模块在加载之后所运行的内核;
    基于所述特征信息,配置待加载内核模块对应的加载信息,其中,所述加载信息包括:被目标内核校验的、用于将内核模块加载到目标 内核的信息;
    基于所述加载信息,将待加载内核模块加载到目标内核中。
PCT/CN2016/086411 2016-03-30 2016-06-20 内核模块加载方法和装置 WO2017166447A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201610191888.0A CN105893085A (zh) 2016-03-30 2016-03-30 内核模块加载方法和装置
CN201610191888.0 2016-03-30

Publications (1)

Publication Number Publication Date
WO2017166447A1 true WO2017166447A1 (zh) 2017-10-05

Family

ID=57014655

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/086411 WO2017166447A1 (zh) 2016-03-30 2016-06-20 内核模块加载方法和装置

Country Status (2)

Country Link
CN (1) CN105893085A (zh)
WO (1) WO2017166447A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389786A (zh) * 2018-04-20 2019-10-29 伊姆西Ip控股有限责任公司 内核管理方法、设备和计算机程序产品
US11461465B1 (en) * 2019-05-24 2022-10-04 Trend Micro Inc. Protection of kernel extension in a computer
CN117931555A (zh) * 2024-03-22 2024-04-26 新华三信息技术有限公司 在内核态下模拟scsi设备故障的方法及装置

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018137258A1 (en) * 2017-01-30 2018-08-02 Qualcomm Incorporated Loadable modules with partial linking and load-time relocation
CN106815031B (zh) * 2017-02-22 2020-03-24 百度在线网络技术(北京)有限公司 内核模块加载方法和装置
CN108073411A (zh) * 2017-12-11 2018-05-25 北京奇虎科技有限公司 一种补丁的内核加载方法及装置
CN110414218B (zh) * 2018-11-13 2022-09-09 腾讯科技(深圳)有限公司 内核检测方法、装置、电子设备及存储介质
CN109409096B (zh) * 2018-11-15 2021-02-26 百度在线网络技术(北京)有限公司 内核漏洞修复方法、装置、服务器及系统
EP3794477B1 (en) * 2019-01-04 2023-05-10 Baidu.com Times Technology (Beijing) Co., Ltd. Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
CN111752620B (zh) * 2019-03-26 2024-08-20 斑马智行网络(香港)有限公司 内核模块的处理方法和加载方法
CN111259392B (zh) * 2020-01-13 2023-06-13 奇安信科技集团股份有限公司 一种基于内核模块的恶意软件拦截方法及装置
CN112363726A (zh) * 2020-11-10 2021-02-12 北京麟卓信息科技有限公司 一种内核模块的跨内核版本编译方法及系统
CN114691220A (zh) * 2020-12-30 2022-07-01 网神信息技术(北京)股份有限公司 保护进程的方法、装置、电子设备、介质和程序产品
CN113220303A (zh) * 2021-04-21 2021-08-06 北京麟卓信息科技有限公司 一种内核模块的编译方法和系统
CN112860267B (zh) * 2021-04-23 2021-07-30 武汉深之度科技有限公司 一种内核裁剪方法及计算设备
CN115113916B (zh) * 2022-06-22 2024-10-11 广州安凯微电子股份有限公司 一种Linux内核解耦方法、装置及可读存储介质
CN117149499B (zh) * 2023-10-30 2024-01-19 北京麟卓信息科技有限公司 一种基于动态符号表的内核模块内存占用优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1650264A (zh) * 2002-04-17 2005-08-03 计算机联合思想公司 用于修改一个内核模块以便在多个内核版本上运行的设备和方法
CN102012823A (zh) * 2009-09-04 2011-04-13 中兴通讯股份有限公司 一种快速重新启动计算机的方法和装置
CN104375874A (zh) * 2014-12-11 2015-02-25 北京奇虎科技有限公司 加载Linux内核驱动的方法及装置
CN104679532A (zh) * 2013-11-27 2015-06-03 腾讯科技(深圳)有限公司 内核模块加载方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104021023A (zh) * 2014-06-24 2014-09-03 浪潮电子信息产业股份有限公司 一种突破内核模块版本控制解决方法
CN104407887A (zh) * 2014-11-06 2015-03-11 航天科工深圳(集团)有限公司 一种嵌入式系统内核模块动态加载程序的方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1650264A (zh) * 2002-04-17 2005-08-03 计算机联合思想公司 用于修改一个内核模块以便在多个内核版本上运行的设备和方法
CN102012823A (zh) * 2009-09-04 2011-04-13 中兴通讯股份有限公司 一种快速重新启动计算机的方法和装置
CN104679532A (zh) * 2013-11-27 2015-06-03 腾讯科技(深圳)有限公司 内核模块加载方法和装置
CN104375874A (zh) * 2014-12-11 2015-02-25 北京奇虎科技有限公司 加载Linux内核驱动的方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389786A (zh) * 2018-04-20 2019-10-29 伊姆西Ip控股有限责任公司 内核管理方法、设备和计算机程序产品
CN110389786B (zh) * 2018-04-20 2022-10-14 伊姆西Ip控股有限责任公司 内核管理方法、电子设备和计算机可读存储介质
US11461465B1 (en) * 2019-05-24 2022-10-04 Trend Micro Inc. Protection of kernel extension in a computer
CN117931555A (zh) * 2024-03-22 2024-04-26 新华三信息技术有限公司 在内核态下模拟scsi设备故障的方法及装置
CN117931555B (zh) * 2024-03-22 2024-06-07 新华三信息技术有限公司 在内核态下模拟scsi设备故障的方法及装置

Also Published As

Publication number Publication date
CN105893085A (zh) 2016-08-24

Similar Documents

Publication Publication Date Title
WO2017166447A1 (zh) 内核模块加载方法和装置
US10747526B2 (en) Apparatus and method to execute prerequisite code before delivering UEFI firmware capsule
US10069940B2 (en) Deployment meta-data based applicability targetting
CN113312037A (zh) 应用于微服务的数据处理方法、装置、设备和存储介质
WO2020001112A1 (zh) 一种支持多类型设备的平台的应用方法、移动终端
US20230259416A1 (en) Providing application programming interface endpoints for machine learning models
US20210158131A1 (en) Hierarchical partitioning of operators
WO2017166448A1 (zh) 内核漏洞修复方法和装置
CN106462442B (zh) 加载虚拟机的系统和方法
CN116257320B (zh) 一种基于dpu虚拟化配置管理方法、装置、设备及介质
WO2023093633A1 (zh) 终端固件的启动方法、装置、电子设备及存储介质
CN111506904B (zh) 漏洞在线修复的方法和装置
CN104050001A (zh) 基于Android系统的资源处理方法、装置和设备
CN112154417B (zh) 经由仿真网络通信信道在应用的单机版本和基于Web的版本之间共享代码库
CN114860272A (zh) 一种操作系统安装方法、计算设备及存储介质
US11960918B2 (en) Creating product orchestration engines
US8997044B2 (en) Overriding system attributes and function returns in a software subsystem
US10776133B2 (en) Preemptive loading of code dependencies for improved performance
CN111859403B (zh) 依赖关系漏洞的确定方法、装置、电子设备及存储介质
CN115269063A (zh) 进程创建方法、系统、设备及介质
CN114489698A (zh) 应用程序安装方法和装置
CN111142972B (zh) 用于扩展应用程序的功能的方法、装置、系统及介质
CN115237458A (zh) 一种调用推理硬件执行ai应用的方法及相关产品
CN109829268B (zh) 一种确定不同应用的所属终端关联性的方法及装置
US10970058B2 (en) Software package installations with proximity tags

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16896220

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 16896220

Country of ref document: EP

Kind code of ref document: A1