内核模块和内核参数

Posted 皮特王同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核模块和内核参数相关的知识,希望对你有一定的参考价值。

内核模块

Linux内核采用模块化设计,使得系统内核可以维持最小化,同时又保证内核功能的可扩展性。内核模块的位置在/lib/modules/<内核版本>/ 这个目录下。

lsmod查看已经加载的内核模块

[[email protected] 2.6.32-504.el6.x86_64]# lsmod
Module                  Size  Used by
tcp_diag                1041  0 
inet_diag               8735  1 tcp_diag
ipv6                  334932  266 
microcode             112653  0 
vmware_balloon          7199  0 
btusb                  16915  0 
bluetooth              99271  1 btusb
rfkill                 19255  1 bluetooth
snd_ens1371            21587  0 
snd_rawmidi            23017  1 snd_ens1371

#模块                   占用内存大小          多少进程正在使用

 modprobe加载和卸载内核模块

#加载 modprobe
[[email protected] 2.6.32-504.el6.x86_64]# modprobe ip_vs
[[email protected] 2.6.32-504.el6.x86_64]# lsmod | grep ip_vs
ip_vs                 125694  0 
libcrc32c               1246  1 ip_vs
ipv6                  334932  267 ip_vs

#卸载 modprobe -r
[[email protected] 2.6.32-504.el6.x86_64]# modprobe -r ip_vs
[[email protected] 2.6.32-504.el6.x86_64]# lsmod | grep ip_vs

#开机自动加载
[[email protected] 2.6.32-504.el6.x86_64]# echo "modprobe ip_vs" >> /etc/rc.local

 modinfo查看内核模块信息

[[email protected] 2.6.32-504.el6.x86_64]# modinfo ip_vs
filename:       /lib/modules/2.6.32-504.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko
license:        GPL
srcversion:     3FD98B56AD8DC6FD87609BA
depends:        ipv6,libcrc32c
vermagic:       2.6.32-504.el6.x86_64 SMP mod_unload modversions 
parm:           conn_tab_bits:Set connections‘ hash size (int)

 内核参数

Linux内核参数会随着系统启动被写入内存,/proc目录是一个虚拟文件系统,用于映射内存数据,每个内核参数都以独立的文件形式存放在/proc目录下。

 临时调整内核参数

我们可以通过修改/proc目录下的文件来调整内核参数,这种调整立刻生效,但系统重启后就失效。

#打开内核路由转发功能
[[email protected] proc]# echo "1" > /proc/sys/net/ipv4/ip_forward
#禁止其他主机ping自己(禁止所有icmp回包)
[[email protected] proc]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all 
#调整文件描述符即可以打开的文件的最大数量
[[email protected] proc]# echo "108248" > /proc/sys/fs/file-max 

 永久调整内核参数

我们可以通过修改配置文件/etc/sysctl.conf永久调整内核参数,并通过sysctl -p命令使参数立刻生效。

[[email protected] proc]# vim /etc/sysctl.conf 

net.ipv4.ip_forward = 1
net.ipv4.icmp_echo_ignore_all = 1
fs.file-max = 108248

[[email protected] proc]# sysctl -p

以上是关于内核模块和内核参数的主要内容,如果未能解决你的问题,请参考以下文章

内核模块实验奔跑吧Linux内核

内核模块和主要编号

内核模块

什么是在 C++ 中获取总内核数量的跨平台代码片段? [复制]

[linux内核笔记-1]内核模块参数传递----module_param()函数

module_param的内核模块参数简介