电脑开机过程

电脑开机过程

  1. 处理器的引脚中, 有一个是RESET, 用于接受复位信号. 每当处理器加电, 或者RESET引脚的电平由低变高时, 处理器都会执行一个硬件初始化,以及一个可选的内部自测试,然后将内部所有寄存器的内容初始化到一个预置的状态.对Intel8086,来说, 复位将使代码段寄存器(CS)的内容为0xF000, 其他所有寄存器的内容都为0xFFF0, 包括指令指针寄存器(IP)

  2. 因为8086加电或复位时, CS = 0xF000, IP = 0xFFF0(但是,8086已经成为历史,它之后的处理器都能够兼容8086的功能,但却拥有超过32的地址线,x86系列64根.我在bochs虚拟机上设置的地址线是32根,结果如下图), 8086取c出的第一条指令位于物理地址0xFFFF0, 位于ROM中, 哪里固化了开机时需要执行的指令.但如下图能看到初始发出的物理内存地址是0x0000 0000 FFFF FFF0,是因为在刚刚启动时,处理器将其余(高位部分)的地址线强制为高电平,当前Bochs的地址线为32根,而Bochs可以虚拟64根地址线,为了方便,所以表达为64为地址,前32为0 在这里插入图片描述

  3. 处理器取指令的自然顺序是从内存的低地址到高地址推进.如果从0xFFFF0开始执行, 这个位置离1MB内存的顶端(物理地址0xFFFFF)只有16个字节的长度.所以, ROM中位于物理地址0xFFFF0的地方, 通常是一个跳转指令,能看到上图中将要执行的指令为jmp far f000:eo5b, 他通过改变CS和IP的内容, 使处理器从ROM中的较低地址开始.ROM上固化着BIOS(基本输入输出系统),它执行基本的硬件自检以及建立中断向量表,初始化BIOS中断,目的是提供硬件访问,使对硬件的访问简单易行.

  4. 硬盘的第一个扇区0面0道1扇区, 或者说0头0柱1扇区, 这个扇区称为主引导扇区. ROM-BIOS将读取硬盘主引导扇区的内容, 将它加载到内存地址0x0000:0x7c00, 然后用一个jmp指令跳到那里执行.

双系统就是在磁盘的第一个扇区中写入了grub,引导系统选择。

BIOS

它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序, 主要进行硬件的诊断,检测和初始化。现在还有新型UEFI,在此就不多说了。BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS. 在以Intel8086为处理器的系统中, 处理器采用统一编制的寻址方式, ROM占据着整个内存空间顶端的64KB, 物理地址为0xF0000~0xFFFFF, 里面固化了开机时要执行的指令; DRAM占据着较低端的640KB, 地址范围是0x00000~0x9FFFF; 中间还有一部分,给了其他外围设备.其中系统BIOS是本文要讨论的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。

MBR

MBR(Mastre 或 Main Boot Record),它存在于整个硬盘最开始的那个扇区,即0盘0道1扇区,这个扇区便称为MBR引导扇区.注意这里用CHS方式表示MBR引导扇区的地址,因此扇区地址以1开始,顺便说一句,LBA方式是以0为起始为扇区编址的.
MBR引导扇区的内容是:
(1) 446的引导程序及参数
(2) 64字节的分区表
(3) 2字节的结束标志0x55和0xaa

Grub

是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数

引导过程

由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。
装载GRUB和操作系统的过程,包括以下几个操作步骤:

  1. 装载记录
    基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。
  2. 装载Grub
    这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。
  3. 装载系统
    GRUB把机器的控制权移交给操作系统。
    在这里插入图片描述
    GRUB提供两个选项: 选项一(M1)可以直接加载Windows的内核文件来开机;选项二(M2)则是将开机管理工作交给第二个分区的启动扇区(boot sector).当用户在开机的时候选择选项二时,那么整个开机管理工作就会交给第二分区的启动引导程序.当第二个启动引导程序启动后,该启动引导程序内仅有一个启动选项,因此就能够使用Linux的内核文件来启动.这就是多重引导的工作情况.
  • 每个分区都拥有自己的启动扇区(boot sector)
  • 图中的系统分区为第一及第二分区
  • 实际可启动的内核文件是放置在各分区中的
  • 启动引导程序只会认识自己的系统分区内的可启动的内核文件,以及其他启动引导程序而已
  • 启动引导程序可直接指向或是简介将管理权转交给另一管理程序

那么,现在请你想一想,为什么人家常常说:“如果要安装多重引导,最好先安装Windows再安装Linux”?

  • Linux在安装的时候,你可以选择将启动引导程序安装在MBR或各别分区的启动扇区,而且Linux的启动引导程序可以手动设置选项,所以你可以在Linux的启动引导程序里面加入Windows启动的选项
  • Windows在安装的时候,它的安装程序会主动地覆盖掉MBR,以及自己所在分区的启动扇区,你没有选择的机会,而且他没有让我们自己选择选项的机会
接口

当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。

菜单接口

在菜单接口上,按[e]键,对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。 添加(加在当前行后面(用[o]键),加在当前行前(用[0]键),编辑(用[e]键),删除(用[d]键)。
在所有的改变都完成后,用[Enter]键来执行这些命令,并引导操作系统。[Esc]键来放弃

就只是大概说了一下,很简单的过程,如果展开来说的话,整个过程是很复杂的…………

突然了解到一些东西,就来补充一下,你有没有想过为什么windows正常开机那么快,而如果更新的话,就很慢?其实是因为基本上如果不更新的话,他关机的时候是将算好的东西写入磁盘当中,开机的时候从磁盘当中读回来。而如果更新的话,他是将所有需要的东西重新算了一遍,所以更新开机是很慢的。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值