系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux操作系统的引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备。

一、引导过程预览

如图:
Linux操作系统的引导过程及初始化的必要操作详解

1.开机自检

服务器主机开机之后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交本机硬盘;

2.MBR引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB);

3.GRUB菜单

对于Linux操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,Centos 7 采用的是GRUB2启动引导器。

4.加载Linux内核

Linux内个是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将会完全掌握整个Linux操作系统的运行过程。在Centos 系统中,默认的内核文件是“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

5.init进程初始化

为了进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行,init进程负责完成一系列的系统初始化过程,最后等待用户进行登录。

二、系统初始化进程及文件

1.init进程

Linux操作系统中的进程使用数字进行标记,每个进程的身份标记号为PID,在引导Linux操作系统的过程中。“/sbin/init”是内核第一个加载的程序,因此init进程对应的PID号总是为1。

init进程运行以后将会陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程。

init进程正是维持整个Linux操作系统运行的所有进程的“始祖”。因此,init进程是不允许被轻易终止的。

2.Systemd简介

Systemd是Linux操作系统的一种init软件,Centos 7 系统采用了全新的Systemd启动方式,取代了传统的SysVint。Systemd启动方式使系统初始化时诸多服务并行启动,大大提高了开机效率。Centos 7系统中“/sbin/init”是“/lib/systemd/systemd”的链接文件。

[root@localhost ~]# ll /sbin/init 
lrwxrwxrwx. 1 root root 22 7月  14 18:54 /sbin/init -> ../lib/systemd/systemd

systemd守护进程负责Linux的系统和服务,systemctl用于控制Systemd管理的系统和服务状态。

Systemd将其管理的资源组织成各种类型的单元(Unit)。如图:
Linux操作系统的引导过程及初始化的必要操作详解
早期的Linux操作系统中的SysVint机制。默认包括七种不同的服务搭配方式,其中每一种搭配方式称为运行级别,类似于Windows系统中的正常启动、安全模式等。Linux系统中用数字来表示,如图:
Linux操作系统的引导过程及初始化的必要操作详解

三、优化启动过程

Linux操作系统中包含了大量的服务策划那个系,这些服务程序在切换运行级别是根据预设的状态进行启动或终止。

1.常见的系统服务

Linux操作系统的引导过程及初始化的必要操作详解
这些服务到底是选择开启还是关闭,应根据实际情况而定。

2.优化开机自动加载的服务

1)使用ntsysv工具

[root@localhost ~]# ntsysv

Linux操作系统的引导过程及初始化的必要操作详解

通过使用“--level”选项可以对指定运行级别中的服务进行管理。比如:

[root@localhost ~]# ntsysv --level 35
//针对运行3、5级别中的各种服务的默认状态进行调整

2)使用systemctl工具

常用的选项:
enable:开机自启动;
disable:开机自动关闭;
is-enable:查看开机启动状态;

[root@localhost ~]# systemctl list-units --type=service
//查看当前系统中所有已激活的系统服务