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

cnetos6为例。详解centos启动流程

centos启动流程

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文件来读取默认级别

centos启动流程

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下的所有脚本,来控制系统启动时启动或者关闭那些服务

centos启动流程

  •  这里的脚本大致分为两类,以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文件

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

centos启动流程

修复方法:

1.、进入救援模式

centos启动流程

centos启动流程

2、生成伪根系统

centos启动流程

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

修复过程

1、进入救援模式

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

centos启动流程

2、进入救援模式将挂载根文件,在救援模式下,逻辑卷处于禁用centos启动流程


3**逻辑卷

centos启动流程

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

centos启动流程

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

centos启动流程

6挂载光盘,重新安装kernel

7、安装grub

centos启动流程

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

centos启动流程

未完待续~