可载入模块能够节省内存,而且很容易设定 模块的范围已经包含了文档系统,乙太网路卡驱动程序,磁带机,印表机驱动程序,还有更多
模块工具可以从你取得核心的地方找到,如 modules-x.y.z.tar.gz
;
选择与你目前核心版本相等或稍低的最接近的 x.y.z
用 `tar zxvf modules-x.y.z.tar.gz
' 解开
cd
到它产生的目录(modules-x.y.z
),看一下 README
,然后按照安装指示执行 (通常很简单,就像 make install
之类的)
然后你在 /sbin
应该会有这些程序 insmod
, rmmod
, ksyms
, lsmod
, genksyms
, modprobe
, 以及 depmod
如果你想的话,可以用 insmod
里的范例驱动程序``hw''来测试这些工具;
参见 INSTALL
档里的细节说明
insmod
指令将一个模块插入运行中的核心 模块通会以 .o
为结尾;
上面提到的范例程序就叫做 drv_hello.o
,因此要插入此模块,就用 `insmod drv_hello.o
'
要了解目前核心正在使用的模块,用 lsmod
指令 输出看起来像这样:
blah# lsmod Module: #pages: Used by: drv_hello 1`
drv_hello
' 是这模块的名称,它用了一页 (4K) 的内存,而且目前没有其它的核心模块依赖于它
要移除此模块,用 `rmmod drv_hello
' 注意 rmmod
需要的是模块名称,而不是文档名称;
就是你从 lsmod
指令列出来的 其余工具的作用在线上手册中都有说明
在 2.0.30 版中,几乎所有的东西都可以变成可载入模块
要使用可载入模块,首先确定你没有将其配置到正常的核心里,也就是说,在 `make config
' 时不是回答 y
编译新核心并用它来开机 然后,再次 cd
到 /usr/src/linux
,然后执行 `make modules
'
这将编译所有你未指定在核心配置里的模块,并将其连结到 /usr/src/linux/modules
你可以直接由此目录使用,或是执行 `make modules_install
' 将其安装到 /lib/modules/x.y.z
,其中 x.y.z
是核心版本
这对处理文档系统上特别便利 你可能并不经常使用 minix 或 MS-DOS 的文档系统
例如,如果我遇到一 MS-DOS 的软盘片,我会用 insmod /usr/src/linux/modules/msdos.o
,并在使用完成后用 rmmod msdos
指令将其去掉
此过程大约可以节省核心 50K 左右的内存 对于 minix 文档系统有一点要注意的就是,
为了要使用``急救磁片'',你应该总是直接将它配置到核心中