Linux内核模块运行在,在Linux启动时自动加载内核模块

如果需要在Linux启动时自动加载模块,往往使用mkinitrd命令将模块打包进ramdisk p_w_picpath。仔细研究了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文件,并添加执行权限;

#!/bin/sh

/sbin/modinfo -F filename 8021q > /dev/null 2>&1

if [ $? -eq 0 ]; then

/sbin/modprobe 8021q

fi

或者像这样

#!/bin/sh

if [ ! -c /dev/input /uinput ] ; then

exec /sbin/modprobe uinput > /dev/null 2>&1

fi

(2) 也可以在/etc/rc.modules里面加上相应内容,没有的话创建该文件。

操作完毕之后reboot,lsmod | grep fuse进行验证。

为什么不使用rc.local?

网上有些文章建议在/etc/rc.local文件中增加modprobe命令,某些情况下这样配置不会正常工作。因为系统启动是在执行完rc.d目录中的程序后才执行/etc/rc.local,因此,启动时rc.d中的程序如果用到了所需加载的模块,就会出错。

另外有些文章提到修改/etc/modprobe.conf文件,其实也是错误的。这个文件仅仅是定义一些内核模块的别名、以及一些特殊的加载、卸载命令。修改此文件并不能使模块在启动时被自动加载。

在RedHat 6.x之后,modprobe.conf已经取消了,如何对modprobe.d下.conf文件进行配置,.conf的如何被调用,还需要找人讨论一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值