RHEL内核管理
modinfo:查看模块信息
lsmod:查看已经加载的模块
insmod: 手动加载模块
rmmod:手动卸载模块
modprobe: 解决模块相依性问题
depmod: 产生模块相依性数据
/etc/modprobe.conf
一:内核管理
1:内核版本
MAJOY.MINOR.RELEASE[-CUSTON]
主要版本号.次要版本号.修正号—-软件厂商自定义版本号
次要版本号为偶数为稳定版本
次要版本为奇数为开发版本
uanme [OPTION]
-r 只查看目前的内核版本号
-s 查看目前的内核名称
-n 查看当前的主机名
-v 查看内核编译的版本与时间
-m 查看机器平台名称
-p 查看处理器信息
-i 查看硬件平台名称
-o 查看操作系统名称
-a 查看所有信息
2:内核组件
1)包含三个组件
内核镜像文件:vmlinuz-VERSION 或 vmlinux-VSERSION
通过启动加载器直接加载到内存,以启动内核与整个操作系统
2)内核模块
/lib/modules/KERNEL_VERSION
3)initrd镜像文件
部分模块制作成的“初始化内存磁盘”镜像文件,启动内核时,initrd镜像加载到内存,内核便可以从initrd镜像文件加载外置设备模块。
3:RHEL提供的内核RPM
kernel 普通内核
kernel-PAE 大于4G内存到64G 机器所使用内核
kernel-xen Xen虚拟化使用的内核
kernel-doc 内核说明文件
kernel-utils 内核管理工具,与核心有关的服务
二:管理内核模块
内核模块包含一下几方面:
硬件驱动
内核功能
1:内核模块的存放位置
/lib/modules/$(uname -r)/kernel
该目录下包含:
arch 与硬件平台相关的模块
crypto Linux内核提供的加密算法模块
drivers 硬件设备驱动程序
fs 与文件系统有关的模块
lib 各种模块所需要的链接库
net 网络相关的模块
sound 专门存放声卡程序的目录
2:查看模块信息 modinfo
#modinfo [-0][-F field][-k kernelversion] module...
-a 作者
-d 描述
-l 协议
-p 模块的参数
-n 模块名称信息 模块路径
-F FILED 指定要查看模块的FIELD信息
# modinfo -F filename softdog
/lib/modules/2.6.18-164.el5/kernel/drivers/char/watchdog/softdog.ko
modinfo -F author softdog
Alan Cox
3:查看已经加载的模块 lsmod
Usage: lsmod
Module Size Used by
megaraid 40233 0
ipv6 267361 26
xfrm_nalgo 13381 1 ipv6
crypto_api 12609 1 xfrm_nalgo
Module 模块名称
Size 模块加载到内存时所占的体积大小,单位是字节Bytes
Used by 那些模块正在使用这个模块
4:手动加载模块 insmod
Usage: insmod filename [PARAMETER=VALUES]
filename: 要加载模块的文件名,必须是绝对路径
PARAMETER=VALUES 加载模块时的参数
# insmod $(modinfo -n softdog)
# lsmod |grep softdog
softdog 9941 0
4:手动卸载模块 rmmod
Usage: rmmod [-fhswvV] modulename ...
-f (or --force) forces a module unload, and may crash your
machine. This requires the Forced Module Removal option
when the kernel was compiled.
-h (or --help) prints this help text
-s (or --syslog) says use syslog, not stderr
-v (or --verbose) enables more messages
-V (or --version) prints the version code
-w (or --wait) begins a module removal even if it is used
and will stop new users from accessing the module (so it
should eventually fall to zero).
#rmmod -s softdog
5:解决模块相依性问题 modprobe
Usage: modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [-o <modname>] <modname> [parameters...]
modprobe -r [-n] [-i] [-v] <modulename> ...
modprobe -l -t <dirname> [ -a <modulename> ...]
Symbol是内核提供的系统呼叫或链接库应用程序界面(API)的识别数据。
参数解释
-C config-file 指出内核配置文件的位置,默认为/etc/modprobe.conf
MODULE 加载指定模块
-a 加载指定模块
-r 卸载模块指定模块
-l 显示符合条件的模块文件路径名称 和modinfo -n一样
-c 按目前模块的状态,产生符合内核模块设置格式的设置值
查看模块路径,不管是否安装 和modinfo -n 一样
#modprobe -l softdog
/lib/modules/2.6.18-164.el5/kernel/drivers/char/watchdog/softdog.ko
#modprobe -l 查看所有已安装模块的路径
#modprobe -a softdog
#modprobe softdog 这里不能使用绝对路径
6:产生模块相依性数据 depmod
depmod -b [BASEDIR]
-b [BASEDIR] 可以省略。默认在/lib/modules/$(uname -r)/
/lib/modules/$(uname -r)/下
modules.*文件为模块相依性数据
modules.dep主要的模块相依性数据
ls /lib/modules/$(uname -r)/modules.* |xargs rm -rf
重新生存
# depmod
7:配置内核配置文件
/etc/modprobe.conf
该配置文件具有以下功能:
可以设置模块默认的参数
可以指定加载或卸载模块时执行什么工作
可以设置模块别名
配置语法
alias ALIAS_NAME MODULE 为一个模块设置一个别名。然后可以在LINUX使用别名代替模块的名称
options MODULE OPTIONS 设置模块默认的参数
install MODULE COMMAND 使用insmod 或modprobe等工具载入MODULE时,便相当于执行了COMMAND指令
remove MODULE COMMAND 使用insmod 或modprobe等工具卸载MODULE时,便相当于执行了COMMAND指令
include FILENAME 可以把内核模块配置文件拆分成几个文件,然后使用include引入
不小心删除/etc/modprobe.conf怎么办?
1)逐一加载所需的模块以及配置数据
2)将modprobe -c产生的内容转存成/etc/modprobe.conf。
将iptable 防火墙规则加入ftp模版
install MODULE COMMAND
install ip_conntrack_ftp /bin/true
后验证只需要添加下面
# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
三:配置内核参数
要改变内核提供的功能有两种方法:
改写LINUX内核源码,然后重新编译一次。
配置REHL内核参数,马上就可以改变内核的功能
内核参数是存储在内核中的资料,通过内核参数可以执行以下动作
了解内核执行期间的相关信息
修改内核的功能
1:/proc/目录
配置内核参数的第一种方法,是直接编译/proc目录下的某一个文件
proc内核中的数据以文件的形式呈现LINUX 内核中的信息。
1)/proc/sys/中的内核参数文件
crypto LINUX加密
debug DEBUG信息
dev 设备相关信息
fs 文件系统相关信息
kernel 内核本身信息
net 网络有关的信息
vm 虚拟内存方面
2)修改/proc/sys/中的内核参数
3) 设置/proc/sys/中的内核参数
修改设置后还是保存在内存中,重启后消失
2:使用sysctl配置内核参数
功能
查看某一个或全部的内核参数
设置内核参数
1)sysctl定义的内核参数
(1) /proc/sys、路径去掉
(2) 将剩下路径中的"/"换成"."
echo "/proc/sys/kernel/hostname" |awk -F/ -v 'OFS=.' '{print$4,$5}'
2)使用sysctl 查看内核参数
sysctl -a 查看全部内核参数
sysctl kernel.hostname 查看单个的内核参数
sysctl -a |grep kernel.host
3)使用sysctl修改内核参数
sysctl -w PARAMETER=VALUE
sysctl -w kernel.hostname=heldiege2
# sysctl kernel.hostname
kernel.hostname = heldiege2
此设置保存在内存中
4)配置sysctl配置文件,永久修改sysctl配置
/etc/sysctl.conf
在配置文件里以PARAMETER=VALUE 格式出现
# grep -vE "^$|#" /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
配置文件修改生效方式
重启系统,不推荐
sysctl -p [CONFIG_FILE]
立即将配置文件生效
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
修改配置文件:
net.ipv4.ip_forward = 1
再次查看
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
#sysctl -p /etc/sysctl.conf
net.ipv4.ip_forward = 1
内核参数已经改变
四:升级内核
升级内核的原因:
新内核修补了安全漏洞
新内核修改了严重的BUG
新内核提供了更多的功能
升级的RHEL内核的方法
从内核源码升级 [不是很推荐]
手动安装新的KERNEL RPM文件
通过YUM升级RHEL内核
1:手动安装新版的kernel RPM文件 是安装方式
步骤
(1)先安装新版本的kernel PRM
(2)重新启动后选择新版的内核来启动计算机
(3)测试,如果发现新版本内核有任何问题,则可以再重启计算机选择使用旧版的内核启动RHEL
(4)如果没有问题,再卸载旧版的kernel RPM
注意:不能使用rpm -U 或rpm -F kernel RPM 来升级系统内核
# rpm -ivh http://172.17.2.213/download/kernel-2.6.18-238.el5.i686.rpm
Retrieving http://172.17.2.213/download/kernel-2.6.18-238.el5.i686.rpm
warning: /var/tmp/rpm-xfer.qv1wBn: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:kernel ########################################### [100%]
# reboot
# rpm -q kernel
kernel-2.6.18-164.el5
kernel-2.6.18-238.el5
# uname -a
Linux rheldiege2 2.6.18-238.el5 #1 SMP Sun Dec 19 14:24:47 EST 2010 i686 i686 i386 GNU/Linux
正常启动,内核已升级
2:通过yum升级内核 是UPDATE的方式
配置好yum源和配置文件
#rpm -q kernel
#yum -d 0 -y update kernel
升级完毕后重启计算机