Linux【1】-启动管理-8-centos7系统启动流程

Linux 系统的启动,从计算机开机通电自检开始,一直到登陆系统,需要经历多个过程。学习 Linux 的启动过程,有助于了解 Linux 系统的结构,也对系统的排错有很大的帮助。

CentOS 6.x 系统启动过程发生了较大的变化,使用 Upstart 启动服务取代了原先的 System V init 启动服务。Upstart 启动服务的效率更高,启动速度更快。 Linux 系统启动过程比较复杂,我们先整理一下基本的启动过程,有一个整体的印象,然后再进一步说明。

目前,CentOS 6.x 的启动流程经历以下几步:

  1. 服务器加电,加载 BIOS 信息,BIOS 进行系统检测。依照 BIOS 设定,找到第一个可以启动的设备(一般是硬盘);
  2. 读取第一个启动设备的 MBR (主引导记录),加载 MBR 中的 Boot Loader(启动引导程序,最为常见的是 GRUB)。
  3. 依据 Boot Loader 的设置加载内核,内核会再进行一遍系统检测。系统一般会采用内核检测硬件的信息,而不一定采用 Bios 的自检信息。内核在检测硬件的同时,还会通过加载动态模块的形式加载硬件的驱动。
  4. 内核启动系统的第一个进程,也就是 /sbin/init。
  5. 由 /sbin/init 进程调用 /etc/init/rcS.conf 配置文件,通过这个配置文件调用 /etc/rc.d/rc.sysinit 配置文件。而 /etc/rc.d/rc.sysinit 配置文件是用来进行系统初始化的,主要用于配置计算机的初始环境。
  6. 还是通过 /etc/init/rcS.conf 配置文件调用 /etc/inittab 配置文件。通过 /etc/inittab 配置文件来确定系统的默认运行级别。
  7. 确定默认运行级别后,调用 /etc/init/rc.conf 配置文件。
  8. 通过 /etc/init/rc.conf 配置文件调用并执行 /etc/rc.d/rc 脚本,并传入运行级别参数。
  9. /etc/rc.d/rc 确定传入的运行级别,然后运行相应的运行级别目录 /etc/rc[0-6].d/ 中的脚本。
  10. /etc/rc[0-6].d/ 目录中的脚本依据设定好的优先级依次启动和关闭。
  11. 最后执行 /etc/rc.d/rc.local 中的程序。
  12. 如果是字符界面启动,就可以看到登录界面了。如果是图形界面启动,就会调用相应的 X Window 接口。

总的来说,Linux 系统的启动,要经历BIOS自检 -> 启动 GRUB -> 加载内核 -> 执行第一个进程 -> 配置系统初始环境。当然,本节仅是简单地看启动过程,接下来分别详解介绍每步启动过程。

二、常见故障及解决方法

2.1 口令丢失

解决办法

退出即可自动加载登录

然后重设口令即可

2.MBR 故障

现象

解决办法

进入急救模式

然后退出就可以正常启动了

2.3 Grub2丢失 现象

解决办法

然后退出就可以正常启动了

2.3 fstab挂载错误

在/etc/fstab中写入了mount命令,本来应该写入/etc/rc.local的,然后导致没法正常启动

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn