Linux开机过程

参考:
Linux开机过程
Linux启动流程
计算机是如何启动的

引言

每个硬盘最多有一个MBR,这个MBR有512Bytes,以0x55开始,0xAA结束。MBR分为446Bytes与64Bytes,前446Bytes是一些开机的信息,后64Bytes是分区表信息,每个分区有16Bytes,所以最多有4个主分区。但是有一种扩展分区,Linux中最多有一个扩展分区,扩展分区中还可以有逻辑分区,逻辑分区理论上没有上限。
每个分区中可以装一个操作系统,每个操作系统启动时需要一个boot loader来启动它,这个boot loader会放在一个叫boot sector的地方。即每个分区开始处就会有一个boot sector,里面存放的是这个操作系统的引导程序,也就是分区引导程序。所以开机过程中MBR会找到这个boot secotr,然后启动boot loader。Linux中最常见的boot loader就是Grub。
但是如果我有多个操作系统怎么办呢?这时MBR中就会跳过寻找分区表中的激活分区,而是启动boot loader,比如Grub。然后让我们自己来选取启动哪个操作系统。
之后计算机的控制权就交给Grub来处理。

Boot loader

主要功能:

  • 提供选单。如果你有多个操作系统,那么就是让你选择启用那个操作系统的Boot sector。
  • 载入kernel。直接指向可以开机的程序段来开始操作系统。
  • 转交给其他loader。

Linux开机过程_第1张图片
这个图中的MBR就是启动了Boot loader来让我们自己选择加载哪个操作系统的kernel档案。图中红色就是kernel档案。

开机过程

首先是充电,启动BIOS进行硬件自检,然后BIOS把控制权转交给下一个阶段的启动程序。
这个下一个阶段的启动程序存放在哪个设备中呢?即BIOS需要一个外部设备的排序,根据排序以及外部设备的内容来转交控制权。
BIOS找到一个优先级最高且可作为启动设备的设备之后,就把控制权交给这个设备的MBR,即下一个阶段的启动程序
在MBR中后64字节记录了整个设备的大致分区情况。根据MBR的信息找到boot loader,然后根据boot loader启动操作系统的kernel。
上述过程完成之后,控制权就转交给操作系统了。

grub

Grub是Linux的一个常用boot loader,可以根据grub来加载Linux内核。

你可能感兴趣的:(Linux开机过程)