18. CentOS启动流程与Grub

Date:

2018-09-02

18.1. 系统启动流程

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

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

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

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

init的配置文件

centos5:

采用sysv方式

centos6:

采用upstart方式

centos7:

采用systemd方式,启动非常快

init的主要级别一共可以分为7个级别。

查看当前级别的命令:

1[root@zzjlogin ~]# runlevel
2N 3

注意

配置系统运行级别在配置文件 /etc/initabid:3:initdefault: 则是默认3级别。

运行级别详解

运行级别

级别说明

0

系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

1

单用户工作状态,root权限,用于系统维护,禁止远程登陆,主要用来重置root密码

2

多用户状态(没有NFS),没有网络服务其他和3级别基本相同

3

完全的多用户状态(有NFS),登陆后进入控制台命令行模式

4

系统未使用,保留

5

X11控制台,登陆后进入图形GUI模式

6

系统正常关闭并重启,默认运行级别不能设为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. 清理工作

18.2. grub

18.2.1. grub运行阶段

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

stage1:

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

stage1_5:

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

stage2:

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

18.2.2. grub.conf文件

1[root@centos6 ~]$ cat /etc/grub.conf
2default=0
3timeout=5
4title centos6.9
5kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2
6initrd /initramfs-2.6.32-696.el6.x86_64.img
主要配置项

(hd0,0)

表示第一个磁盘的第一个分区

default=0

表示默认是的启动条目

timeout=5

选择等待时间

splashimage

背景图片

hiddenmenu

启动是否显示菜单

title

定义各个操作系统的菜单

root

定义内核文件存放的位置

kernel

内核的名称一些启动的核心参数

initrd

虚拟的根文件系统

password

保护作用

18.3. CentOS系统启动图解

../../../_images/linuxstart.svg