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

[经验分享] CentOS启动详解

[复制链接]

尚未签到

发表于 2019-2-16 06:47:58 | 显示全部楼层 |阅读模式
CentOS6启动过程

2、POST加电自检
POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接口、键盘、 CD-ROM光驱等硬件情况的检测。

  ROM: BIOS, Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、 开机加电自检程序和系统启动自举程序等。
  RAM: CMOS互补金属氧化物半导体,保存各项参数的设定
  按次序查找引导设备,第一个有引导程序的设备为本次启动设备
3、bootloader程序(Linux系统上为grub)
引导过程:根据BIOS中设定的次序查找各引导设备,第一个有引导程序的设备,即为本次启动要用到的设备
  引导程序:bootloader:引导加载器、程序
  windows:叫ntloader
  Linux:
  LILO:linux loader 现在很多android用的就是此引导程序,对1024柱面后的分区不支持
  GRUB:grand uniform bootloader
  Centos6: GRUB 0.X 零点几的版本
  Centos7: GRUB 1.X 一点几的版本
  1.X与0.X有很大不同,故GRUB 0.X的版本被称为grub legacy,而GRUB 1.X的版本被称为Grub2
  引导程序的功能:
  提供一个菜单,允许用户选择要启动的系统或不同的内核版本;并能够把用户选定的内核,装载到内存中的特定空间中,对其进行解压展开,而后把整个系统的控制权,移交给内核
  MBR:Master Boot Record主分区不能超过4个
  MBR:一共512个字节byte,前446个字节存储bootloader,后64byte存储了分区表(fat),最后2个字节是存储着4个16进制数据,一般为55AA,表示该MBR是有效的,其他数字表示该MBR无效
  英文字符中,1个字符就需要1个字节
  GRUB:因为MBR中只有前446个字节存储bootloader,GRUB是bootloader的一种实现方式,也就是说GRUB正常情况下,只能有446个英文字符,这样对程序员来说,要求太高,故通常情况下,grub分成以下几个阶段:
  第一阶段:存储在bootloader中
  第1.5阶段:文件系统驱动,称为第1.5阶段,通常存储在MBR紧跟着的扇区中,用来驱动/boot分区
  第二阶段:放在硬盘的/boot分区的/boot/grub下
  第三阶段:加载内核
  一般情况下,系统启动时是加电自检,然后bootloader进行加载内核,但是grub风格的bootloader是先加载grub的第二阶段,就是加载磁盘中的/boot/grub,该程序就摆脱了446字节的限定,从而提供了丰富的启动接口,然后由该程序加载内核
  注意:UEFI、GPT并不适用以上理论
4、加载内核,内核进行自身初始化
自身初始化的步骤和功能
  进行自身初始化:
  探测可识别到的所有硬件设备
  加载硬件驱动程序;(可能会借助于ramdisk加载驱动)
  以只读方式挂载根文件系统;(之所以要以只读方式挂载,是为了避免万一内核有bug,造成的文件系统损坏)
  运行用户空间的第一个应用程序:/sbin/init
5、ramdisk程序介绍
Linux内核的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问
  ramdisk 是一种把内存当磁盘用的机制,用来启动时加载相应的驱动等
  早期centos5上用的是initrd(就是把内存当磁盘使用),后来centos6和7换成了initramfs(内存当文件系统使用),之所以换,是因为initrd是把内存当磁盘用,但是一旦涉及到磁盘,为了加速写入和读取的速率,就会有缓冲和缓存的出现,但是ramdisk机制本身就是在内存上实现,如果再进行缓冲和缓存,就会造成系统浪费,所以,后期就换成了initramfs
  centos5上initrd的创建工具程序:mkinitrd
  centos6、7上initramfs上的创建工具程序:dracut或mkinitrd
  initrd映像实际上是一个RAM磁盘,其中包含带有基本配置文件、二进制文件、库和驱动程序的小型文件系统。在这个小型文件系统中,有一个将在引导期间装入到内存中的根文件系统,还有一个用于装入系统设备驱动程序的初始化脚本;它将在加载完所有设备驱动程序后重新加载实际的根文件系统磁盘。
  在内核引导过程中,初始RAM磁盘(initrd)是由grub阶段2引导加载程序加载到内存中的,它会被复制到RAM中并挂载到系统上。这个initrd会作为RAM中的临时根文件系统使用,并允许内核在没有挂载任何物理磁盘的情况下完整地实现引导。由于与外围设备进行交互所需要的模块可能是initrd的一部分,因此内核可以非常小,但是仍然需要支持大量可能的硬件配置。在内核引导之后,就可以正式装备根文件系统了(通过pivot_root):此时会将initrd根文件系统卸载掉,并挂载真正的根文件系统。
