内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这...
前面说过,内核模块属于Linux内核的一部分,当把它动态地插入到正在运行的Linux内核中去时,Linux系统就增加了该模块提供的某种功能,当Linux内核不再需要它时,又可以动态地从正在运行的Linux内核中移除,此时Linux系统就散失了模块提供的功能。这就是Linux的内核模块机制,在插入内核模块时,使用Linux提供的insmod命令,移除时...
这样的话岂不是说我加一个组件就得重新编译内核,这显然不是很科学的方法,其实我们的linux内核提供在运行时可进行扩展的特性,这意味着当系统启动并运行时,我们可以向内核添加或移除部分功能。 我们在运行时添加到内核中的代码就被成为动态可加载内核模块,我们简称为内核模块。 2.内核模块的相关操作 a)加载内核模块:i...
3.查看内核模块参数和值 # ls /sys/module/sd8xxx/parameters 在/sys/module目录下,可以找到内核模块(包含内置和可加载的)命名的子目录。进入每个模块目录,这里有个“parameters”目录,列出了这个模块所有的参数。 上面示例是要找出sd8xxx模块的参数。 # cat /sys/module/sd8xxx/parameters/mfg_mode 查看参数mfg...
六、自定义内核模块 1、选择一个目录,创建Makefile和myownfunc.c文件; myownfunc.c代码: /*源文件myownfunc.c */ #include < linux/module.h > #include < linux/kernel.h > #include < linux/init.h > static int __init myfunc_init(void) ...
4、内核编译 a、make,我们可以使用make help查看相应的选项 b、我们可以通过make menuconfig命令去打开一个文本界面,不过前提是我们需要安装刚刚我们说的ncurses包。打开文本界面后就可以通过空格键进行需要编译项的选定。我们前面说过,如果选项是*表示编译进内核,如果选项是M表示编译成模块,没选的话表示不编译不启用此...
内核模块名词解释内核模块是计算机操作系统中的一个重要概念,它指的是操作系统核心部分的一个模块,负责管理和控制计算机的硬件资源以及为用户提供各种服务。内核模块通常包括以下一些名词解释: 1.进程管理:负责管理和调度计算机中的进程,包括进程的创建、终止、挂起和恢复等操作。 2.存储管理:负责管理计算机的内存和外存(...
也可以通过内核模块列表,每个不同版本的内核都有自己专属的模块清单列表,位于/lib/modules/Kernel_Version/modules.dep文件中,如果可以找到ip_conntrack.ko字符串,则是以动态模块存在。 modules.dep文件记录了在核心支持的模块的各项依赖性,使用dpmod 命令即可创建该文件,运行该命令时,depmod会主动分析当前核心的模块,并...
一、Linux内核模块简介 1.何为内核模块 在上一篇博文中我们先通过内核配置,在配置的过程中我们对内核的组件进行了选择(当然这个选择决定了我们内核的大小),然后才生成了我们最终的内核,那么我们如果想添加组件,怎么办? 最笨的方法是对内核进行重新配置,然后在重新编译。这样的话岂不是说我加一个组件就得重新编译内核...