设为首页 收藏本站
查看: 1475|回复: 0

[经验分享] CentOS6与CentOS7启动流程

[复制链接]

尚未签到

发表于 2019-2-17 06:59:48 | 显示全部楼层 |阅读模式
  简介:
  我们在了解了系统启动流程后,系统在启动过程中,发生的问题时候,就知道是什么阶段出现问题,从而“哪痛医哪”,就不需要重装系统了。
  CentOS6和CentOS启动流程类似,不过CentOS6和7在启动后期不一样,CentOS6后期是init,CentOS7是systemd,那么细节之处呢,跟着我一块看看吧
  CentOS6启动流程
  看到图片应该了解的差不多了,我再详细讲一下吧
  1.post加电自检
  这个过程是开机后,BIOS或UEFI进行硬件检查的阶段
  2.MBR引导
  自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接去找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程序下一阶段去×××系统grub引导。此阶段属于grub的第一阶段。grub还有1.5阶段和2阶段。
  3.GRUB引导
  grub第1.5和2阶段,信息默认存放在扇区中,如果使用grub-install生成的2阶段的文件是存放在/boot分区中的。
  为了加载内核系统,不得不加载/boot分区,而加载/boot分区,需要有/boot分区的驱动,/boot分区驱动是放在/boot分区中的,啊,我们好像进入了死循环了,Linux是怎么解决的呢?就是靠放在1.5阶段中的数据,是放在第一个扇区后的后续扇区中,具体占用多少字节,不太清楚,只知道1.5阶段和2阶段总共27个扇区。
  stage1.5:
  mbr之后的扇区,识别stage2所在的分区上的文件系统
  stage2:
  开机启动的时候看到的Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件
  4.读取grub.conf文件
  读取grub.conf文件以确定内核启动的参数,准备启动内核
  5.启动内核
  加载内核,核心开始解压缩,启动一些最核心的程序。
  因为为了让内核足够轻小,硬件驱动并没有放在内核文件里面,我们可以看到内核很小,才4M左右,我们可以想象Windows中的驱动,安装系统时候还需要使用驱动软件下载好长时间呢
  因此需要使用/initramfs-2.6.32-696.el6.x86_64.img来驱动硬件
  [root@CentOS6 ~]# ll -h /boot/vmlinuz-2.6.32-696.el6.x86_64
  -r-xr-xr-x. 1 root root 4.1M Jul  8 21:06 /boot/vmlinuz-2.6.32-696.el6.x86_64
  1
  2
  6.加载伪文件系统(ramdisk),
  内核已将启动起来了,再调用ramdisk文件,尝试驱动所有的硬件设备,到这一步,内核起来了,所有驱动也装上了,因此后面的启动就可以交给程序了
  7.启动init进程
  grub中默认指定init=/sbin/init程序,可以在grub.conf中kernel行自定义执行程序init=/bin/bash,此时可以绕过下面步骤直接进入bash界面。
  内核源代码文件中显示996行左右,规定了init启动的顺序,/sbin/init->/etc/init->/bin/init->/bin/sh,/bin/bash没有写,应该是和/bin/sh一样吧
  (1)读取/etc/inittab文件
  inittab文件里面定义了系统默认运行级别,这一步做了一些工作如下:
  a)初始运行级别(RUN LEVEL)
  b)系统初始化脚本
  c)对应运行级别的脚本目录
  d)定义UPS电源终端/恢复脚本
  e)在虚拟控制台生成getty,以生成终端
  f)在运行级别5初始化X
  (2)执行/etc/rc.d/rc.sysinit程序
  系统初始化一些脚本,主要完成以下工作
  a)设置主机名
  b)设置欢迎信息
  c)激活udev和selinux可以在grub.conf中,kernel行添加selinux=0以关闭selinux
  d)挂载/etc/fstab文件中定义的文件系统
  e)检测根文件系统,并以读写方式重新挂载根文件系统
  f)设置系统时钟
  g)激活swap设备
  h)根据/etc/sysctl.conf文件设置内核参数
  i)激活lvm及software raid设备
  j)加载额外设备的驱动程序
  k)清理操作
  (3)/etc/rc#.d/文件(各种服务)
  里面定义的是各种服务的启动脚本,可以ls查看,S开头代表开机启动的服务,K开头的是关机要执行的任务。#代表数字,一个数字代表一个运行级别,共7个运行级别,这里就不多说了
  (4)/etc/rc.d/rc.local文件
  这里面可以自定义开机启动的命令。
  8.执行/bin/login
  执行/bin/login程序,等待用户登录
  CentOS7启动流程
  CentOS7和CentOS6启动流程差不多,只不过到init程序时候,改为了systemd,因此详细解释一下systemd后的启动流程
  1.uefi或BIOS初始化,开始post开机自检
  2.加载mbr到内存
  3.GRUB阶段
  4.加载内核和inintamfs模块
  5.内核开始初始化,使用systemd来代替centos6以前的init程序
  (1)执行initrd.target
  包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了
  (2)从initramfs根文件系统切换到磁盘根目录
  (3)systemd执行默认target配置
  centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别时/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式
  模式:
  0 ==> runlevel0.target, poweroff.target
  1 ==> runlevel1.target, rescue.target
  2 ==> runlevel2.target, multi-user.target
  3 ==> runlevel3.target, multi-user.target
  4 ==> runlevel4.target, multi-user.target
  5 ==> runlevel5.target, graphical.target
  6 ==> runlevel6.target, reboot.target
  (4)systemd执行sysinit.target
  有没有很眼熟?是的,在CentOS6上是被叫做rc.sysint程序,初始化系统及basic.target准备操作系统
  (5)systemd启动multi-user.target下的本机与服务器服务
  (6)systemd执行multi-user.target下的/etc/rc.d/rc.local
  6.Systemd执行multi-user.target下的getty.target及登录服务
  getty.target我们也眼熟,它是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面程序
  7.systemd执行graphical需要的服务
  CentOS6,7启动区别
  系统启动和服务器守护进程管理器,它不同于centos5的Sysv init,centos6的Upstart(Ubuntu制作出来),systemd是由Redhat的一个员工首先提出来的,它在内核启动后,服务什么的全都被systemd接管,kernel只是用来管理硬件资源,相当于内核被架空了,因此linus很不满意Redhat这种做法。
  Sysv init运行程序顺序:


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-673310-1-1.html 上篇帖子: Centos 6.5 部署 LAMP 下篇帖子: Centos系统配置国内知名yum源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表