6、系统第一个程序init
init程序的类型:
  centos5:SysV init
  其配置文件:/etc/inittab
  centos6: Upstart
  其配置文件:/etc/inittab和/etc/init/*.conf
  centos7:Systemd
  其配置文件:/usr/lib/systemd/system/、/etc/systemd/system/
  init管理用户空间的各个程序运行,除非有需要进行内核特权级别操作时,内核才会被用户空间的各个系统调用,完成一些内核级别的操作
  init初始化用户空间的启动流程为:/sbin/init程序主要是通过读取/etc/inittab文件来完成一定的任务,完成的任务有:
  定义默认运行级别–>运行系统初始化脚本(/etc/rc.d/rc.sysinit)完成系统初始化–>关闭指定运行级别下的各服务,启动指定级别下需要开启的各服务–>启动tty虚拟终端,调用login程序,显示登录提示符,让终端进行登录
7、/etc/inittab配置文件详解
配置文件/etc/inittab的格式及其功能:
  (以centos5上的该文件为例介绍,有助于理解centos6、7上对应的文件的作用)
  每行定义一种action,以及与之对应的process
  每行的格式为id:runlevel:action:process
  id:一个任务的唯一标识符
  runlevel:在那些级别启动此任务;可以是一个数字,也可以多个数字,也可以为空(表示所有级别),例如:3或35或空
  action:在什么条件下启动此任务
  process:具体执行的任务
  常见的action:
  wait 等待切换至此任务所在的级别时,执行一次(刚切换时执行)
  respawn:一旦此任务终止,就自动重新启动之
  initdefault:设定默认运行级别,此时,process省略,因为一旦有了initdefault,就表示是定义默认的运行级别,而不需要运行别的process
  sysinit:设定系统初始化方式,该action对应的process一般为指定/etc/rc.d/rc.sysinit脚本,该脚本定义了整个系统初始化时的脚本(centos5、6有用到该脚本,但centos7没有用到该脚本)
  例如:
  id:3:initdefault: 表示定义默认运行级别就是3
  si::sysinit:/etc/rc.d/rc.sysinit 表示所有级别利用/etc/rc.d/rc.sysinit脚本完成系统初始化
  tty1:2345:respawn:/usr/sbin/mingetty tty1 表示在2345运行级别启动mingetty指令,给指令传递参数tty1,一旦该程序停止,要自动重启。mingetty会调用login程序,打开虚拟终端的程序,除了mingetty之外,还有诸如getty等
  l3:3:wait:/etc/rc.d/rc 3 表示当切换到3级别时运行/etc/rc.d/rc脚本,往脚本里传递参数为3,意味着去启动或关闭/etc/rc.d/rc3.d/目录下的服务脚本所控制的服务
8、Linux运行级别:为了系统的运行或维护等目的而设定的机制
0-6一共七个级别,各级别的意义:
  0:关机,shutdown
  1:单用户级别(single user),root用户,无需认证,维护模式
  2:多用户模式,带网络功能,但无nfs功能,维护模式
  3:完全多用户模式;文本界面
  4:预留级别,目前无特别使用目的,但习惯以同3级别功能使用
  5:完全多用户模式,图形化界面
  6:重启 reboot
  默认级别:3、5
  级别切换:init 数字
  级别查看:who -r或runlevel
9、系统初始化脚本/etc/rc.d/rc.sysinit
系统初始化脚本文件:/etc/rc.d/rc.sysinit的功能:
  设置主机名
  设置欢迎信息
  激活udev和selinux(udev主要是用来创建设备文件)
  挂载/etc/fstab文件中定义的所有文件系统
  检测根文件系统,并以读写方式重新挂载根文件系统
  设置系统时钟
  根据/etc/sysctl.conf文件的设定,来设定内核参数
  激活lvm及软raid设备
  激活swap设备
  加载额外设备的驱动程序
  清理操作
10、系统相关运行级别上的相关服务
init在利用/etc/inittab配置文件,进行用户空间系统初始化时,会有关于默认运行级别的定义,当定义好默认运行级别,利于/etc/rc.d/rc.sysinit完成系统初始化后,就会按照运行级别,来关闭、打开相应级别下的服务
  各种服务的控制脚本程序是存放在/etc/rc.d/init.d/目录下,然后各个对应级别下要关闭或开的程序以软连接的方式存放在/etc/rc.d/rc运行级别.d/目录下
  以K开头的表示要关闭的服务,后面数字表示优先级,数字越小,越先关闭
  以S开头的表示要开启的服务,后面数字表示优先级,数字越小,越先开启
  一般是先关闭相关服务后,再开启相关服务
  /etc/rc.d/rc.local 该脚本为正常行级别的最后一个脚本,可以将一些希望开机时自动启动,但又不合适编辑成服务脚本的一些命令或程序,写在该文件中,单独成行,即可完成开机自动启动
CentOS7启动过程
  1.UEFi或BIOS初始化,运行POST开机自检
2.选择启动设备
3.引导装载程序, centos7是grub2
4.加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
5.加载initramfs驱动模块
6.加载内核选项
7.内核初始化,centos7使用systemd代替init
8.执行initrd.target所有单元,包括挂载/etc/fstab
9.从initramfs根文件系统切换到磁盘根目录
10.systemd执行默认target配置,配置文件/etc/systemd/system/default.target
11.systemd执行sysinit.target初始化系统及basic.target准备操作系统
12.systemd启动multi-user.target下的本机与服务器服务
13.systemd执行multi-user.target下的/etc/rc.d/rc.local
14.Systemd执行multi-user.target下的getty.target及登录服务
15.systemd执行graphical需要的服务




运维网声明 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-672812-1-1.html 上篇帖子: CentOS7设置定时任务 下篇帖子: centos7实现Linux和Windows共享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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