linux中modules作用,linux中modules的使用

什麽是modules?

这是一个很重要的功能了,modules意思就是模组嘛,在此指的是kernel modules;简单来说,一个kernel module就提供了一个功能,如isofs、minix、nfs、lp等等,如此一来就可以把它们独立出来,不必预先『绑』在kernel codes中。这样子的话我们可以有两大享受!第一:将来修改kernel时,不必全部重新compile,可节省不少时间。第二:若有新的modules需要用到,不必重新compile kernel,只要插入(这是一个指令,我们等一下再介绍)对应的modules即可。

什麽是kerneld?

kerneld是一个daemon,很聪明的daemon,它主动把您需要的modules自动插入kernel,没用到的module拔出kernel,省去您的麻烦。若少了这个kerneld,您只好在/etc/rc.d/下加一个rc.modules了(把开机後要用的modules加入这个shell script中也算是自动加入,但比较麻烦不是吗?)。

如何使用Modules?

Step 1:准备工作

去抓,这是modules一定要用到的系统程式。另有beta版的及最新版的。注意您的kernel版本,千万不要低於您抓回来的module-util版本。但反过来则否(不要差太多就好了)。

把抓回来的modules-x.x.xx.tar.gz解至您呷意的位置去,然後把它们make出来。在此呼吁大家在这个步骤若遇到问题请自己解决,也可藉机增加功力。

make完後,应该有一堆系统程式: modprobe、depmod(这是一个symbolic link至modprobe)、genksyms、makecrc32、insmod、rmmod(symbolic

link to insmod)、lsmod(a shell script in 1.3.69f)、ksyms(symbolic

link to insmod)、以及kerneld。

其中以insmod、rmmod(=insmod)、lsmod、depmod(=modprobe)、kerneld最重要:

lsmod把现在kernel中插入的modules列出来

insmod把某个module插入kernel中

rmmod把某个module插入kernel中

depmod制造module dependency file,以告诉将来的insmod要去哪儿抓modules来插。这个dependency file就在/lib/modules/[您的kerne版本]/modules.dep

kerneld一个daemon,可负责自动呼叫insmod插入module,是一个很方便 的 daemon。它也同时查看,若某module插入後但很久没人在用了,就会把它拔出来,以省记忆体。

如果make没什麽问题了,请make install。如此一来就完成第一个准备工作了。

把depmod、kerneld加入您的/etc/rc.d/rc.S:

kerneld:请加在swapon -a之後,很开头的位置:

PATH=/sbin:/usr/sbin:/bin:/usr/bin

# enable swapping

/sbin/swapon -a

# Start update.

/sbin/update &

#

# Now, start kerneld as soon as possible, so that any disk

# driver modules can be loaded "automagically"

if [ -x /sbin/kerneld ]

then

/sbin/kerneld

fi

depmod及modprobe:请加在"remount /"之後,很开头的位置:

#

# If everything went well, we remount the root filesystem read/write

#

echo "Re-mounting root file system read-write"

/sbin/mount -w -n -o remount /

#

# Then do some standard clean-up:

#

rm -f /etc/mtab~ /etc/fastboot /etc/nologin

#这部份可能和您的系统rc.S不太一样,请不要照抄!

#cat /dev/null > /etc/mtab

cat /dev/null > /var/adm/utmp

#以下才是我们要加的第二部份

# The code from here, down to "#=========" can be put in a

separate script

#

# Create a generic link to the modules for the current kernel

#

# You can have generic symbolic links in /lib/modules/boot

# if you create links to: "../current/subsystem/module.o"

#

rm /lib/modules/current

ln -s /lib/modules/`uname -r` /lib/modules/current

if [ /! -r /lib/modules/current/modules.dep ]

then

echo "Creating module

dependencies"

/sbin/depmod -a

fi

#

# Load the boot modules

#

if [ -x /sbin/kerneld ]

then

if find /lib/modules/boot

-type f -o type l > /dev/null 2>&1

then

echo "Loading

boot-time modules"

/sbin/modprobe -a -t

boot /*

fi

else

echo "Loading

modules"

/sbin/modprobe -a /*

fi

#===============================================

有一件很重要的事是,如果您的/usr是在另一个file

system上,之後才mount进来的话,请先在depmod之前mount进来,因为modules-1.3.57要用到/usr/bin/nm这个系统程式。 但modules-1.3.69f因为它内建了nm的功能,所以可以不用管我刚才说的......。

Step 2:计划

首先,请先列出一张清单,看看您的kernel有哪些选项是非有不可的;也就是说,这些东西是不可以compile成为module的。

root system所在:

使用哪一种硬碟界面?

IDE的话,就把ide的选项记下来。

SCSI的话,请把您的界面low level driver及SCSI Disk (sd)记下来。

使用哪一种file system?

我看多半都是ext2吧?那麽把它记下来。

您的kernel binary格式?

elf?那麽ELF support不可以compile成module。

a.out?那麽AOUT

support不可以compile成module。

大概就这些吧,是不可以compile成module的。而原本没有提供M的kernel config选项者,要用到的话当然只能乖乖地回答Y罗!

Step 3:新的kernel及modules来了

好了,那就开始重新make config罗,请您在前三个选项:

*

* 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,所以要注意一下。

其他的kernel

config如果遇到现在不能compile成Module的(依您自己上面所记录的,这是因人而异),请(也只能)回答Y;其他的请回答:

M:若有提供这个选项。

Y:没有提供M选项,但又必须使用的话。

N:根本就用不到这个功能的话。

make config完後,仍旧是make dep; make clean

再来就有点不太一样;在make zlilo或make zImage之後,是产生出 没有module的kernel image,所以之後要再make modules ; make modules_install才对。

reboot,如果没什麽问题的话,就应该是OK了。

使用了modules後可能会不太习惯一些事情,久了就熟悉这个东西了。

建议您不妨开始订阅国外的news group来看,会比国内一些bbs的讨论来得更有时效性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值