• Linux内核基本装载卸载


    Linux由两部分组成:内核核心+内核模块
    核心的命名通常是vmlinuz-VERSION-release,模块的放置于/lib/modules/VERSION-release/

    一旦系统运行起来,内核将被加载进内存,查看运行中的内核基本信息
    uname [OPTION]...
                -r:内核的release号
                -n:主机名

    模块信息获取和管理

    如果要了解运行中的内核所加载的模块
    lsmod命令   #显示的信息来自于/proc/modules

    内核模块详细信息
    modinfo [-F field] [-k kernel] [modulename|filename...]
                -F field: 仅显示指定字段的信息;
                -n:显示文件路径;
                -d:显示描述
                -p:显示模块参数

    内核模块装卸载
    modprobe  [-r]  module_name
                模块的动态装载:modprobe  module_name   #/etc/modprobe.conf给模块传递参数
                动态卸载:modprobe  -r  module_name

    模块依赖
              /lib/modules/version-release/目录下有moudules.dep文件记载了模块间的依赖关系,并且此文件被编译成二进制格式(modules.dep.bin)使用,如果此文件损坏或丢失可以使用depmod命令重新生成(也可以生成/boot/system.map)

    装卸载内核模块
              insmod命令:insmod  [filename]  [module options...]    装载需完整路径
              rmmod命令:rmmod  [module_name]    卸载只需要模块名称
              此方式需要自行解决模块间的依赖关系

    /proc目录简介
    内核可配置参数信息和当前运行状态信息通过/proc伪文件系统
    内核参数:可写,可接受用户指定一个“新值”来实现对内核某功能或特性的配置,一般位于/proc/sys,除此其他目录为只读信息
                       参数的修改方式:(1)sysctl命令管理内核参数。(2)echo重定向输出至文件
    运行状态:只读,仅用于信息显示。如:此目录下数字命名的子目录为当前运行进程的信息

    内核参数调整
    (1) sysctl命令
        专用于查看或设定/proc/sys目录下参数的值;
         sysctl [options]  [variable[=value]]
         查看:
              # sysctl  -a   所有能够修改的内核参数
              # sysctl  variable       
         修改: sysctl  -w  variable=value
    (2) 文件系统命令(cat, echo)
        查看:cat  /proc/sys/PATH/TO/SOME_KERNEL_FILE
        设定:echo  "VALUE"  > /proc/sys/PATH/TO/SOME_KERNEL_FILE
    注意:上述两种方式的设定仅当前运行内核有效,并不会永久生效,使用配置文件:/etc/sysctl.conf,  /etc/sysctl.d/*.conf
    并立即生效的方式:sysctl  -p  [/PATH/TO/CONFIG_FILE]

    示例:
    free –m   查看缓存占用的内存空间
      /proc/sys/vm/drop_caches=1  回收buffers和cache的内存空间

    /sys目录简介
      内核用来输出已经识别硬件设备的属性,也有内核对硬件特性的可设置参数,某些参数修改可用于调整硬件设备工作特性。

    /dev目录简介
      此目录用于根据已有硬件设备输出设备文件,然而内核访问设备是直接通过驱动程序的,只有用户访问硬件设备的时候才需要通过设备文件,然而内核启动时探测出各个已存在的硬件信息是不会为之创建设备文件的。所以2.4内核之前是预先创建好各种硬件所有的设备文件,后来是当用户空间需要使用硬件设备时重新触发内核探测硬件,并把信息保留在/sys目录,udev通过读取此目录信息,来为已有的设备创建设备文件。
    udev创建出来的设备文件命名都是驱动文件名,可以读取其事先定义好的规则文件,一般在/etc/udev/rules.d/目录下以及/usr/lib/udev/rules.d/目录,来重新为设备文件命名。


    ramdisk文件的制作
    (1) mkinitrd命令
            为当前使用中的内核重新制作ramdisk文件,此命令也是调用dracut:
            # mkinitrd [OPTION...] [<initrd-image>] <kernel-version>
                      --with=<module>:除了默认的模块之外需要装载至initramfs中的模块;
                      --preload=<module>:initramfs所提供的模块需要预先装载的模块;
             示例: ~]# mkinitrd  /boot/initramfs-$(uname -r).img   $(uname -r)
     
    (2) dracut命令
            # dracut [OPTION...] [<image> [<kernel version>]]
             示例: ~]# dracut /boot/initramfs-$(uname -r).img  $(uname -r)

  • 相关阅读:
    JavaScript函数节流与函数去抖
    AngularJS 中文资料+工具+库+Demo 大搜集
    一个意想不到的Javascript内存泄漏
    mac添加Chromedriver
    selenium3+python自动化1——input标签上传文件
    python笔记1——xml文件的创建,读写,与增删改查
    C# 单例模式
    java的byte数组转换成在[0,255]范围内
    【转载】Stack Overflow: The Architecture
    C# 号码归属地查询算法(根据Android来电归属地二进制文件查询修改)
  • 原文地址:https://www.cnblogs.com/otherside/p/6684120.html
Copyright © 2020-2023  润新知