CentOS7启动流程

  同样我也找了一张CentOS7的启动流程图。

第一步、硬件启动阶段

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

第二步、GRUB2引导阶段

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

  简单说一下这一步的流程:显示加载两个镜像,再加载MOD模块文件,把grub2程序加载执行,接着解析配置文件/boot/grub/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核。

  在这里grub.cfg配置文件已经比较复杂了,但并不用担心,到了CentOS7中一般是使用命令进行配置,而不直接去修改配置文件了。

  一般修改好配置后都需要使用命令grub2-mkconfig -o /boot/grub2/grub.cfg,将配置文件重新生成。这里就涉及到/etc/default/grub文件以及/etc/grub.d/目录。

第三步、内核引导阶段

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

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

  CentOS7中我们的初始化进程变为了systemd。执行默认target配置文件/etc/systemd/system/default.target(这是一个软链接,与默认运行级别有关)。然后执行sysinit.target来初始化系统和basic.target来准备操作系统。接着启动multi-user.target下的本机与服务器服务,并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动。最后执行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

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

[[email protected] system]# ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 12月  9 15:47 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

  我们可以到这个目录下看看

[[email protected] system]# cd /lib/systemd/system/
[[email protected] system]# ls *.target
anaconda.target            local-fs.target           runlevel2.target
basic.target               machines.target           runlevel3.target
bluetooth.target           multi-user.target         runlevel4.target
cryptsetup-pre.target      network-online.target     runlevel5.target
cryptsetup.target          network-pre.target        runlevel6.target
ctrl-alt-del.target        network.target            shutdown.target
default.target             nfs-client.target         sigpwr.target
emergency.target           nss-lookup.target         sleep.target
final.target               nss-user-lookup.target    slices.target
getty-pre.target           paths.target              smartcard.target
getty.target               poweroff.target           sockets.target
graphical.target           printer.target            sound.target
halt.target                rdma-hw.target            suspend.target
hibernate.target           reboot.target             swap.target
hybrid-sleep.target        remote-cryptsetup.target  sysinit.target
initrd-fs.target           remote-fs-pre.target      system-update.target
initrd-root-fs.target      remote-fs.target          timers.target
initrd-switch-root.target  rescue.target             time-sync.target
initrd.target              rpcbind.target            umount.target
iprutils.target            rpc_pipefs.target         virt-guest-shutdown.target
kexec.target               runlevel0.target
local-fs-pre.target        runlevel1.target

  这里可以看到runlevel开头的target文件,对应着CentOS6的启动级别,不过一样是软链接,指向了同目录下的其他文件,也算一种向下兼容吧

[[email protected] system]# ll runlevel*.target
lrwxrwxrwx. 1 root root 15 4月   5 22:10 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 4月   5 22:10 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 4月   5 22:10 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 4月   5 22:10 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 4月   5 22:10 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 4月   5 22:10 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 4月   5 22:10 runlevel6.target -> reboot.target

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

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

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

(2)./run/systemd/system/

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

(3)./etc/systemd/system/

  类似于CentOS6的/etc/rc.d/rc#.d/SXX类文件的功能,管理员建立的执行脚本,大部分是软链接。

原文地址:https://www.cnblogs.com/diantong/p/10745372.html

时间: 2024-10-09 23:12:11

CentOS7启动流程的相关文章

centOS7服务管理与启动流程

centOS7服务管理与启动流程 centOS7启动流程 systemd简介 unit对象 unit类型 特性 service unit文件格式 service unit file文件通常由三部分组成 unit段的常用选项 Service段的常用选项 Install段的常用选项 管理服务 管理系统服务 服务查看 chkconfig命令的对应关系 其他命令 服务状态 systemctl示例 运行级别 运行级别与target的对照 运行级别的切换 CentOS7引导顺序 设置简单的内核参数 简单的启

linux-系统启动流程-7

