centos启动流程

我们在使用linux操作系统的时候,我们只要按下开机键之后,剩下的就是等待,然后输入用户名和密码就可以使用 Linux系统了,然而在从按下开机键到输入用户名和密码之前。操作系统都做了什么?下面就来讲述一下centos在启动的时候都做了哪些动作

cnetos6为例。详解centos启动流程

wKioL1nHgNTB3N-1AAGG0eUSp7E452.png

POST --> Boot Sequence(BIOS) --> BootLoader (MBR) --> Kernel(ramdisk) --> rootfs --> switchroot -->/sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定运行级别 -->系统初始化脚本 --> 关闭或启动对应级别下的服务 --> 启动终端

一、POST开机自检

  实现POST的代码是在主板上ROM芯片上,在开机的时候,POST会对硬件设备进行检查。完成后会寻找具有与引导记录的设备,并由引导设备来完成系统的顺利启动。

二、MBR引导

    MBR(MasterBoot Record) MBR记录一般是在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoder,后 4*16 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA

三、GRUBGRand UnifiedBootloader)、加载内核

     就是MBR中的前446个字节,是Bootloader的一种,它的作用是选择要启动的内核,系统将linux/boot/grub/grub.conf的配置文件读入到内存中,根据配置文件中的信息找到内核文就按和伪根文件,并将伪根文件加载到内存中,模拟出一个根系统,在进行加载内核。

四、启动init程序

       Init程序是centos第一进程。其他进程都是由此进程fork出来的,也就是说,init进程是其他进程的“祖先”。

init启动启动之后做的事情

1、读取/etc/inittab文件来读取默认级别

wKiom1nHgUygx9_bAACNuzmNmoo141.png

2、执行初始化脚本/etc/rc.d/rc.sysinit来初始化脚本

脚本的作用如下:

  •  设置主机名

  •   设置欢迎信息

  •   激活udevselinux

  •   挂载/etc/fstab文件中定义的文件系统

  •   检测根文件系统,并以读写方式重新挂载根文件系统

  •   设置系统时钟

  •   激活swap设备

  •   根据/etc/sysctl.conf文件设置内核参数

  •   激活lvmsoftware raid设备

  •   加载额外设备的驱动程序

  •   清理操作


3、执行/etc/rc.d/rcX.d脚本

根据读取的/etc/inittab文件中的登录模式,会运行相对应的脚本,假设是5模式,会读去/etc/rc.d/rc5.d下的所有脚本,来控制系统启动时启动或者关闭那些服务

wKioL1nHgVqTdnjjAAEPvk1amXE185.png

  •  这里的脚本大致分为两类,以S开头的和以K开头的脚本

  •  S代表开机启动的,K代表开机时不启动

  •  每个文件的命名格式,例如S06iptables S表示开机启动,06 表示启动次序 iptables表示启动的脚本名

这些脚本是否开机启动,可以由chkconfig命令来管理

  •  chkconfig  –addSRV-SCRIPT  可以将自己将自己写的一些脚本放/etc/rc.d/rc.init.d中,让此命令统一管理

  •  chkconfig --del  SRV-SCRIPT 将服务删除,意思就是服务不由chkconfig这种机制来管理 

  • chkconfig SRV_SCRIPT {on|off} 设置服务开机是否自启动,默认管理的级别是2345. 

  •   --level 2345 等,指定默认级别,可以与其他选项一起使用 

4、执行/etc/rc.d/rc.local脚本,此脚本是启动过程中最后启动的一个脚本。

最后会执行/bin/login登录用户。至此系统提东过程完成。


在对系统启动流程有了大致了解之后,为了更深入的理解,下面就做一些来加深理解

实验删除/boot/initramfs-2.6.32-696.el6.x86_64.img文件

删除文件是用伪根系统,是用来挂载根来找内核文件来启动程序的,如果删除以后将导致系统无法启动,所以在系统重启会出现以下界面:

wKiom1nHgdXA3SA1AAAKNxLth94282.png

修复方法:

1.、进入救援模式

wKioL1nHgeiR7wMKAABWlBs25cc034.png

wKiom1nHgjPxUE_WAAP6w_tw114708.png

2、生成伪根系统

wKioL1nHgiWzRY7FAAFTRDxZgPg683.png

 实验二、LVM情况下,删除/etc/fstab文件和/boot下的文件

修复过程

1、进入救援模式

由于删除了/etc/fstab文件,在进入救援模式的时候将导致系统的根无法挂载到/mnt/sysimages

wKiom1nHguagVc0ZAABWw_2qPGw349.png

2、进入救援模式将挂载根文件,在救援模式下,逻辑卷处于禁用wKiom1nHgwCC5JNZAAEskM8KSuI458.png


3激活逻辑卷

wKioL1nHgt7DBW5oAACFJ7_BvH0076.png

4、重新挂载跟并编辑  /etc/fstab文件

wKiom1nHgy6DrU5JAAD5RaGlygM631.png

5、重新进入救援模式,切根

wKioL1nHgzfzeZUCAAC_fB1MlpY587.png

6挂载光盘,重新安装kernel

7、安装grub

wKioL1nHg3mBw81GAAAxMgFOg0Q626.png

8、在/boot/grub下编辑grub.conf文件

wKioL1nHg46jfTTBAAB0m5beyOs363.png

未完待续~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章