简述计算机启动过程

硬件部分

1. 内部电源打开,初始化,等待一小段时间用来产生稳定的电流。如果主板芯片和 CPU 收到了不符合规定的电流,将自动产生一个RESET信号。在主板没有收到电源的 Power Good 信号之前,重复步骤1

2. 执行 BIOS 中 0FFF0h 处的代码。这里只有一条 JMP 指令,将跳转到真正的 BIOS 启动程序处

3. BIOS 开始加电自检(Power-On Self Test, POST),如果出现错误,启动停止

4. BIOS 开始寻找显卡,找到的话将执行显卡的 BIOS,接着显卡初始化,将显示一段显卡信息,我们开机看到的第一屏就是它

5. BIOS 开始执行所有其他设备的 BIOS,包括软驱,硬盘、光驱等

6. BIOS 显示启动信息

7. BIOS 开始额外的检测。一般有内存检测,如果内存有问题,将显示错误消息

8. BIOS 探测所有的硬件,将显示如硬盘、光驱信息等

9. BIOS 给出一个已知硬件的列表

10. BIOS 更新 ESCD

10. BIOS 按照设置的驱动器顺序找驱动器,如果驱动器存在的话继续找 MBR,如果找不到驱动器,系统显示错误信息并停止

11. MBR 从分区表中找到第一个活动分区(分区描述中第一个字节为 80H),然后读取并执行这个活动分区的分区引导记录,而分区引导记录将负责引导系统

软件部分

1. MBR 读取 DPT(分区表),从中找出活动的主分区

2. 然后读取活动主分区的 PBR(分区引导记录,也叫pbr)

3. PBR 再搜寻分区内的启动管理器文件 bootmgr/grub ,Vista 之前的 Windows 系统使用的是 NTLDR(NT loader),下面以bootmgr为例。其他启动管理软件用法一致。bootmgr 被找到后,控制权就交给了bootmgr。

4. bootmgr 读取 \boot\bcd 文件(BCD, Boot Configuration Data,开机组态数据库,是一个存储启动组态且独立于硬件的数据库。它代替了由旧版Windows使用的NTLDR之开机组态文件boot.ini。)

5. bootmgr 通过调用作业系统的开机程序来加载操作系统的核心和基本系统应用程序。

bootmgr/NTLDR

Windows Boot Manager(Windows 启动管理器)是从Windows Vista开始引进的开机管理程序。当电脑运行完BIOS后,启动扇区会先去查找开机硬盘中标记”启动”分区下的BOOTMGR文件,接着BOOTMGR会读取开机组态数据库(BCD, Boot Configuration Database)文件下的启动组态数据,接着根据其中的数据加载操作系统。

NTLDR(NT loader的缩写)是微软的Windows NT系列操作系统(包括Windows XP和Windows Server 2003)的引导程序。NTLDR可以从硬盘以及CD-ROM、U盘等移动存储器运行并引导Windows NT系统的启动。如果要用NTLDR启动其他操作系统,则需要将该操作系统所使用的启动扇区代码保存为一个文件,NTLDR可以从这个文件加载其它引导程序。NTLDR主要由 NTLDR (引导程序本身)和 boot.ini (引导程序的组态文件)两个文件组成。

BCD 包含由Windows Boot Manager的菜单,就像boot.ini包含NTLDR所使用的菜单。这些菜单的内容是:
1.通过调用winload.exe启动Windows的选项。
2.通过调用winresume.exe使Windows从休眠中启动的选项。
3.通过调用NTLDR来启动Windows先前版本的选项。
4.加载和运行一个分区启动纪录的选项。

Windows 和 Linux 启动部分的对应关系

bootmgr —— NTLDR —— grub
\boot\bcd —— boot.ini —— /grub/grub.cfg
Windows 保留分区 —— /boot

参考资料
Boot Configuration Data —— Wikipedia
NTLDR —— Wikipedia

如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: 简述计算机启动过程

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
支付宝捐赠
anyShare分享到:

发表回复