Linux操作系统内核是如何启动的
🔈 本文主要介绍了Linux操作系统的启动流程,包括BIOS加电自检、MBR系统引导、加载内核。
1. Linux简介
Linux是一款免费使用且开源的类Unix操作系统,它支持多用户、多任务、多线程、多CPU。Linux从诞生开始一直在经历全球无数计算机爱好者的修改与完善,功能日益强大,性能日益稳定,现已经成为应用领域最广泛的操作系统。Linux系统的发展历史如下
目前市场占有率最高的上夜班Linux主要有:Fedora、CentOS、Debian、Ubuntu、Gentoo、Red hat等。在二十世纪八十年代,人们开始认识到商业软件的价值,越来越多的软件开始商业化,于是 Richard Stallman 发起了GNU计划,该计划的初衷是建立一套自由的、可移植的类Unix操作系统。并于1989年起草了 GNU GPL 协议(GNU General Public License,GNU通用公共协议证书)来避免自己开发的开源自由软件被其他人做成专利,并将GPL协议作为自己软件的版权说明。
现在Linux已成为与Unix、Windows并列的操作系统并广泛应用于服务器、嵌入式、左面应用等领域。
2.Linux的启动流程
计算机接通电源上电后,需要经过BIOS加电自检、MBR系统引导、加载内核三步之后,操作系统才会启动。
1. BIOS加电自检
- BIOS全称 Basic Input/Output System,即基本输入输出系统,它是一个被永久刻录在ROM中的软件,加电自检是指 Power On Self Test,POST,属于BIOS的主要组成部分。
- 计算机在接通电源后,BIOS通过POST来加载硬件信息,进行内存、CPU、主板等检测,如果硬件设备正常工作,BIOS会寻找硬盘第一个扇区中存储的数据,并使用MBR中的数据激活引导加载程序。
2. MBR系统引导
- MBR全程 Master Boot Recode,是一种磁盘分区格式,也是以此种格式的磁盘中0盘片0扇区中存储的一段记录——主引导记录。磁盘中扇区的大小为512byte,主引导记录MBR占据第一个扇区的前446字节,剩余的空间依次存储一个64字节的磁盘分区表,和一个用于标识MBR是否有效的2字节的模数。
- 主引导记录MBR中包含一个实现引导加载功能的程序——Boot Loader。由于BIOS只能访问很少量的数据,所以MBR中的引导加载程序其实只是一段初始程序的加载程序 Initial Program Loader,IPL,这段程序唯一的功能就是定位并加载 Boot Loader 的主体程序。
- 加载引导分为两个阶段
- 第一阶段,BIOS引导IPL获取 Boot Loader 主题程序在磁盘中的位置,此时系统启动的控制权由BIOS转移到MBR;
- 第二阶段,Boot Loader 主题程序与操作系统对应的内核,定位到内核文件所在的位置,并将其加载到计算机内存中,此时系统启动的控制权由MBR转移到内核。
3. 加载内核
- 内核是操作系统的核心,Linux操作系统的内核就是Linux。内核以一种自解压的压缩格式压缩,它与一个初始化的内存映像和存储设备映像表一起存储在 /boot 目录下。
- 在选定的内核被加载到内存中并开始执行前需要先从压缩格式中解压,一旦内核自解压完成,systemd进程(也就是早期版本中的init进程)便被启动。
- systemd进程的启动标识着引导过程的结束,也标识着启动过程的开始。在系统启动之初,由于系统中没有除systemd之外的程序执行,系统初始化工作尚未完成,因此计算机不能执行任何和用户相关的功能性工作。
- 系统初始化需要进行挂载文件系统、启动后台服务等等一系列工作,这些初始化工作全部由systemd进程完成。对于用户来说,系统初始化完成后,系统才算正式启动。