linux启动启动过程(基于MBR)

前言:

因为uefi的出现,bios分为legacy bios和uefi bios,下文中,我们不做这个划分,统一叫做bios。

这篇文章先说基于MBR的启动过程,然后再说基于比较新的GPT的启动过程,linux启动启动过程(基于GPT)

第一步:电脑上电,执行bios程序(这段程序是在rom上运行的,不是在ram内存上)

bios程序的功能:

a,上电自检,看看硬件是不是有什么问题,有则,显示有问题;

b,bios的初始化,会影响系统启动;

c,引导程序,bios程序从磁盘的开始扇区部分寻找主营到记录MBR。

顺便提一下:
U盘安装系统时,bios自检和初始化没问题之后,不是要将U盘上的(U盘安装的话)
的MBR里的bootloader加载到内存中运行,这个bootloader就是引导器,根据这个
引导器去安装系统,在安装的过程中有个grub-install的步骤,这个时候就是将电
脑硬盘上MBR里的bootloader改写成了grub。安装完系统开机之后,就会有grub引
导器选项。

第二步:将MBR里面的bootloader加载到内存运行

开始扇区读取引导记录,将电脑的控制权交给引导器(linux多用grub)。

引导器再找到内核,grub有一个叫grub.conf文件里有内核存储信息。

第三步:将内核加载到内存运行

将内存加载到内存之后,控制权就交给内核了。内核内存中自解压之后就将控制权交给一个叫systemd的进程。

至此,引导过程结束。(详细过程在此不讨论)

第四步:引导过程结束,启动过程开始

systemd是所有进程的父进程,控制权交给systemd进程之后,系统就可以操作了。

注意:
   systemd即为system daemon,是linux下的一种init软件,由
Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可
证下开源发布,开发目标是提供更优秀的框架以表示系统服务间的依
赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低
Shell的系统开销的效果,最终代替现在常用的System V与BSD风
格init程序。 

这里的工作量就比较大了,挂载文件系统,启动内核模块,设置用户信息等等。

这里不详细讨论。

参考1:https://baike.baidu.com/item/bios/91424?fr=aladdin

参考2:https://www.cnblogs.com/love3556/p/5908001.html

参考3:https://www.cnblogs.com/codecc/p/boot.html

参考4:https://blog.csdn.net/Apollon_krj/article/details/77869770

参考5:https://baike.baidu.com/item/systemd/18473007

猜你喜欢

转载自blog.csdn.net/weixin_39465823/article/details/85222186