百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

硬核警告!!!当你按下开机键后电脑是如何工作的?

liebian365 2024-11-02 13:36 20 浏览 0 评论

首先按下开机键,电源电压稳定,电脑开始自检。自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡-VGA接口-键盘-硬盘-并行口(打印机)和串行口(RS232)。所以电脑自检首先自检cpu,到串行口(RS232)检查结束。

自检中如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号,等待用户处理。

当自检完成后,系统进行下一步骤:从硬盘、光盘或网络服务器上寻找操作系统进行启动,电脑的控制权将由操作系统完成。

此时交给了UEFI。

UEFI系统的启动流程遵循PI Spec。

UEFI系统从加电到关机可以分为七个阶段,这七个阶段分别为:

SEC(安全验证)->PEI(EFI前期初始化)->DXE(驱动执行环境)->BDS(启动设备选择)->TSL(操作系统加载前期)->RT(系统系统运行阶段)->AL(系统灾难恢复期或关机,这里不详解)

SEC阶段:

作为计算机上电后第一阶段,SEC会做一些与硬件相关的验证,并且将控制权交给PEI Foundation。(注:IA-32和Itanium会有差别)

SEC阶段主要功能:

–处理平台启动及重启信号

–创建临时存储区域

–作为可信系统的根

–传递参数给下一阶段(既PEI Foundation)

1、处理平台启动机重启信号:

系统上电信号处理,系统重启信号处理,系统异常信号处理。

2、创建临时存储区域:

SEC阶段需要初始化一些临时内存(这时各种外设及内存并没有被初始化),作为程序的运行载体,仅对CPU和CPU内部Cache作为临时RAM,区别于普通的内存,我们称它为CAR(Cache As RAM)。因为内存并没有初始化,需要将Cache配置成为no-eviction,当read/write miss时候并不会向内存发出miss事件,如果这时向内存发出miss事件会导致平台故障。

3、作为可信系统的根

任何安全设计中,后续模块获得控制的完整性,由调用者证实必须有根,既SEC阶段作为整个可信系统的根。

4、传递参数给下一阶段(既PEI Foundation)

SEC阶段需要为PEI阶段做准备,最终SEC需要把控制权交给PEI。

需要准备如下信息给PEI Foundation:

–当前的系统状态,PEI可以根据这些状态判断系统的健康状况。(注:IA-32和Itanium会有差别)

–BFV(Boot Firmware Volume)的地址和大小

–临时RAM的地址和大小

–栈的地址和大小

–EFI_SEC_HOB_DATA_PPI这个HOB(Optional)

PEI阶段:

PEI阶段资源依然十分有限,PEI后期才会初始化内存,主要功能就是初始化一些硬件设备,并且给DXE准备执行环境,通过HOB传递给DXE Foundation,最终将控制权交给DXE Foundation。

–初始化内存

–准备memory相关的HOB

–准备FV相关的HOB

–控制权交给DXE Foundation

PEI阶段主要由PEI Foundation、PEIM Dispatcher来处理上述操作。

–PEI Foundation:负责初始化gPeiServices和流程执行

–PEI Dispatcher:找出系统中所有的PEIM,并根据PEIM之间的依赖关系按顺序执行PEIM,其中CPU/Memory初始化都是由特定的PEIM来完成的,其中DxeIpl来Load DxeCore。


PEI阶段流程

DXE阶段:

这一阶段,内存已经完全可以使用了,这个阶段进行大量的工作,主要是提供:

–DXE Foundation:负责初始化一系列服务如BootServices/RuntimeServices/DxeServices,和安装一些ConfigurationTable。

–DXE Dispatcher:负责分发DXE Drivers,包括MM Drivers也是在这个阶段共同分发。

–DXE Drivers:负责初始化一些Protocol及安装Binding Driver为后续使用。

BDS阶段:

BDS阶段理论上也是DXE阶段的一部分,主要负责执行可启动策略,主要包括:

–初始化控制台设备

–为设备加载相关的驱动,由Binding Driver来决定怎么加载。

–为BIOS Setup做准备。

–根据系统设置加载和启动可启动选项(Linux grub开始加载)。

TSL阶段:

由BDS阶段LoadImage并StartImage的grub镜像。

这一阶段由grub执行,资源由UEFI kernel提供,当grub调用ExitBootServices后就进入系统Runtime阶段。

在Linux资料中,被俗称GRUB的就是Boot Loader,GRUB是GRand Unified Bootloader的缩写,MBR的前446字节存放的就是GRUB程序的一部分,它是一个多重操作系统启动管理器,用来引导不同系统,GRUB是目前Linux环境中最流行的启动管理器。

如果你的计算机上配置了双操作系统,使用者就是在GRUB中进行选择究竟启动哪个操作系统。

RT阶段:

这阶段控制权完全交给了OS,保留RuntimeServices交给OS使用,MM Mode脱离于OS独立运行。

此时Linux开始加载,首先读入 /boot 目录下的内核文件

内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境

init是Linux系统中的第一个运行的程序,所以他的进程编号(PID)为1恒不变

许多程序需要开机启动,即Daemon。

init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,确定其所需要的RunLevel。Linux启动时根据"运行级别",确定要运行哪些程序

Linux预置七种运行级别(0-6):

–运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

–运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

–运行级别2:多用户状态(没有NFS)

–运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

–运行级别4:系统未使用,保留

–运行级别5:X11控制台,登陆后进入图形GUI模式

–运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

Linux会根据存放在/etc的子目录下所存放的RunLevel,决定要加载的progress。

第四步:加载开机启动程序(system init)

系统从 /etc/rcN.d 目录里列出的程序链接至 /etc/init.d目录 (ps:没想到吧,这才是真正的启动目录)。init进程逐一加载开机启动程序。

第五步:用户登录

开机启动程序加载完毕以后,就要让用户登录了。

Linux登录大致分为以下三种:

1.最简单的root账号密码登陆

通过root+root密码登陆Linux服务器

2.普通用户登陆

通过普通用户登陆到服务器上,如果要使用sudo的权限就需要切换到root账号上去

3.公钥私钥免密码的方式登陆

可以分为2种

①把本地主机公约输入到被登陆的服务器上(这个是最常见,也是最保险的免密码登陆方式,不过如果是多台服务器的话,就需要添加本地主机的公钥到多台的被登陆的服务器上去)

②把被登陆的服务器的私钥提供给本地主机(这种方式可以应用在管理多台服务器上,如果所有远程服务器都设置成同一个公钥,用一个私钥就可以登陆所有的服务器上了)

经过密码验证,我们进入了桌面环境,Linux就此启动完成。

怎么样,你学废了吗?

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: