Linux内核模块存放位置:/lib/modules/`uname -r`/kernel/
开机时自动加载的模块列表:/etc/modprobe.conf
加载使用者自订模块:/etc/sysconfig/modules
开机时用于加载模块的脚本文件:/etc/rc.d/rc.sysinit
开机时读取的一些服务的相关设定文件存放目录:/etc/sysconfig
已加载的内核模块以及加载在内存中的位置:/proc/modules
lsmod:查看文件/etc/proc/modules;显示已加的载模块及在内存中的位置
modprobe:这个指令是用来加载模块的,它会主动去搜寻modules.dep的内容
格式为:modprobe[-lcf] module_name
-c:列出当前系统所有的模块
-l:列出目前在/lib/modules/`uname -r`/kernel当中所有模块完整文件名
-f:强制加载该模块
-r:类似rmmod,就是移除某个模块例:modprobesmbfs:加载smbfs模块
insmod:完全由使用者自行加载一个完整文件名
例:insmod /lib/modules/`uname-r`/kernel/fs/smbfs/smbfs.ko
Rmmod [-fw] module_name
-f:强制将该模块移除掉,不论是否正被使用
-w:若该模块正被使用,则rmmod会等待该模块被使用完毕后,才移除他
上面介绍了跟linux模块相关的一些文件和常见的命令,一般来说,系统内核自带的内核模块都能满足实际的需求,但也有些硬件,在系统内部找不到相对应的内核模块,这就需要我们自己去编译加载了。
编译加载步骤(以在RedHat 9中加载D-link530网卡为例):
1、查看内核版本(版本不同,模块放置路径也不同):uname�Cr
2、进入内核模块路径:cd /lib/modules/`uname-r`/kernel/drivers/net(为2.4版本路径) cd /lib/modules/`uname-r`/net(为2.2版本路径)
3、查询模块:ls�Cl via*(via为该芯片组名的前三个字母)
如果自己不知道网卡被检测到,可以用以下方法来测试:dmesg | grep eth;dmesg用来显示开机启动信息的,如果被linux系统检测到,就不需要编译内核模块了,万一检测不到就必须进行编译工作了。
4、编译模块:
1-:下载网卡驱动程序模块(dlkfet-4.24.tar.gz)
2-:确认安装所需要的包:kernel-source-2.4.20-18.9 kernel-2.4.20-18.9 gcc-3.2.2-5 make-3.79.1-17
3-:编译模块:tar vxfdlkfet-4.24.tar.gz;cd dlkfet
-4.24;make;cprhinefet.o/lib/modules/`uname -r`/kernel/drivers/net;depmod�Ca;
5、加载模块:
1-:加载模块测试:modproberhinefet
2-:设置开机加载模块:vim /etc/modules.conf;在文件中加入一行:alias eth0 rhinefet
3-:重新启动,看是否正常启动模块