Linux学习记录 - (1)计算机初始化启动过程

为什么我们把 “启动” 称作 “boot” ?
 
boot原来的意思是靴子,”启动”与靴子有什么关系呢? 原来,这里的boot是bootstrap(鞋带)的缩写,它来自一句谚语:
 
‘pull oneself up by one’s bootstraps’
 
字面意思是”拽着鞋带把自己拉起来”,这当然是不可能的事情。最早的时候,工程师们用它来比喻,计算机启动是一个很矛盾的过程:必须先运行程序,然后计算机才能启动,但是计算机不启动就无法运行程序!
 
早期真的是这样,必须想尽各种办法,把一小段程序装进内存,然后计算机才能正常运行。所以,工程师们把这个过程叫做”拉鞋带”,久而久之就简称为boot了;


计算机启动分两个阶段

不同的操作系统其启动的流程自然有所区别,所以启动的过程也可以按照操作系统启动前后,分两个阶段来介绍:计算机初始化启动过程操作系统启动过程


计算机初始化启动过程(从打开电源到操作系统启动之前)

1- BIOS1启动

上个世纪70年代初,”只读内存”(read-only memory,缩写为ROM)发明,开机程序被刷入ROM芯片,计算机通电后,第一件事就是读取它。

这里写图片描述

这块芯片里的程序叫做”基本输入输出系統”(Basic Input/Output System),简称为BIOS。
它是被固化在计算机ROM芯片上的一组程序。它是微机系统软、硬件之间的一个可编程接口,通过跳线开关和系统配带的驱动程序盘,可以对ROM进行重写,方便地实现BIOS升级。

  按下电源开关,电源就开始向主板和其它设备供电,此时电压还不稳定;
  主板控制芯片组会向CPU发出一个Reset信号,让CPU复位初始化;
  当主板芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去Reset信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号);
  CPU马上就从地址FFFF:0000H 处开始执行指令,这个地址在系统BIOS的地址范围内,无论三大BIOS厂商2,放在这里的只是一条跳转指令,跳到BIOS系统中真正的启动代码处。

Created with Raphaël 2.1.2 电源开关按下 主板芯片组 cpu电压是否稳定? 系统BIOS启动 加电自检 cpu复位 yes no

1-1 启动BIOS系统的POST3(Power-On Self Test,加电自检)

  系统BIOS的启动代码首先进行POST( 加电后自检 )。
  POST主要检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备;
  由于POST在初始化显示卡之前,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型
  在正常情况下,POST过程进行得非常快,几乎无法感觉到它的存在。POST结束之后就会调用其它代码来进行更完整的硬件检测。

Created with Raphaël 2.1.2 系统BIOS启动 加电自检 关键设备电路是否存在和正常? 系统BIOS找到显卡的BIOS 发出警报并死机 yes no

1-2 显卡BIOS及其他设备BIOS的查找执行

  接下来系统BIOS将查找显卡的BIOS
  存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡
  此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。
  系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备
  查找完所有其它设备的BIOS之后,系统BIOS将显示出它自己的启动画面,其中包括有系统BIOS的类型、序列号和版本号等内容。
  

Created with Raphaël 2.1.2 显卡BIOS 显卡BIOS程序初始化显卡 显卡是否正常? 屏幕显示显卡信息 其他设备BIOS程序初始化设备 其他设备是否正常? 显示系统BIOS信息 屏幕提示等待处理 黑屏 yes no yes no

1-3 cpu检测与ram检测

  接着系统BIOS将检测和显示CPU的类型和工作频率,测试所有的RAM,并同时在屏幕上显示内存测试的进度。
  可以在CMOS设置中自行决定使用简单耗时少或者详细耗时多的测试方式。

Created with Raphaël 2.1.2 测试cpu 正常? 检测ram 正常? 是否设置BIOS? 蓝屏死机 yes no yes no

1-4 枚举设备,初始化寄存器,分配中断、IO端口、DMA资源

  内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,包括硬盘、CD-ROM、串口、并口和软驱等设备,另外绝大多数较新版本的系统BIOS在这一过程中还要自动检测和设置内存的定时参数、硬盘参数和访问模式等。
  标准设备检测完毕后,系统BIOS内部支持即插即用的代码将开始检测和配置系统中安装的即插即用设备。每找到一个设备之后,系统BIOS都会在屏幕上显示出设备的名称和型号等信息,同时为该设备分配中断、DMA通道和I/O端口等资源。

