文档章节

探秘操作系统引导过程

l
 linux-tao
发布于 2017/09/09 22:38
字数 1254
阅读 7
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

导读 引导过程指的是从计算机通电那一瞬间到CPU开始执行操作系统代码时的整个过程。在这个非常初期的阶段汇总,CPU执行标准的启动代码。这部分代码需要对硬件设备进行探测,寻找最有可能启动的操作系统并且根据用户定义的参数启动这个操作系统。

传统形式的引导:

大部分PC机仍然使用BIOS引导,默认(通用)的引导加载器(boot loader)。BIOS是一种类型的固件,提供一些简单的菜单项,用户通过这写菜单项可以修改主板参数、引导设备顺序等内容。固件(firmware)可以看做一种软件,这种软件被写入芯片,所以是“固化”的。固件代码本身可以保存在只读存储器(ROM)中。也可保存在可编程只读存储器(PROM)或者电可擦除只读存储器(EEPROM)中,后两种形式更为常见。

  1. 自诊断程序:通过读取CMOS中的硬件配置,并对其自检和初始化
  2. CMOS设置程序:引导过程中,用特殊热键启动,进行设置后,存入CMOS RAM中
  3. 系统自举装载程序(bootstrap):在自检成功后将磁盘相对0道0扇区上的引导程序装入内存运行
  4. 主要I/O设置的驱动程序和中断服务

BIOS和固件的功能是一样的:加载一些基本的自举(bootstrap)代码给CPU执行。自举程序和BIOS或者固件的职责是:初始化硬件、检测硬件、定位这些引导设备、执行引导加载器程序;引导加载器程序的职责是:寻找选择的操作系统、将所有必要的命令行参数传递给操作系统内核。

传统的BIOS引导操作系统(Windows)如下图:

探秘操作系统引导过程探秘操作系统引导过程

计算机开机后,固化在ROM中的BIOS会被加载到内存运行,BIOS自检完毕后就会加载COMS的参数,通过COMS的参数,BIOS加载启动磁盘的MBR到内存运行。通过运行MBR的代码,记录在MBR分区表中,标记为活动分区的磁盘分区PBR(Partition Boot Record)被加载到内存运行,PBR在运行后可加载操作系统加载器(如Windows的bootmgr)的代码到内存运行,操作系统加载器可加载操作系统内核到内存运行,进而完成BIOS的引导流程。

下一代BIOS:EFI

EFI(Extensible Firmware Interface)是一种取代传统BIOS的技术。BIOS是一个固定的程序,而且通常是封闭的。EFI是一个全功能的运行时系统,在引导期间提供了更为强大的接口,甚至在之后的运行时也提供了接口,EFI程序通常是引导加载器。EFI程序实际上是一个二进制程序。

EFI的一般由一下几部分组成:

  1. Pre-EFI初始化模块
  2. EFI驱动执行环境
  3. EFI驱动程序
  4. 兼容性支持模块(CSM)
  5. EFI高层应用
  6. GUID磁盘分区

NVRAM变量

NVRAM是固件接口中一个非常强大的功能,而且这显然是BIOS没有的功能,NARAM变量是在系统范围内存在的,操作系统和固件本身都可以访问。一般来说。NVRAM变量可以分为以下几类:

  • 引导相关的变量:用于指定要引导的内核和根文件系统,还负责向内核传递参数。
  • 固件内部变量:固件使用的变量,一般被操作系统忽略
  • 临时变量:根据需要设置或清空,通常在重新引导的时候不会保留

EFI引导操作系统(Windows)过程如下图:

探秘操作系统引导过程探秘操作系统引导过程

计算机开机后,就会加载固化在只读存储器RAM中的pre-EFI初始化程序,进行主桥及存储器的初始化工作,紧接着载入EFI驱动执行环境(DXE),EFI驱动会被相继加载及初始化,接着加载、启动EFI系统,在EFI系统启动后,GUID分区表就会被识别,之后EFI系统通过加载 NVRAM的参数来决定是否启动BootCamp程序(苹果双重引导的解决方案),不启动BootCamp程序就会启动启动装载程序(Boot Loader)加载操作系统内核,完成EFI的引导流程。

原文来自:http://www.jianshu.com/p/944fc7104a75

本文地址: http://www.linuxprobe.com/system-boot.html

l
粉丝 21
博文 1008
码字总数 1130720
作品 0
深圳
运维
私信 提问
加载中
请先登录后再评论。
记一次失败的Perl + Nginx + FastCGI 配置过程

这两天心血来潮,不知道为什么和 Perl + Nginx + FastCGI 配置 耗上了。但是失败了,记录如下: 1)安装Nginx 1.4.3 ,我的是WINDOWS 7 系统,修改配置文件如下: location ~ .(pl|cgi|perl)?...

通吃岛-低手哥
2013/10/27
1.6K
7
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
5.7K
8
CSS Browser Selector

CSS Browser Selector 是一个小的 JS 库,可增强 CSS 的选择器功能,支持根据不同的操作系统和浏览器来编写指定的 CSS 代码,可检测浏览器、浏览器版本、平台、平台版本、设备、设备版本、m...

匿名
2013/01/17
2.8K
1
研究虚拟机--Jikes RVM

Jikes研究虚拟机(Jikes Research Virtual Machine,简称Jikes RVM)是一种成熟的用于执行Java程序的虚拟机,其早期版本与当前版本分别在通用公共许可证(CPL)与Eclipse公共许可证(EPL)下开...

匿名
2013/02/13
1.1K
0
硬实时操作系统--Raw OS

Raw-OS 起飞于2012年,Raw-OS志在制作中国人自己的最优秀硬实时操作系统。 Raw-OS 操作系统特性 内核最大关中断时间无限接近0us, s3c2440系统最大关中断时间实测0.8us。 支持idle任务级别的事...

jorya_txj
2013/03/19
6.1K
1

没有更多内容

加载失败,请刷新页面

加载更多

鼠年吉祥,新年快乐

今天是大年初一,很高兴在过去一年中有您的陪伴,希望大家在新的一年中平安健康,一切顺利,加油。 邓飞 202001250539 于后园爷爷家 本文分享自微信公众号 - 育种数据分析之放飞自我(R-bre...

育种数据分析之放飞自
01/25
0
0
不烧脑、不耗时、全免费,带你0基础学Python

文末有福利 Python是人工智能的未来。 最近,电气和电子工程师协会( IEEE)发布了顶级编程语言交互排行榜:Python高居首位。 而且随着大数据和人工智能的发展,Python受到了越来越多程序员的...

kunjian
今天
0
0
R语言入门系列之一

写在前面 计算机语言的学习并不困难,关键是一定要由浅入深的实际操作练习。也许最开始的比较简单,学习者一带而过没有实际操作,之后的进一步学习很可能会陷入不知所云的困境,实际操作所带...

SYSU星空
2019/02/17
0
0
Istio-本地运行

概述 基于上一篇 Istio1.6-二进制编译和本地运行 但集中在 pilot-discovery 和 envoy(pilot-agent 大部分功能仅作为 envoy 的 watchdog,略过) NOTE: 以下的描述,相对路径都基于目录 /g...

深蓝苹果
39分钟前
9
0
基于Linux、C、JSON、Socket的编程实例(附代码)

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间阅读编程笔记! 一、前言 之前在学习socket编程的时候有分享一个基于控制台的简易天气客户端的实现,当时提供的是window下的代码,最近...

学以解忧
2019/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部