Next Previous Contents

9. 可载入模组

可载入模组能够节省记忆体,而且很容易设定. 模组的□围已经包含了档案系统,乙太网路卡驱动程式,磁带机,印表机驱动程式,还有更多.

9.1 安装模组工具

模组工具可以从你取得核心的地方找到,如 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 指令列出来的.其馀工具的作用在线上手册中都有说明.

9.2 与核心发行的模组

在 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 档案系统有一点要注意的就是, 为了要使用``急救磁片'',你应该总是直接将它配置到核心中.


Next Previous Contents