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_VERSION3)initrd镜像文件部分模块制作成的“初始化内存磁盘”镜像文件,启动内核时,initrd镜像加载到内存,内核便可以从initrd镜像文件加载外置设备模块。3:RHEL提供的内核RPMkernel 普通内核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 Cox3:查看已经加载的模块 lsmod
Usage: lsmodModule Size Used bymegaraid 40233 0 ipv6 267361 26 xfrm_nalgo 13381 1 ipv6crypto_api 12609 1 xfrm_nalgoModule 模块名称Size 模块加载到内存时所占的体积大小,单位是字节BytesUsed by 那些模块正在使用这个模块4:手动加载模块 insmod
Usage: insmod filename [PARAMETER=VALUES]filename: 要加载模块的文件名,必须是绝对路径PARAMETER=VALUES 加载模块时的参数# insmod $(modinfo -n softdog) # lsmod |grep softdogsoftdog 9941 04:手动卸载模块 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 softdog5:解决模块相依性问题 modprobeUsage: 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.confMODULE 加载指定模块-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 重新生存# depmod7:配置内核配置文件
/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 COMMANDinstall 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.host3)使用sysctl修改内核参数sysctl -w PARAMETER=VALUEsysctl -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 = 0net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_syncookies = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = 4294967295kernel.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.rpmRetrieving http://172.17.2.213/download/kernel-2.6.18-238.el5.i686.rpmwarning: /var/tmp/rpm-xfer.qv1wBn: Header V3 DSA signature: NOKEY, key ID 37017186Preparing... ########################################### [100%] 1:kernel ########################################### [100%]# reboot# rpm -q kernelkernel-2.6.18-164.el5kernel-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升级完毕后重启计算机