2.1. Centos系统启动流程与Grub

2.1.1. 系统启动流程

  1. 加点自检,由bios程序实现,这个程序是固化在硬件里面的。

  2. 选择启动顺序,加载mbr,其中启动顺序的管理由boot loader提供。

  3. 加载系统内核kernel,执行系统初始化信息。

  4. 启动用户空间的第一个执行程序/sbin/init

init的配置文件

centos5: 采用sysv方式

centos6: 采用upstart方式

centos7: 采用systemd方式,启动非常快

init的主要级别

0  关机
1  单用户
2  多用户,没有nfs
3  多用户,文本界面
4  备用
5  图形界面
6  重启

init的处理流程

  1. 获取默认level

  2. 使用/etc/rc.d/rc.sysinit初始化

  3. 读取对应levle下的服务 /etc/rc.d/rc{level}.d目录下的服务

  4. 配置ctrl + alt + del 功能件

  5. 配置不断电系统pf和pr两种机制

  6. 启动mintty6个终端

  7. 如果是5级别,就启动图形界面

sysinit的处理流程

  1. 设置主机名字

  2. 打印欢迎信息

  3. 激活selinux和udev

  4. 挂载/etc/fstab定义的文件系统

  5. 挂载swap设备

  6. 重新读写挂载根文件系统

  7. 设置系统时钟

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

  9. 激活lvm和raid

  10. 加载额外的驱动设备

  11. 清理工作

2.1.2. grub

2.1.2.1. grub运行阶段

linux将bootloader的程序运行和配置项分成三个阶段来运行。

stage1:

运行bootloader主程序,这个程序必须要被安装在启动区,也就是mbr中。因为空间有限,因此mbr当中 仅仅安装bootloader的最小主程序,并没有安装bootloader的相关配置文件

stage1_5:

在mbr随后的扇区中存放,主要用于与stage2所在分区的文件系统进行交互。

stage2:

通过bootloader加载所有配置文件及其相关的环境参数信息,这些配置文件及其相关的环境参数都放在磁盘分区的 /boot目录下。

2.1.2.2. grub.conf文件

[root@centos6 ~]$ cat /etc/grub.conf
default=0
timeout=5
title centos6.9
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2
initrd /initramfs-2.6.32-696.el6.x86_64.img

主要配置项

(hd0,0)                     表示第一个磁盘的第一个分区
default=0                   表示默认是的启动条目
timeout=5                   选择等待时间
splashimage                 背景图片
hiddenmenu                  启动是否显示菜单
title                       定义各个操作系统的菜单
root                        定义内核文件存放的位置
kernel                          内核的名称一些启动的核心参数
initrd                      虚拟的根文件系统
password                    保护作用