Linux学习54 Linux内核功能及模块应用

一、回顾

  1、CentOS启动流程

    POST --> Bootloader(BIOS,MBR) --> Kernel(initrd) --> rootfs(readonly)--> switch_root --> /sbin/init

      root (hd0,0)

      kernel 

      initrd

  2、ldd命令:打印一个二进制应用所依赖的库

    ldd [OPTION]... FILE...

    a、我们查看我们ls依赖哪些库文件

[root@node1 ~]# ldd /bin/ls
    linux-vdso.so.1 =>  (0x00007ffc857d4000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fbd9c63d000)
    libcap.so.2 => /lib64/libcap.so.2 (0x00007fbd9c438000)
    libacl.so.1 => /lib64/libacl.so.1 (0x00007fbd9c22e000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fbd9be6b000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fbd9bc09000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fbd9ba04000)
    /lib64/ld-linux-x86-64.so.2 (0x000055758c083000)
    libattr.so.1 => /lib64/libattr.so.1 (0x00007fbd9b7ff000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbd9b5e3000)

      左侧是库文件名称,右侧是库文件路径,而对于vdso这个库文件和ld-linux-x86-64这两个库文件而言你可以认为这是整个系统调用库的入口,尤其是ld-linux-x86-64对于64位系统来讲这是各应用程序调用其他库文件的入口。

    b、我们来取出这个应用程序依赖的各库文件的文件路径

      

 二、Linux内核

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

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

  3、内核的组成部分

    a、kernel:内核核心,一般为bzimage,通常位于/boot目录下,但是你在/boot目录下看到这个文件时他已经没用了,因为在系统启动时他已经被加载过了。当系统启动起来的时候他不会再去读取这个内核文件。之所以我们要把他放在/boot目录下是为了便于后期管理。其名称为vmlinuz-VERSION-release;

    b、kernel object:内核对象,即内核模块,一般放置于/lib/modules/,无论你是32位系统还是64位系统他们都放在lib目录下而不是lib64,在/lib/modules目录下有一个以VERSION-release(内核 版本号和release号)共同命名的目录,他一定是和内核版本号完全匹配,即内核模块和内核核心版本必须严格匹配。我们内核编译时相应的参数项如下:

      (1)、[ ]:N

      (2)、[M]:Module,把它编译成模块,用到时我们就可以临时装载,不用就可以不装载,最多占用磁盘空间而不占用内核内存空间。

      (3)、[*]:Y,编译进内核核心,也就是说只要内核在,这个功能就在

猜你喜欢

转载自www.cnblogs.com/Presley-lpc/p/12550317.html
今日推荐