当前位置:七道奇文章资讯安全技术操作系统
日期:2010-10-25 10:35:00  来源:本站整理

Linux如安在系统启动时自动加载模块[操作系统]

赞助商链接



  本文“Linux如安在系统启动时自动加载模块[操作系统]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

下面是从前学习Linux时写的,后来细心研究rc.sysinit后发现,只需求改正下列地方便可以了,没必要这么麻烦的:

  rc.sysinit中有这样的一段代码:

  # Load other user-defined modules

  for file in /etc/sysconfig/modules/*.modules ; do

  [ -x $file ] && $file

  done

  # Load modules (for backward compatibility with VARs)

  if [ -f /etc/rc.modules ]; then

  /etc/rc.modules

  fi

  可见只需求配置两个地方的任何一个便可以了(以加载fuse内核模块为例)

  (1) 在/etc/sysconfig/modules/下面成立*.modules文件,参考已经有的*.modules文件,比方我写成立文件my.modules,内容为modprobe fuse

  记得最后chmod 755 my.modules

  (2) 大概在/etc/rc.modules里面加上modprobe fuse,没有的话成立该文件.

  然后reboot,lsmod | grep fuse考证一下就OK了.

  ==============

  Automatically load kernel modules:

  为搞清楚如安在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有精确的答案,无论是中文社区还是英文社区,大家的答复都没有讲到点子上,无非是环绕modprobe.conf、modprobe讲来说去的,要不就是针对特定问题尝试差别的办法.有的还倡议把modprobe modulename写入rc.local,却不曾想,rc.local的履行被放在整个启动次序的很背面,而启动init.d下面定义的服务却在rc.local前面,那么假如某个服务要用这个模块,就不行了.

  在测试LVS时,因为我的Fedora7的Kernel(2.6.21-1)缺省没有加载ip_vs模块,而内核中已经包含编译好的IPVS相关的模块了,放在:/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/下面,有:

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_dh.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_ftp.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lblc.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lc.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_nq.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_rr.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_sed.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_sh.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_wlc.ko

  /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_wrr.ko

  此中ip_vs.ko是IPVS的基本模块,不加载IPVS就不能工作(运行ipvsadm会报错的),而其他的都是IPVS的调度算法或特定协议的帮助模块,需求时则须加载.

  假如系统运行时手动加载则需:modprobe ip_vs 和modprobe ip_vs_sh等.

  要理解如安在系统启动时自动加载模块(Automatically load kernel modules),就得先理解系统是如阿启动的,启动的历程中按什么次序做了什么,怎么做的,这些启动操作都有那些文件和脚本掌握.由于Google和Baidu出来的东西都办理不了问题,并且man modprobe和man modprobe.conf发现并非需求改正的文件.

  于是复习鸟哥的linux.vbird.org/">http://linux.vbird.org/“开机关机流程与Loader”:

  1. 整个开机流程是

  (1) 载入BIOS的硬件信息,并获得第一个开机装配的代号

  (2)读取第一个开机装配的MBR的boot Loader (grub)的开机信息

  (3)载入OS Kernel信息,解压Kernel,尝试驱动硬件

  (4) Kernel履行init程序并得到run-lebel信息(如3或5)

  (5) init履行/etc/rc.d/rc.sysinit

  (6)启动内核外挂模块(/etc/modprobe.conf)

  (7) init履行run-level的各种Scripts,启动服务

  (8) init履行/etc/rc.d/rc.local

  (9)履行/bin/login,等候用户Login

  (10)Login后进入Shell

  看来精确的方法是把需求加载的模块放在(5)或(6),但正如网络上很多人的尝试,改正modprobe.conf都没有成功(比方在modprobe.conf中增添install ip_vs...).于是我改正了/etc/rc.d/rc.sysinit就成功加载了.

  初步尝试在rc.sysinit最后增添 modprobe.conf ip_vs,重启后lsmod | grep ip_vs,发现成功自动加载了.

  于是仿效rc.sysinit中其他模块的加载办法,扩大改脚本文件,在最后增添下来一段:

  # load LVS IPVS modules

  if [ -d /lib/modules/$unamer/kernel/net/ipv4/ipvs ]; then

  for module in /lib/modules/$unamer/kernel/net/ipv4/ipvs/* ; do

  module=${module##*/}

  module=${module%.ko}

  modprobe $module >/dev/null 2>&1

  done

  fi

  就把/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/下的全部模块都自动加载了.此中:

  if语句查抄ipvs模块的目录能否存在

  for循环遍历该目录下面的全部文件

  module=${module##*/} :此中##表示早年面删除字符,*/表示删除到最后一个/,假如一个#就表示只删除到第一个/.假如变量背面接##,表示在##背面的字符串取最长的(一向到最背面),假如接#,表示取最小的一段.

  module=${module%.ko}:表示从背面删除.ko.假如变量背面接%%,表示在%%背面的字符串取最长的(一向到最前面),假如接%,表示取最小的一段.

  这样多module的两次改正就得到了模块名,就是文件名不带途径和.ko后缀.

  modprobe $module >/dev/null 2>&1:加载模块,输出都指向空设备

  这样重启后lsmod | grep ip_vs就会得到:

  ip_vs_wrr 6977 0

  ip_vs_wlc 6081 0

  ip_vs_sh 6593 0

  ip_vs_sed 6081 0

  ip_vs_rr 6081 0

  ip_vs_nq 5953 0

  ip_vs_lc 5953 0

  ip_vs_lblcr 10565 0

  ip_vs_lblc 9797 0

  ip_vs_ftp 10053 0

  ip_vs_dh 6593 0

  ip_vs 79425 22 ip_vs_wrr,ip_vs_wlc,ip_vs_sh,ip_vs_sed,ip_vs_rr,ip_vs_nq,ip_vs_lc,ip_vs_lblcr,ip_vs_lblc,ip_vs_ftp,ip_vs


  以上是“Linux如安在系统启动时自动加载模块[操作系统]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • windows下的近似linux下的grep号令--findstr
  • linux下mysql链接被防火墙禁止的办理办法
  • Linux下mysql新建账号及权限设置办法
  • SUSE Linux下搭建Web服务器
  • Windows/Linux MySQL忘掉密码重置密码教程
  • Linux下Apache自动监测重启脚本(智能化程度较高)
  • linux备份 linux克隆 linux clone
  • <b>为什么 Linux不需求碎片整理</b>
  • CentOS6 yum搭建Linux+Nginx+PHP+MYSQL(LNMP)
  • Linux系统有效防备ARP攻击
  • Linux下 Memcache的安装和简单管理
  • 笔记本预装linux重装成windows系统
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .