Linux kernel

一.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/目录下

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值