Created with Raphaël 2.1.2 标准硬件设备检测 是否存在即插即用设备? 为即插即用设备分配资源 系统BIOS清屏,显示系统配置表 Boot Sequence yes no

  到这一步为止,所有硬件都已经检测配置完毕了,多数系统BIOS会重新清屏并在屏幕上方显示出一个表格,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。

这里写图片描述

2- 启动顺序Boot Sequence(选择启动设备以加载MBR4)

  根据BIOS中对启动顺序的设定,BIOS自己会依次扫描各个引导设备,然后第一个被扫描到具有引导程序(bootloader)的设备就被作为要启动的引导设备。
  打开BIOS的操作界面,里面有一项就是”设定启动顺序”,如 PHONIX BIOS 的设置:

这里写图片描述

调用INT 19h启动自举程序(激活操作系统的入口点)

3- 主引导记录 (MBR,Main Boot Record)

  BIOS按照”启动顺序”,把控制权转交给排在第一位的储存设备。
  这一步实现起来的步骤比较多,前面的BIOS通过读取并执行启动设备的MBR中的bootloader,而bootloader要实现的功能就是提供一个菜单给用户,让用户去选择要启动的系统或不同的内核版本,然后把用户选择的内核版本加载至RAM中的特定空间,接着在RAM中解压、展开,而后把系统控制权移交给内核。
  这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给”启动顺序”中的下一个设备。
  这最前面的512个字节,就叫做”主引导记录”(Master boot record,缩写为MBR)。
  grub是bootloader中的一种,就grub来说,为了打破在MBR中只有446Bytes用于存放bootloader这一限制,所以这一步的实现是这样的:grub是通过分成三个阶段来实现加载内核这一功能的,这三个阶段分别是:stage1, stage1.5以及stage2。其中:

  • stage1:存放于MBR的前446Bytes,用于加载stage1.5阶段,目的是为了识别并驱动stage2(或者/boot)所在分区的文件系统;

  • stage1.5:存放于MBR之后的扇区,加载stage2所在分区的文件系统驱动,让stage1中的bootloader能识别stage2所在分区的文件系统;

  • stage2:存放于磁盘分区之上,具体存放于/boot/grub目录之下,主要用于加载内核文件(vmlinuz-VERSION-RELEASE)以及ramdisk这个临时根文件系统(initrd-VERSION-RELEASE.img或initramfs-VERSION-RELEASE.img)。

概述:假如要启动的是硬盘设备,首先我们的硬件平台主板BIOS必须能够识别硬盘,然后BIOS才能加载硬盘中的bootloader,而bootloader自身加载后就能够直接识别当前主机上的硬盘设备了;
不过,能够识别硬盘设备不代表能够识别硬盘设备中的文件系统,因为文件系统是额外附加的一层软件组织的文件结构,所以要对接一种文件系统,就必须要有对应的能够识别和理解这种文件系统的驱动,这种驱动就称为文件系统驱动。
而stage1.5就是向grub提供文件系统驱动的,这样stage1就能访问stage2及内核所在的分区(/boot)了。

这里写图片描述


  1. BIOS即基本输入/输出系统,它是被固化在计算机ROM芯片上的一组程序。它是微机系统软、硬件之间的一个可编程接口,通过跳线开关和系统配带的驱动程序盘,可以对ROM进行重写,方便地实现BIOS升级。
  2. Award BIOS、AMI BIOS 和 PHONIX BIOS,开发BIOS是一件技术含量很高的工作,从业人员也少;一流主板厂商的BIOS研发人员,年薪往往是以七位数字来计算的!
  3. CMOS是一块可读写的RAM芯片,保存系统当前的硬件配置情况和用户的设定参数;BIOS中装有一个程序称为“系统设置程序”,设置CMOS中的参数;CMOS由电池供电,断电后数据会丢失;前16字节用于存储时间.
  4. 主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值