1,BIOS开机自检,检查cpu硬件及开机启动顺序,查找第一个磁盘磁头的MBR信息并加载BOOtloader,然后将控制权交与bootloader 2, GRUB GRUB(Grand Unified Bootloader),多系统启动程序 stage1 : 查找加载stage 1.5 stage1.5: 可以识别文件系统, 即识别 /boot/ 磁盘第一个分区 stage 2: grub 识别/boot/grub/grub.conf ,根据配置文件,读取Kernel 信息,然后加载kernel

#24 centos6(RHEL)系列操作系统的启动流程、与命令chkconfig、grub的使用

所有由rc脚本关闭或启动的链接文件的原文件都存在于/etc/rc.d/init.d,系统为了方便使用,为此目录创建了链接/etc/init.d 所有/etc/inid.d(/etc/rc.d/init.d)目录中的脚本执行方式: # /etc/init.d/srv_script {start|stop|restart|status} # service srv_script {start|stop|restart|status} chkconfig命令: chkconfig - updates

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

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构: Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核: 从硬盘存储和启动操作系统的角度: Linux的系统组成:内核 + 根文件系统(rootfs) 内核功能:进程管理,文件系统管理,内存管理,网络协议,驱动程序,安全功能,... Linux系统的系统运行环境可以分为两部分: 内和空间:内核代码(系统调用) 就是内核进程占用的CPU和内存资源的总和: 用户空间:应用程序(进程或线程)

CentOS启动流程、Grub legacy配置、linux kernel模块管理、伪文件系统介绍

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 启动相关基础概念汇总 ● 启动流程 ● init程序类型     /etc/rc.d/rc     chkconfig     /etc/rc.d/rc.sysinit ● GRUB legacy     命令行接口     配置文件 ● Linux Kernel     内核模块查看与管理         lsmod         modinfo         modprob

CentOS6启动流程呢个以及删除boot分区相关实验

centos6启动流程 主动读取BIOS,通过CMOS加载硬件信息 ,并进行POST,指定第一个可启动的设备 ROM:BIOS,Basic Input and Output System,保存着计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序RAM:保存各项参数的设定 读取第一个可启动设备MBR的引导加载程序(grub)的启动信息 MBR: 446 boot loader 64:分区表 2 :55aa BIOS通过硬件的INT13中断功能来读取MBR的 Windows:ntlo

Centos启动流程及grub legacy

Linux系统的组成部分:内核+根文件系统 内核的功能:进程管理.内存管理.网络管理.文件系统.驱动程序.安全功能 系统在运行时要么就是在运行内核代码,要么就是在运行应用程序代码.如果一个程序大多数时间在内核的系统调用上,那样真正执行业务功能的时间就少了,实际生产力不大.通常在开发程序的时候,大都不是直接使用系统调用来实现功能,而是使用系统调用的二次封装(glibc库),所谓库,就是函数(功能)的集合,库中的函数名,能够接受的参数,参数类型都应该有定义(头文件). 库也是二进制程序,但是相比正常

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

下面介绍的是基于Intel x86架构的CentOS系列操作系统的启动流程. 1.Linux系统基础简介 (1).Linux[系统组成]:内核+应用程序 或 内核+rootfs (2).Linux的[运行环境]:内核空间 --------内核进程占用CPU和内存资源总和 用户空间 --------应用程序占用CPU和内存资源总和 (3).[内核]主要具有6个[功能]:进程管理.文件系统管理.内存管理.网络协议管理.驱动管理.内存功能. 对于内核,有两种设计:单内核.微内核.单内核,是所有功能聚集

centos6之前版本的启动流程

centos6 之前的系统启动: linux启动流程: 1)加电自检 2)读取MBR,引导加载程序grub,完成grub的三个阶段. 3)加载系统内核kernel,执行系统初始化信息. 4)启动用户空间第一个执行程序/sbin/init,并调用init的配置文件,完成初始化. 5)启动核心的外挂模块,来启动各种所需服务. 6)启动6个虚拟终端,执行/bin/login 程序,等待用户登录. 7)登录之后开始以Shell控制主机. CMOS通电-->BIOS启动-->读取MBR-->加载程