文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>module介绍

module介绍

时间:2006-10-06  来源:nick19842000

什麽是 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-1.3.57.tar.gz, 这是 modules 一定要用到的系统程式。
    另有 beta 版的 modules-1.3.69f.tar.gz 及最新版的 modules-2.0.0.tar.gz。
  • 注意您的 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/[您的kernel版本]/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 的讨论来得更有时效性。

From:http://www.zhujiangroad.com/school/linux/15.htm

相关阅读 更多 +
排行榜 更多 +
鲁莽赛车2

鲁莽赛车2

赛车竞速 下载
臣民之塔

臣民之塔

策略塔防 下载
银河虫族安卓版

银河虫族安卓版

飞行射击 下载