Linux kernel

    xiaoxiao2023-11-05  137

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

    最新回复(0)