美文网首页
note_15.1_kernel、ldd命令

note_15.1_kernel、ldd命令

作者: 人間失格_430b | 来源:发表于2019-03-11 16:45 被阅读0次

Linux Kernel:

CentOS启动流程:POST --> Bootloader(BIOS, MBR) --> Kernel(initrd) --> rootfs --> switch_root --> /sbin/init

ldd命令:

print shared library dependencies
ldd [OPTION]... FILE...


内核设计体系:单内核、微内核

  Linux:单内核设计,但充分借鉴了微内核体系的设计的优点;为内核引入了模块化机制;

  • 内核的组成部分:

    • kernel:内核核心,一般为bzImage,通常位于/boot目录,名称为vmlinuz-VERSION-release;
    • kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/
      内核模块与内核核心版本一定要严格匹配;

            [ ]:N
            [M]:Module
            [*]:Y,编译进内核核心

            内核:动态装载和卸载;

    • ramdisk:辅助性文件,并非必须,这取决于内核是否能直接驱动rootfs所在的设备;
      目标设备驱动,例如SCSI设备的驱动;
      逻辑设备驱动,例如LVM设备的驱动;
      文件系统,例如xfs文件系统;

      ramdisk:是一个简装版的根文件系统;


内核信息获取:

  • uname命令:
    print system information

    uname [OPTION]...
      -r:内核的release号
      -n:主机名

              文件:/boot/vmlinuz-VERSION-release
                  
      模块信息获取和管理:
    
  • lsmod命令:
    Show the status of modules in the Linux Kernel

    显示的内核来自于/proc/modules

  • modinfo命令:
    Show information about a Linux Kernel module

    modinfo [-F field] [-k kernel] [modulename|filename...]
      -F field: 仅显示指定字段的信息;
      -n:显示文件路径;

  • modprobe命令:
    Add and remove modules from the Linux Kernel

    modprobe [-r] module_name
    模块的动态装载:modprobe module_name
    动态卸载:modprobe -r module_name

  • depmod命令:
    Generate modules.dep and map files.
    内核模块依赖关系文件的生成工具

  • 模块的装载和卸载的另一组命令:

    • insmod命令:
      insmod [filename] [module options...]
        filename:模块文件的文件路径;

    • rmmod命令:
      rmmod [module_name]


ramdisk文件的管理:

  1. mkinitrd命令
    为当前使用中的内核重新制作ramdisk文件:
    mkinitrd [OPTION...] [<initrd-image>] <kernel-version>
      --with=<module>:除了默认的模块之外需要装载至initramfs中的模块
      --preload=<module>:initramfs所提供的模块需要预先装载的模块

    e.g.:~]# mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

  2. dracut命令
    low-level tool for generating an initramfs image
    dracut [OPTION...] [<image> [<kernel version>]]

    e.g.:~]# dracut /boot/initramfs-$(uname -r).img $(uname -r)


内核信息输出的伪文件系统:

  • /proc:内核状态和统计信息的输出接口;同时,还提供一个配置接口,/proc/sys;
    参数:
      只读:信息输出;例如/proc/#/*
      可写:可接受用户指定一个“新值”来实现对内核某功能或特性的配置;/proc/sys/

    • /proc/sys:
        net/ipv4/ip_forward 相当于 net.ipv4.ip_forward
    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

    注意:上述两种方式的设定仅当前运行内核有效;

    1. 配置文件:/etc/sysctl.conf, /etc/sysctl.d/*.conf
      立即生效的方式:sysctl -p [/PATH/TO/CONFIG_FILE]

      内核参数:
        net.ipv4.ip_forward:核心转发;
        vm.drop_caches:
        kernel.hostname:主机名;
        net.ipv4.icmp_echo_ignore_all:忽略所有ping操作;

  • /sys目录:
    sysfs:输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的可设置参数;对此些参数的修改,即可定制硬件设备工作特性;

    udev:通过读取/sys目录下的硬件设备信息按需为各硬件设备创建设备文件;udev是用户空间程序;专用工具:devadmin, hotplug;

    udev为设备创建设备文件时,会读取其事先定义好的规则文件,一般在/etc/udev/rules.d/目录下,以及/usr/lib/udev/rules.d/目录下;

相关文章

  • note_15.1_kernel、ldd命令

    Linux Kernel: CentOS启动流程:POST --> Bootloader(BIOS, MBR) -...

  • ldd命令

    ldd命令用于打印程序或者库文件所依赖的共享库列表。 来自:http://man.linuxde.net/ldd ...

  • Linux下 C++代码编译和链接文件的具体过程和分析

    先写两个linux的命令,一个nm命令 nm命令被用于显示二进制目标文件的符号表 ldd 命令 ldd命令用于打印...

  • ldd查看动态依赖库

    ldd命令用于输出程序或者库文件所依赖的共享库列表。 语法 ldd (选项) (参数) 选项 --help:显...

  • ldd与otool

    ldd ldd命令用于打印程序或者库文件所依赖的共享库列表ldd不是一个可执行程序,而只是一个shell脚本 go...

  • Linux动态库加载问题定位思路

    工具:ldd命令,类似于Windows的depency。 ldd *.so。检查库文件不存在,或者看加载的动态库路...

  • ldd命令排查文件crash的问题

    在讲解case之前,需要首先讲解ldd命令: ldd到底是做什么的? ldd用来输出二进制可执行文件或者库文件的依...

  • 如何恢复Centos6.9中丢失的库文件

    外部命令需要依赖于很多包才能执行 列出程序库文件的文件列表,用ldd:例如:ldd /usr/bin/cp 有很多...

  • tool代替ldd

    在 Mac OS X 上使用 Linux 上经常使用的命令ldd,会有如下提示: Michael:nginx mi...

  • ASLR(地址随机化)

    注:1.1检查时候开启地址随机化ldd +程序1.2开启地址随机化命令:echo 0 >/proc/sys/ker...

网友评论

      本文标题:note_15.1_kernel、ldd命令

      本文链接:https://www.haomeiwen.com/subject/lifbpqtx.html