Linux CentOS 6 启动管理

Linux CentOS 6 系统启动流程

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

  • BIOS开机自检
  • 主引导目录(MBR)
  • Linux /etc/inittab
  • Linux /etc/rc.d/rc.local
  • Linux 单用户模式
  • Linux rescue救援模式

Centos 6.X的启动流程经历以下几步:

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

BIOS开机自检

前面提到,服务器通电后,会直接进入 BIOS,BIOS 全称 Basic Input/Output System,中文可译为基本输入/输出系统。
BIOS 是硬件与软件之间的接口,而且是非常基本的接口,BIOS 提供了一组基本的操作系统使用的指令,系统启动的成功与否,依赖于 BIOS。
BIOS的初始化主要完成以下3项工作:

  • 第一次检查计算机硬件和外围设备(第二次自检由内核完后,后续会讲),例如 CPU、内存、风扇灯。当 BIOS 一启动,就会做一个自我检测的工作,整个自检过程也被称为 POST(Power On Self Test)自检。
  • 如果自检没有问题,BIOS 开始对硬件进行初始化,并规定当前可启动设备的先后顺序,选择由那个设备来开机。
  • 选择好开启设备后,就会从该设备的 MBR(主引导目录)中读取 Boot Loader(启动引导程序)并执行。启动引导程序用于引导操作系统启动,Linux 系统中默认使用的启动引导程序是 GRUB。
    当 MBR 被加载到 RAM 之后,BIOS 就会将控制权交给 MBR,进入系统引导的第二阶段。

主引导目录(MBR)

MBR 也就是主引导记录,位于硬盘的 0 磁道、0 柱面、1 扇区中,主要记录了启动引导程序和磁盘的分区表。

MBR 中最主要的功能就是存储启动引导程序。

启动引导程序的作用:
BIOS 的作用就是自检,然后从 MBR 中读取出启动引导程序。那么,启动引导程序最主要的作用就是加载操作系统的内核。当然,每种操作系统的启动引导程序都是不同的。
下图展示了启动引导程序的作用。
Linux CentOS 6 启动管理_第1张图片

Linux /etc/inittab

在 CentOS 6.x 中,/etc/inittab 配置文件只能用来设置系统的默认运行级别。
什么是运行级别呢?其实 Linux 是通过运行级别来确定系统启动时到底启动哪些服务的。Linux 默认有 7 个运行级别,具体如下表 所示
Linux CentOS 6 启动管理_第2张图片
在 Linux 系统中可以使用 runlevel 命令来查看系统的运行级别,命令如下:
[root@localhost ~]# runlevel N 3
#N代表在进入这个级别前,上一个级别是什么;3代表当前级别
在这个命令的结果中,“N 3”中的N代表在进入这个级别前,上一个级别是什么;3 代表当前级别。“N” 就是 None 的意思,也就是说,系统是开机直接进入 3 运行级别的,没有上一个运行级别。
如果从图形界面切换到字符界面,再查看运行级别,就应该是这样的:
[root@localhost ~]# runlevel 5 3 #代表由5级别进入3级别
那么,可以手工改变当前的运行级别吗?当然可以,只需使用 init 命令(注意这不是 init 进程)即可,命令如下:
[root@localhost ~]# init 5 #进入图形界面,当然要已经安装了图形界面才可以 [root@localhost ~]# init 0 #关机 [root@localhost ~]# init 6 #重新启动

不过要注意,使用 init 命令关机和重启并不是太安全,容易造成数据丟失。所以推荐大家使用 shutdown 命令进行关机和重启。
知道了运行级别的作用,回到系统启动过程中来。/etc/inittab 配置文件的功能就是确定系统的默认运行级别,也就是系统开机后会进入那个运行级别。此文件的内容如下:
Linux CentOS 6 启动管理_第3张图片
注意,这里的默认运行级别只能写 3 或 5,其他的级别要么是关机重启,要么是保留或单用户,都不能作为系统默认运行级别。
在 /etc/rc[06].d/ 目录中的程序启动之后,系统的启动就已经完成。启动流程图补充完整,如下图所示。
Linux CentOS 6 启动管理_第4张图片
系统的启动过程就是这样的,最终我们就能登录字符界面的 Linux 了。不过,如果需要启动图形界面的 Linux,则还需要调用 X Window 接口。

你可能感兴趣的:(Linux)