• CentOS7启动流程


    第一步:硬件启动阶段

    这一步和CentOS6差不多,详细请看CentOS6启动流程(含详细流程图)

    第二步:GRUB2引导阶段

    从这一步开始,CentOS6和CentOS7的启动流程区别开始展现出来了,CentOS7的主引导程序使用的是grub2。

    本步的流程:

    1. 先加载两个镜像;

    2. 再加载MOD模块文件,把grub2程序加载执行;

    3. 接着解析配置文件/boot/grub/grub.cfg,根据配置文件加载内核模块到内存;

    4. 之后构建虚拟根文件系统,最后转到内核。

    在这里grub.cfg配置文件已经比较复杂了,但并不用担心,到了CentOS7中一般是使用命令进行配置,而不直接去修改配置文件了。不过我们可以看到grub.cfg配置文件开头注释部分说明了由/etc/grub.d/目录下文件和/etc/default/grub文件组成。一般修改好配置后都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成。

    第三步、内核引导阶段

    这一步与CentOS6也差不多,加载驱动,切换到真正的根文件系统,唯一不同的是执行的初始化程序变成了/usr/lib/systemd/systemd

    第四步、systemed初始化阶段(又叫系统初始化阶段)

    CentOS7中我们的初始化进程变为了systemd。

    本步的流程:

    1. 执行默认target配置文件/etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关);

    2. 然后执行sysinit.target来初始化系统和basic.target来准备操作系统;

    3. 接着启动multi-user.target下的本机服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动;

    4. 最后执行multi-user下的getty.target及登录服务,检查default.target是否有其他的服务需要启动。

    注意:/etc/systemd/system/default.target指向了/lib/systemd/system/目录下的graphical.target或multiuser.target。而graphical.target依赖multiuser.target,multiuser.target依赖basic.target,basic.target依赖sysinit.target,所以倒过来执行。

    System概述(了解):systemd即为system daemon,是Linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的往来关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell系统开销的效果,最终代替现在常用的System V与BSD风格的init程序。

    与多数发行版使用的System V风格的init相比,systemd采用了以下的新技术:

    A.采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;

    B.用Cgroup代替PID来追踪进程,即使是两次fork之后生成的守护进程也不会脱离systemd的控制。

    unit对象:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其他与init相关的信息。(也就是CentOS6中的服务器启动脚本)

    (1)./etc/systemd/system/default.target

    这是一个软链接,和默认运行级别相关

    [root@localhost ~]# ll /etc/systemd/system/default.target
    lrwxrwxrwx. 1 root root 37 11月 4 2019 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target

    [root@localhost ~]# cd /lib/systemd/system/
    [root@localhost system]# ls *.target
    basic.target graphical.target kexec.target nss-user-lookup.target rescue.target shutdown.target sysinit.target
    bluetooth.target halt.target local-fs-pre.target paths.target rpcbind.target sigpwr.target system-update.target
    cryptsetup-pre.target hibernate.target local-fs.target poweroff.target runlevel0.target sleep.target timers.target
    cryptsetup.target hybrid-sleep.target machines.target printer.target runlevel1.target slices.target time-sync.target
    default.target initrd-fs.target multi-user.target rdma-hw.target runlevel2.target smartcard.target umount.target
    emergency.target initrd-root-fs.target network-online.target reboot.target runlevel3.target sockets.target
    final.target initrd-switch-root.target network-pre.target remote-cryptsetup.target runlevel4.target sound.target
    getty-pre.target initrd.target network.target remote-fs-pre.target runlevel5.target suspend.target
    getty.target iprutils.target nss-lookup.target remote-fs.target runlevel6.target swap.target
    这里可以看到runlevel开头的target文件,对应着CentOS6的启动级别,不过一样是软链接,指向了同目录下的其他文件,也算一种向下兼容吧

    [root@localhost system]# ll runlevel*.target
    lrwxrwxrwx. 1 root root 15 6月 1 2020 runlevel0.target -> poweroff.target
    lrwxrwxrwx. 1 root root 13 6月 1 2020 runlevel1.target -> rescue.target
    lrwxrwxrwx. 1 root root 17 6月 1 2020 runlevel2.target -> multi-user.target
    lrwxrwxrwx. 1 root root 17 6月 1 2020 runlevel3.target -> multi-user.target
    lrwxrwxrwx. 1 root root 17 6月 1 2020 runlevel4.target -> multi-user.target
    lrwxrwxrwx. 1 root root 16 6月 1 2020 runlevel5.target -> graphical.target
    lrwxrwxrwx. 1 root root 13 6月 1 2020 runlevel6.target -> reboot.target

    可以看到我的default.target与runlevel3.target指向的是同一个文件,可以看出我的默认运行级别是3。

    (2)./usr/lib/systemd/system/

    这个目录存储每个服务的脚本,类似CentOS6的/etc/init.d/

    (3)./run/systemd/system/

    系统执行过程中产生的脚本

    (4)./etc/systemd/system/

    类似于CentOS6的/etc/rc.d/rc#.d/SXX类文件的功能,管理员建立的执行脚本,大部分是软链接
    ————————————————
    版权声明:本文为CSDN博主「Yonself」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_25518029/article/details/119904129

  • 相关阅读:
    安全测试的概述和用例设计
    性能测试(四)常见调优
    性能测试(三)常见的性能测试缺陷
    Jmeter(七)六种参数化的方式
    Jmeter(六)所有的断言
    接口测试的问题解答
    ES学习
    flutter 之BottomNavigationBar属性
    flutter StaggeredGridView.countBuilder 上方取消空白
    flutter升级、回退到指定版本---mac版
  • 原文地址:https://www.cnblogs.com/zhangzeyuan/p/16354378.html
Copyright © 2020-2023  润新知