unix-c--开机流程

从按下计算机的电源键那一刻,计算机都在干啥?

读取BIOS

首先工作便是BIOS。计算机会先读取bios里面的内容,BIOS里面许多非常重要的信息。比如启动方式是传统的MBR还是UEFI。
启动的顺序,从硬盘还是u盘还是光盘启动或者是网络启动。还包括计算机的一些内存信息磁盘信息等等一些。

读取MBR

当计算机从BIOS知道该启动那一个(硬盘还是u盘),这里只描述传统的MBR引导方式,目前很多windows都采用的UEFI的启动方式。
但是大多数的linux是采用还是传统的启动。所以呢,计算机会读取硬盘上第0磁道的第一个扇区MBR
,主引导记录,它的大小是512字节。小小的512字节,却担负着整个操作系统开机启动的决定性作用。
1 0x000-0x1BD (0-445) 引导代码
2 0x1BE-0x1CD (446-461) 分区表项1
0x1CE-0x1DD (462-477) 分区表项2
0x1DE-0x1ED (478-493) 分区表项3
0x1EE-0x1FD (494-509) 分区表项4
3 0x1FE-0x1FF (510-511) 签名值
系统找到MBR之后呢,就会将它复制到物理内存中,而物理内存的内容就是Boot Loader

执行BootLoader

Boot Loader是在加载内核前运行的一小段程序,通过这一小段程序,计算机可以初始化硬件设备,
建立内存空间的映射图,从而将系统的软硬件是一个合适的状态,以便为加载内核做准备。
Boot Loader linux主要是GRUB,windows NTLDR。

加载内核

gurb里面存有linux的内核的路径,所以根据路径来加载内核,内核是放在/boot目录下
当内核加载就会执行init程序,init是用来初始化系统环境的。init会根据配置文件
来确定启动的级别,这个级别可以由我们来自己设置,不同的级别会选择加载不同的
守护进程,在windows种叫服务。当一切加载好了之后,就可以登陆了。主要是两种
启动级别,一种是图形界面,一种是字符界面

Contents
  1. 1. 读取BIOS
  2. 2. 读取MBR
  3. 3. 执行BootLoader
  4. 4. 加载内核
,