linux module命令

人气:435 ℃/2023-09-29 11:42:05

linux系统下module命令是什么呢?下面是具体介绍:

1、module命令简介:

modules的字面意思是模块,模块化有两个方法解决:设计者可以把各项功能分离到单独的叫做线程的处理中去,或者是将内核以包含/排除一些功能的方式重新编译。如果把功能分离到线程中去,那么内核就叫做“微内核”(micro-kernel),这种解决方法增加了线程间协调工作的通信开销,这种解决方案的优点在于内核的大小。

Linux的解决方案是包含内核模块,这些模块是可以按需要随时装入和卸下的。这样做可以使得内核的大小和通信量都达到最小。将模块从内核中独立出来,不必预先『绑』在 kernel codes 中。

这样做有三种优点: 一, 将来修改 kernel 时,不必全部重新compile,可节省不少时间;二, 若需要安装新的 modules ,不必重新 compile kernel,只要插入 (通过insmode指令) 对应的 modules 即可;三,减少内核对系统资源的占用,内核可以集中精力做最基本的事情,把一些扩展功能都交由modules实现。

模块也可以用来尝试新的内核代码而不需要每次都创建和重激活内核。但是,这样做带来的问题是:使用内核模块通常会轻微的增加性能和内存开支。一个可加载模块肯定会产生更多的代码,这种代码和额外的数据结构会占用更多一点的内存。另外因为间接访问内核资源也让模块的效率轻微降低。

2、加载模块方法:

加载内核模块的方法有两种。

一是使用insmod命令手工把它插入到内核。

二是在需要的时候加载这个模块,叫做按需加载(demand loading)。当内核发现需要一个模块的时候,例如当用户安装一个不在内核的文件系统的时候,内核会请求内核守护进程(kerneld)试图加载合适的模块。

3、与modules有关的命令:

lsmode :列出已经被内核调入的模块

insmode:将某个module插入到内核中

rmmod:将某个module从内核中卸载

depmod: 生成依赖文件,告诉将来的 insmod 要从哪儿调入 modules。这个依赖文件就在/lib/modules/[您的kernel版本]/modules.dep。

Kerneld:负责自动的将模块调入内核和把模块从内核中卸载。

举例:

编译一个最小的Linux内核

必须要编译到内核中的内容:

1、root所在的硬盘配置。哪果您的硬盘是IDE接口,就把 ide 的选项标记下来。如果是SCSI接口,请把您的接口参数及 SCSI id 记标下来。

2、选择使用哪一个文件系统。Linux的默认文件系统是是 ext2 ,那么就一定要把它标记下来。如果机器中还其它的操作系统,如win98或windows NT,您还会可能选择FAT32或NTFS的支持,不过后面你可以通过手工加载的方式来加入新的模块支持。

3、选择Linux所支持的可执行文件格式。这里有两种格式可供选择:elf:这是当前Linux普遍支持的可执行文件格式,必须编译到内核中 。

a.out: 这是旧版的Linux的可执行文件各函数库的格式,如果你确认肯定用不到这种格式的可执行文件,那么就可以不把它编译到内核当中。

其它内容凡是所有选项中m提示的,都选择m,这样可以通过手工的方式添加该模块。

** Loadable module support*Enable loadable module support (CONFIG_MODULES) [Y/n/?]Set version

information on all symbols for modules (CONFIG_MODVERSIONS) [N/y/?]Kernel daemon support (e.g.

autoload of modules) (CONFIG_KERNELD) [Y/n/?]

分别回答 Y,N,Y 。其中 CONFIG_KERNELD 的 default 值是 N, 所以要注意选择Y。

make config 完后,仍旧是 make dep; make clean。接下来要 make zlilo 或 make zImage。然后 make modules ; make modules_install 。完成之后,就编译出一个没有调入多余模块的一个“干净的”内核映像文件了。

<上一篇下一篇>

推荐

首页/电脑版/地图
© 2024 JiaChangBa.com All Rights Reserved.