Linux 内核模块管理

Linux 内核模块管理

目录:

1、内核模块路径

2、查看已加载的内核

3、加载与卸载内核模块

4、修改内核参数

  Linux内核采用的是模块化技术,这样的设计使得系统内核可以保持最小化,同时确保了内核的可扩展性与可维护性,模块化设计允许我们在需要时才将模块加载至内核,实现动态内核调整。本文重点关注方法与思路,具体实现可以参考kernel-doc文档。

1、内核模块存放位置

  Linux内核模块文件的命名方式通常为<模块名称.ko>,CentOS 6.3系统的内核模块被集中存放在/lib/modules/uname -r/ [1]目录下(uname -r获得的信息为当前内核的版本号)。下面通过几个实例说明对内核模块的基本操作。

2、 查看已加载内核模块

  lsmod命令用来显示当前Linux内核模块状态,不是使用任何参数会显示当前已经加载的所有内核模块。输出的三列信息分别为模块名称、占用内存大小、是否在被使用,如果第三列为0则该模块可以随时卸载,非0则无法执行modprobe删除模块。

[root@centos6 ~]# lsmod 
Module                  Size  Used by 
bridge                 79950   0 
stp                     2173   1 bridge 
llc                     5642    2 bridge,stp 
fuse                   66891   2 
autofs4                27212    3 
sunrpc                263516   1 
ipt_REJECT              2351    2 
nf_conntrack_ipv4       9506     2 
nf_defrag_ipv4          1483     1 nf_conntrack_ipv4 
iptable_filter           2793    1 
ip_tables              17831    1 iptable_filter 
(部分输出省略) 

3、加载与卸载内核模块

  modprobe命令可以动态加载与卸载内核模块:

[root@centos6 ~]# modprobe ip_vs     #动态加载ip_vs模块 
[root@centos7 ~]# lsmod |grep ip_vs  #查看模块是否加载成功 
[root@centos7 ~]# modprobe -r ip_vs  #动态卸载ip_vs模块 

modinfo命令可以查看内核模块信息:

[root@centos7 ~]# modinfo ip_vs 
filename:       /lib/modules/2.6.32-279.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko 
license:        GPL 
srcversion:     01386EABC060B63920E181B 
depends:        ipv6,libcrc32c 
vermagic:       2.6.32-279.el6.x86_64 SMP mod_unload modversions 

  通过上述modprobe方式加载的内核模块仅在当前有效,计算机重启后并不会再次加载该模块,如果希望系统开机自动挂载内核模块则需要将modprobe命令写入/etc/rc.sysinit文件中:

[root@centos7 ~]# echo “modprobe ip_vs” >> /etc/rc.sysinit 

  当内核模块不再需要时可以通过将/etc/rc.sysinit文件中的对应modprobe命令删除,但需要重启计算机才生效。此时,可以通过modprobe -r命令来立刻删除内核模块:

[root@centos6 ~]# modprobe -r ip_vs 

4、修改内核参数

1)临时调整内核参数

  Linux内核参数随着系统的启动会被写入内存中,我们可以直接修改/proc目录下的大量文件来调整内核参数,并且这种调整是立刻生效的,下面我们来看几个实例。

  开启内核路由转发功能(通过0或1设置开关):

[root@centos6 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward 

  开启内核路由转发功能:

[root@centos6 ~]# echo "1" > echo "1" >t /proc/sys/net/ipv4/icmp_echo_ignore_all 

  调整所有进程总共可以打开的文件数量(当大量的用户访问网站资源时可能会因该数字过小而导致错误):

[root@centos6 ~]# echo "108248" >/proc/sys/fs/file-max 

2) 永久调整内核参数

  可以通过man proc可以获得大量关于内核参数的描述信息。但以上通过直接修改/proc相关文件的方式在系统重启后将不再有效,如果希望设置参数并永久生效可以修改/etc/sysctl.conf文件,文件格式为选项=值,我们通过vim修改该文件将前面3个案例参数设置为永久有效:

[root@centos6 ~]# vim /etc/sysctl.conf  net.ipv4.ip_forward = 1 
net.ipv4.icmp_echo_ignore_all = 1  fs.file-max = 108248

  注意,通过sysctl.conf文件修改的内核参数不会立刻生效,修改完成后使用sysctl -p命令可以使这些设置立刻生效。


转自:https://blog.51cto.com/manual/1130321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值