一.kernel模块信息获取和管理
1.lsmod命令
1.lsmod:Show the status of modules in the Linux Kernel,显示内核模块信息
[root@kasumi ~]# lsmod
Module Size Used by
autofs4 27000 3
.
.
2.lsmod显示的内核来自于/proc/modules
2.modinfo命令
1.modinfo命令:Show information about a Linux Kernel module,详细显示内核模块信息
2.语法:modinfo [-F field] [-k kernel] [modulename|filename…]
[root@kasumi ~]# modinfo ext4
filename: /lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko
license: GPL
description: Fourth Extended Filesystem
author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others
srcversion: 74AEE2BDA63AC8482A78F4D
depends: mbcache,jbd2
vermagic: 2.6.32-696.el6.x86_64 SMP mod_unload modversions
3.相关选项:
1)-F field选项:仅显示指定字段的信息
[root@kasumi ~]# modinfo -F filename ext4
/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko
2)-n选项:显示文件路径
[root@kasumi ~]# modinfo -n ext4
/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko
3.modprobe命令
1.modprobe命令:Add and remove modules from the Linux Kernel,从内核中删除或新增模块
2.语法:modprobe [-r] module_name
1)模块的动态装载:modprobe module_name
[root@kasumi ~]# lsmod | grep btrfs
[root@kasumi ~]# modprobe btrfs
[root@kasumi ~]# lsmod | grep btrfs
btrfs 786685 0
zlib_deflate 21629 1 btrfs
lzo_decompress 2343 1 btrfs
lzo_compress 2368 1 btrfs
libcrc32c 1246 1 btrfs
ps:使用modprobe装载模块时,会自动解决依赖关系
2)模块的动态卸载:modprobe -r module_name
[root@kasumi ~]# modprobe -r btrfs
[root@kasumi ~]# lsmod | grep btrfs
4.insmod,rmmod命令
1.insmod命令:装载指定模块,insmod [filename] [module options…],其中filename为模块文件的文件路径
[root@kasumi ~]# insmod $(modinfo -n btrfs)
insmod: error inserting '/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/btrfs/btrfs.ko': -1 Unknown symbol in module
[root@kasumi ~]# modinfo btrfs | grep depends
depends: libcrc32c,zlib_deflate,lzo_compress,lzo_decompress
[root@kasumi ~]# insmod $(modinfo -n libcrc32c)
[root@kasumi ~]# insmod $(modinfo -n zlib_deflate)
[root@kasumi ~]# insmod $(modinfo -n lzo_compress)
[root@kasumi ~]# insmod $(modinfo -n lzo_decompress)
[root@kasumi ~]# insmod $(modinfo -n btrfs)
[root@kasumi ~]# lsmod | grep "btrfs"
btrfs 786685 0
lzo_decompress 2343 1 btrfs
lzo_compress 2368 1 btrfs
zlib_deflate 21629 1 btrfs
libcrc32c 1246 1 btrfs
ps:需注意使用insmod安装内核模块时,需要手动解决目标模块的依赖关系,之后才可以整安装模块
2.rmmod:卸载模块,rmmod [module_name]
[root@kasumi ~]# rmmod btrfs
[root@kasumi ~]# lsmod | grep "btrfs"
5.depmod命令
1.depmod命令:Generate modules.dep and map files,内核模块依赖关系文件的生成工具
二.ramdisk文件管理
1.mkinitrd命令
1.mkinitrd命令:为当前使用中的内核重新制作ramdisk文件
2.语法:mkinitrd [OPTION…] [initrd-image] kernel-version
3.相关选项:
1)- -with=module:除了默认的模块之外需要装载至initramfs中的模块
2)- -preload=module:initramfs所提供的模块需要预先装载的模块
4.测试
[root@kasumi ~]# ls /boot
config-2.6.32-696.el6.x86_64 initramfs-2.6.32-696.el6.x86_64.img System.map-2.6.32-696.el6.x86_64
efi lost+found vmlinuz-2.6.32-696.el6.x86_64
grub symvers-2.6.32-696.el6.x86_64.gz
[root@kasumi ~]# mv /boot/initramfs-2.6.32-696.el6.x86_64.img /root
[root@kasumi ~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
[root@kasumi ~]# ls /boot
config-2.6.32-696.el6.x86_64 initramfs-2.6.32-696.el6.x86_64.img System.map-2.6.32-696.el6.x86_64
efi lost+found vmlinuz-2.6.32-696.el6.x86_64
grub symvers-2.6.32-696.el6.x86_64.gz
2. dracut命令
1.dracut命令: low-level tool for generating an initramfs image,为当前使用中的内核重新制作ramdisk文件
2.语法:dracut [OPTION…] [image [kernel version]]
3.测试:同mkinitrd命令
dracut /boot/initramfs-$(uname -r).img $(uname -r)
三.内核信息输出的伪文件系统
1./proc伪文件系统
1./proc:内核状态和统计信息的输出接口,并且还提供了一个配置接口,/proc/sys/
2./proc相关参数
1)只读:信息输出,例如/proc/#/*
2)可写:可接受用户指定一个"新值"来实现对内核某功能或特性的配置/proc/sys/
/proc/sys:net/ipv4/ip_forward相当于net.ipv4.ip_forward
3.sysctl命令:专用于查看或设定/proc/sys/目录下参数的值
1)语法:sysctl [options] [variable[=value]]
2)查看可设定的内核参数
1.sysctl -a
[root@kasumi ~]# sysctl -a
2.sysctl variable
[root@kasumi ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
3)修改其值:sysctl -w variable=value
[root@kasumi ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
[root@kasumi ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@kasumi ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
ps:进队当前运行的内核有效,重启内核后设定的相关参数则会丢失
4.文件系统命令(cat echo)更改内核参数
1)cat 查看:cat /proc/sys/PATH/TO/SOME_KERNEL_FILE
[root@kasumi ~]# cat /proc/sys/net/ipv4/ip_forward
1
2)echo 设定:echo “VALUE” > /proc/sys/PATH/TO/SOME_KERNEL_FILE
[root@kasumi ~]# echo "0" > /proc/sys/net/ipv4/ip_forward
[root@kasumi ~]# cat /proc/sys/net/ipv4/ip_forward
0
ps:进队当前运行的内核有效,重启内核后设定的相关参数则会丢失
5.配置文件:/etc/sysctl.conf;/etc/sysctl.d/*.conf
1)测试
[root@yuki ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
[root@yuki ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@yuki ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@yuki ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
[root@yuki ~]# cat /proc/sys/net/ipv4/ip_forward
1
2)使更改的配置文件立即生效:sysctl -p [/PATH/TO/CONFIG_FILE]
ps:centos6中的配置文件为/etc/sysctl.conf,Centos7中配置文件为:/etc/sysctl.conf或/etc/sysctl.d/*.conf(其实为/etc/sysctl.con的链接文件)
6.内核参数:
1.net.ipv4.ip_forward:管理核心转发功能
2.vm.drop_caches:管理缓存信息
3.kernel.hostname:主机名
4.net.ipv4.icmp_echo_ignore_all:忽略所有ping操作
1)关闭ping操作
[root@yuki ~]# ping 192.168.3.20
PING 192.168.3.20 (192.168.3.20) 56(84) bytes of data.
64 bytes from 192.168.3.20: icmp_seq=1 ttl=64 time=0.335 ms
更改192.168.3.20的参数
[root@grub6 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
[root@grub6 ~]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
此时已经ping不通192.168.3.20了
[root@yuki ~]# ping 192.168.3.20
PING 192.168.3.20 (192.168.3.20) 56(84) bytes of data.
^C
2)管理缓存信息,通过更改对应内核参数,可以实现清除缓存
[root@yuki ~]# free -h
total used free shared buff/cache available
Mem: 976M 278M 350M 7.2M 346M 505M
Swap: 1.0G 0B 1.0G
[root@yuki ~]# sysctl vm.drop_caches
vm.drop_caches = 0
[root@yuki ~]# sysctl -w vm.drop_caches=1
vm.drop_caches = 1
[root@yuki ~]# free -h
total used free shared buff/cache available
Mem: 976M 278M 530M 7.2M 167M 517M
Swap: 1.0G 0B 1.0G
[root@yuki ~]# sysctl -w vm.drop_caches=2
vm.drop_caches = 2
[root@yuki ~]# free -h
total used free shared buff/cache available
Mem: 976M 261M 555M 7.2M 159M 538M
Swap: 1.0G 0B 1.0G
3)更改主机名
[root@yuki ~]# cat /proc/sys/kernel/hostname
yuki
[root@yuki ~]# sysctl kernel.hostname
kernel.hostname = yuki
[root@yuki ~]# sysctl -w kernel.hostname=kasumi
kernel.hostname = kasumi
[root@yuki ~]# sysctl kernel.hostname
kernel.hostname = kasumi
2./sys伪文件系统
1.sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的可设置参数;对这些参数的修改,可以实现定制硬件设备工作特性
2.udev:通过读取/sys目录下的硬件设备信息,按需为各硬件设备创建设备文件,udev为用户空间程序;专用工具:devadmin, hotplug
ps:udev为设备创建设备文件时,会读取其实现定义好的规则文件,一般存放在/etc/udev/rules.d/目录下,以及/usr/lib/udev/rules.d/目录下