Linux系统启动过程详解

  • 【前言】
  • Step1 加载BIOS
  • Step2 BIOS 上电自检(POST)
  • Step3 读取MBR
  • Step4 执行Boot Loader
  • Step5 加载Linux内核
  • Step6 运行systemd(Init)进程
  • Step7 用户登录


【前言】

理解Linux操作系统的启动过程具有非常重要的意义。这里必须说明的是,严格意义上来说整个启动过程包括引导和启动。

首先,这是学习Linux系统的第一步,是之后学习的基石,无论之后学习Linux运维还是开发都需要了解
其次,万物归一。可以从CentOS-Linux的启动过程窥见一般os启动的过程。

本文参考了《Linux就该这么学》以及菜鸟教程等其他资料,加上个人理解,如果有偏差,敬请指正。


Step1 加载BIOS

首先得明白BIOS是啥吧

BIOS是Basic I/O System的缩写,中文名称是基本输入输出系统,计算机系统的重要组成部分。个人理解,BIOS是固化在ROM中的一段程序。

当系统上电启动或者复位时,CPU会把程序运行指针指向存放BIOS的内存地址,系统会加载BIOS中包含的信息(CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息等等)

Step2 BIOS 上电自检(POST)

POST是Power On Self Test,中文名称是上电自检

加载完成后,首先执行BIOS中的POST过程,来检验系统硬件基本功能是否正常。如果自检没有通过,引导过程就此中断。一旦成功POST,系统将产生一个中断INT指向BIOS中设置的引导扇区,这里存储着引导加载程序Boot Loader。

Step3 读取MBR

MBR是Master Boot Record的缩写,硬盘上第0磁道第一个扇区。

系统找到BIOS所指定的硬盘的MBR后,就会将其复制到某段物理内存中。=至此,操作系统开始接管硬件=。

其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是GRUB了。其实,Boot Loader和嵌入式软件中的启动程序startup有异曲同工之妙,是在操作系统内核运行之前运行的一段小程序。

GRUB2 全称是 GRand Unified BootLoader,Version 2(第二版大一统引导装载程序)。它是目前流行的大部分 Linux 发行版本的主要引导加载程序。

Step4 执行Boot Loader

通过Boot Loader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。其中的重要的一步,加载文件系统驱动程序(注意这不是Linux的文件系统),为读取内核文件做准备。

===准备好前置操作系统(Pre-OS)环境后,定位和加载 Linux 内核到内存中,并转移控制权到内核。===内核的相关文件位于 /boot 目录下。

Step5 加载Linux内核

为了节省空间,内核文件都是以一种自解压的压缩格式存储于 /boot 目录之下。一旦内核自解压完成,则加载 systemd 进程(其是老式 System V 系统的 init 程序的替代品),并转移控制权到 systemd。

=至此,引导过程结束,Linux环境和内核已经搭建起来,内核和 systemd 处于运行状态,但是由于没有其他任何程序在执行,故其不能执行任何有关用户的功能性任务。=

Step6 运行systemd(Init)进程

systemd 是所有进程的父进程。它的配置文件位于 /etc 目录下

可以类比于嵌入式os中的ucos的OSStart()函数。它负责将 Linux 主机带到一个用户可操作状态(可以执行功能任务)。systemd 的一些功能远较旧式 init 程序更丰富,可以管理运行中的 Linux 主机的许多方面,包括挂载文件系统,以及开启和管理 Linux 主机的系统服务等。

systemd(Init)进程最终要的功能就是设定Linux的运行级别:

运行级别

说明

运行级别0

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

运行级别1

单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2

多用户状态(没有NFS)

运行级别3

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

运行级别4

系统未使用,保留

运行级别5

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

运行级别6

系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

根据运行级别的不同,系统会运行相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

Step7 用户登录

执行/bin/login程序,进入登录状态

至此,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。