查看: 7790|回复: 0
打印 上一主题 下一主题

核心模组的载入与移除

[复制链接]
跳转到指定楼层
1#
发表于 2010-2-17 18:28:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
 insmod 则完全由使用者自行载入一个完整档名的模组, 并不会主动的分析模组相依性啊!

  [root@www ~]# insmod [/full/path/module_name] [parameters]

  范例一:请尝试载入 cifs.ko 这个‘档案系统’模组

  [root@www ~]# insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko

  [root@www ~]# lsmod | grep cifs

  cifs 212789 0

  他立刻就将该模组载入啰~但是 insmod 后面接的模组必须要是完整的‘档名’才行!那如何移除这个模组呢?

  [root@www ~]# rmmod [-fw] module_name

  选项与参数:

  -f :强制将该模组移除掉,不论是否正被使用;

  -w :若该模组正被使用,则 rmmod 会等待该模组被使用完毕后,才移除他!

  范例一:将刚刚载入的 cifs 模组移除!

  [root@www ~]# rmmod cifs

  范例二:请载入 vfat 这个‘档案系统’模组

  [root@www ~]# insmod /lib/modules/$(uname -r)/kernel/fs/vfat/vfat.ko

  insmod: error inserting '/lib/modules/2.6.18-92.el5/kernel/fs/vfat/vfat.ko':

  -1 Unknown symbol in module

  # 无法载入 vfat 这个模组啊!伤脑筋!

  使用 insmod 与 rmmod 的问题就是,你必须要自行找到模组的完整档名才行,而且如同上述范例二的结果, 万一模组有相依属性的问题时,你将无法直接载入或移除该模组呢!所以近年来我们都建议直接使用 modprobe 来处理模组载入的问题,这个指令的用法是:

  [root@www ~]# modprobe [-lcf] module_name

  选项与参数:

  -c :列出目前系统所有的模组!(更详细的代号对应表)

  -l :列出目前在 /lib/modules/`uname -r`/kernel 当中的所有模组完整档名;

  -f :强制载入该模组;

  -r :类似 rmmod ,就是移除某个模组啰~

  范例一:载入 cifs 模组

  [root@www ~]# modprobe cifs

  # 很方便吧!不需要知道完整的模组档名,这是因为该完整档名已经记录到

  # /lib/modules/`uname -r`/modules.dep 当中的缘故啊!如果要移除的话:

  [root@www ~]# modprobe -r cifs

  使用 modprobe 真的是要比 insmod 方便很多!因为他是直接去搜寻 modules.dep 的纪录, 所以啰,当然可以克服模组的相依性问题,而且还不需要知道该模组的详细路径呢!

  例题:

  尝试使用 modprobe 载入 vfat 这个模组,并且观察该模组的相关模组是哪个?

  答:

  我们使用 modprobe 来载入,再以 lsmod 来观察与 grep 撷取关键字看看:

  [root@www ~]# modprobe vfat

  [root@www ~]# lsmod | grep vfat

  vfat 15809 0

  fat 51165 1 vfat <==原来就是 fat 这个模组啊!

  [root@www ~]# modprobe -r vfat <==测试完移除此模组

  核心模组的额外参数设定: /etc/modprobe.conf

  这个档案我们之前已经谈过了,这里只是再强调一下而已,如果您想要修改某些模组的额外参数设定, 就在这个档案内设定吧!我们假设一个案例好了,假设我的网路卡 eth0 是使用 ne , 但是 eth1 同样也使用 ne ,为了避免同一个模组会导致网路卡的错乱, 因此,我可以先找到 eth0 与 eth1 的 I/O 与 IRQ ,假设:

  eth0 : I/O (0x300) 且 IRQ=5

  eth1 : I/O (0x320) 且 IRQ=7

  则:

  [root@www ~]# vi /etc/modprobe.conf

  alias eth0 ne

  alias eth1 ne

  options eth0 io=0x300 irq=5

  options eth1 io=0x320 irq=7

  如此一来,我的 Linux 就不会捉错网路卡的对应啰!因为被我强制指定某个 I/O 咯嘛!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表