CentOS系列启动流程(5系列,6系列,7系列)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS系列启动流程(5系列,6系列,7系列)相关的知识,希望对你有一定的参考价值。

一、Linux启动内核文件

    1.Linux系统组成

       动态视角:内核+根文件系统

       静态视角:磁盘分区+相关文件

    2.Kernel特点

        (1)支持某块化:.ko (kernel object)文件

    centos7的ko文件:

技术分享

    centos6的ko文件:

技术分享

    注意:

    Linux内核模块文件的命名方式通常为<模块名称.ko>

    centos6系统的内核模块被集放在/lib/modules/‘uname -r ‘/目录下

    centos7系统的内核模块被集放在/usr/lib/modules/‘uname -r ‘/目录下


        (2)支持模块运行时动态装载或卸载;

        模块的相关命令:

            a)加载模块:insmod   modprobe

                 insmod和modprobe的区别:

                 当a模块与b模块有依赖关系时,假设安装b模块需先安装a模块。

                 如果用insmod命令那么需要先insmod  a.ko 然后再insmod  b.ko。

                 如果用modprobe命令那么直接可以modprobeb.ko。

                 其中/lib/modules/“内核版本号”/modules.dep中记录了模块之间的依赖关系。

                 通过modprobe加载的内核均在当前的计算机内有效,计算机重新启动后需要重新加载才有效。
                 如果想要开机后自动挂载内核,需要将modprobe命令写入/etc/rc.sysint文件中

技术分享

            b)卸载模块:rmmod    modprobe -r

                rmmod:只需要调用模块名即可,比如安装的时候是inmod  a.ko 安装完毕后该模块存在于内核中的名字为a,那么卸载该模块只需要rmmod  a即可。

                modprobe -r:能将依赖的模块一并卸载掉

                [[email protected] ~]# modprobe ip_vs  #动态加载ip_vs模块
                [[email protected] ~]# lsmod |grep ip_vs #查看模块是否加载成功

                ip_vs                 125220  0
                libcrc32c               1246  1 ip_vs
                ipv6                  317340  289 ip_vs
                [[email protected] ~]# modprobe -r ip_vs #卸载动态模块

                [[email protected] ~]# lsmod |grep ip_vs #模块已经卸载干净

            c)查看模块:lsmod

                输出三列信息

                分别为模块 占用内存 是否被调用

                如果第三列为0则该模块可以随时可以卸载。

技术分享


        总结:Linux kernel在单内核设计模型上,吸取了多内核设计的优点,使用了模块化设计

            单内核设计:把所有功能集成于同一个程序;如Linux

            微内核设计:每种功能使用一个单独的子系统实现;如Windows, Solaris


    3.kernel组成

       (1)核心文件

              1)/boot/vmlinuz-VERSION-release

                      注: vmlinuz最后一一个z表示压缩格式的kernel文件

              2)ramdisk(中间临时文件根系统,动态创建出来的,使用缓冲和缓存来加速对磁盘上的文件访问)

        安装操作系统后临时生成的文件,能够扫描当前操作系统的硬盘驱动,装载对应的模块

        用于实现系统初始化的基于内存的磁盘设备,把内存中的一段空间当内存使用

        CentOS 5:/boot/initrd-VERSION-release.img  

        工具程序:mkinitrd

        CentOS 6,7:/boot/initramfs-VERSION-release.img 

        工具程序:dracut, mkinitrd

        注意:

            a)不是必须的,当自编译内核时候知道硬盘接口时候将硬盘驱动编译进kernel,ramdisk就不用了

            b)initrd,基于ramdisk的磁盘映像文件;initramfs,基于ramdisk的文件系统

                initrd启动该后用free查看memory时候,有一段空间被buffers和cached占用,二次缓存


本文出自 “2913680” 博客,谢绝转载!

以上是关于CentOS系列启动流程(5系列,6系列,7系列)的主要内容,如果未能解决你的问题,请参考以下文章

CentOS系列开机启动流程

centos系列的启动流程及基础知识点

CentOS系列启动流程详解

系列6使用Dockerfile创建带mysql5.7的Centos Docker镜像1

CentOS 7.x下升级Python版本到3.x系列(新老版本共存)

#23 centos5(RHEL)系列操作系统的启动流程与命令mkinitrddracut的使用