共计 1418 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | Linux 内核采用的是模块化技术,这样的设计可以使得系统内核保持最小化,同时确保了内核的可扩展性和可维护性,模块化设计允许我们在需要时才将模块加载至内核,实现动态内核的调整。下面我给大家介绍一下有关内核的操作方法。 |
内核模块存放位置
Linux 内核模块文件的命名方式通常为 < 模块名称.ko>,Centos 6.3 系统的内核模块被集中存放在 /lib/modules/`uname -r`/ 目录下。
查看已加载系统模块
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 9606 1
nf_defrag_ipv4 1483 1 nf_conntrack_ipv4
iptable_filter 2793 1
ip_tables 17831 1 iptable_filter
加载和卸载系统内核
modprobe 命令可以动态加载和卸载内核模块,具体命令如下:
[root@centos6 ~]# modprobe ip_vs #动态加载 ip_vs 模块
[root@centos6 ~]# lsmod | grep ip_vs #查看模块是否加载成功
[root@centos6 ~]# modprobe -r ip_vs #动态卸载 ip_vs 模块
modinfo 命令也可以查看内核模块信息:
[root@centos6 ~]# modinfo ip_vs
修改内核参数
临时调整内核参数
Linux 系统参数随着系统的启动会被写入系统内存中,我们可以直接修改 /proc 目录下的大量文件来调整内核参数,并且这种调整是立即生效的,下面举几个例子:
开启内核路由转发功能(通过 0 或 1 设置开关):
[root@centos6 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
开启禁止其它主机 ping 本机功能:
[root@centos6 ~]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
调整所有的进程可以打开的文件总数量:
[root@centos6 ~]# echo "108248" >/proc/sys/fs/file-max
永久调整内核参数
通过以上方法直接修改 /proc 相关文件的方式,在系统重启后不再有效,如果希望设置参数永久生效,可以修改 /etc/sysctl.conf 文件,可以使用 Vim 修改该文件:
[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://www.linuxprobe.com/inux-kernel-modules-introduction.html 作者:冯琪,审核员:逄增宝
正文完
星哥玩云-微信公众号