电脑开机过程
- 处理器的引脚中, 有一个是RESET, 用于接受复位信号. 每当处理器加电, 或者RESET引脚的电平由低变高时, 处理器都会执行一个硬件初始化,以及一个可选的内部自测试,然后将内部所有寄存器的内容初始化到一个预置的状态.对Intel8086,来说, 复位将使代码段寄存器(CS)的内容为0xFFFF, 其他所有寄存器的内容都为0x0000, 包括指令指针寄存器(IP)
- 因为8086加电或复位时, CS = 0xFFFF, IP = 0x0000, 所以, 它取的第一条指令位于物理地址0xFFFF0, 正好位于ROM中, 哪里固化了开机时需要执行的指令.
- 处理器取指令的自然顺序是从内存的低地址到高地址推进.如果从0xFFFF0开始执行, 这个位置离1MB内存的顶端(物理地址0xFFFFF)只有16个字节的长度.所以, ROM中位于物理地址0xFFFF0的地方, 通常是一个跳转指令, 他通过改变CS和IP的内容, 使处理器从ROM中的较低地址开始.
- 硬盘的第一个扇区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(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。
Grub
是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
引导过程
由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。
装载GRUB和操作系统的过程,包括以下几个操作步骤:
- 装载记录
基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。 - 装载Grub
这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。 - 装载系统
如linux内核。GRUB把机器的控制权移交给操作系统。不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。
接口
当GRUB环境开始载入第二步引导装载程序时,它寻找自己的配置文件(menu.lst)。当找到配置文件后,它使用这个配置文件建立一个要载入的操作系统的菜单列表, 然后显示引导菜单接口。 如果配置文件没有被找到,或者如果配置文件不能读取,那么GRUB将载入命令行接口。
菜单接口
在菜单接口上,按[e]键,对高亮菜单项中的命令进行编辑。按[c]键载入一个命令行接口。 添加(加在当前行后面(用[o]键),加在当前行前(用[0]键),编辑(用[e]键),删除(用[d]键)。
在所有的改变都完成后,用[Enter]键来执行这些命令,并引导操作系统。[Esc]键来放弃
就只是大概说了一下,很简单的过程,如果展开来说的话,整个过程是很复杂的…………
突然了解到一些东西,就来补充一下,你有没有想过为什么windows正常开机那么快,而如果更新的话,就很慢?其实是因为基本上如果不更新的话,他关机的时候是将算好的东西写入磁盘当中,开机的时候从磁盘当中读回来。而如果更新的话,他是将所有需要的东西重新算了一遍,所以更新开机是很慢的。