BIOS基础知识
Basic Input Output System,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。形象地说,BIOS应该是连接软件程序与硬件设备的一座"桥梁",负责解决硬件的即时要求。
BIOS中包含以下几个主要程序:
1. 自诊断程序/(加电自检程序):通过读取CMOS RAM中的内容识别硬件配置,并对其进行自检和初始化;
2. CMOS设置程序:引导过程中,用特殊热键启动,进行设置后,存入CMOS RAM中;
3. 系统自举装载程序:在自检成功后将磁盘的引导程序装入内存,让其运行以装入操作系统;
4. 主要I/O设备的驱动程序和中断服务/(基本外围设备的驱动程序): 由于BIOS直接和系统硬件资源打交道,因此总是针对某一类型的硬件系统,而各种硬件系统又各有不同,所以存在各种不同种类的BIOS。
MBR
MBR(Master Boot Record),中文意为主引导记录。
一个扇区的硬盘主引导记录MBR:
·pre-boot区(预启动区)(偏移地址0000H--0088H),占446字节。
·出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节。
·分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。
·结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。
0000-0088
|
Master Boot Record 主引导程序 |
主引导 程序 |
0089-01BD |
出错信息数据区 |
数据区 |
01BE-01CD |
分区项1(16字节) |
分区表
|
01CE-01DD |
分区项2(16字节) | |
01DE-01ED |
分区项3(16字节) | |
01EE-01FD |
分区项4(16字节) | |
01FE |
55 |
结束标志 |
01FF |
AA |
MBR的大小是512字节,这正好是磁盘一个扇区的大小。它是不属于任何一个操作系统,也不能用操作系统提供的磁盘操作命令来读取它。但我们可以用ROM-BIOS中提供的INT13H的2号功能来读出该扇区的内容,也可用软件工具Norton8.0中的DISKEDIT.EXE来读取。
pre-boot区(预启动区)该区包含着查找引导分区的代码(例如Grub程序和默认的判断活动分区程序)。
BIOS和MBR
开启计算机电源后,启动BIOS,运行POST程序,POST将检测系统的总内存以及其他硬件设备的状况,将磁盘第一个物理扇区(MBR)加载到内存。启动MBR中的pre-boot引导程序,进一步选择分区,并从该分区上去读取引导文件(如XP系统的PBR(Partition Boot Record)),加载操作系统(XP系统的PBR会去找这个分区的ntldr,之后解析是boot.ini,选择启动的系统后load注册表,交控制权给ntoskrnl,然后加载驱动,系统配置等等)。
事实上,操作系统的引导还有其他方式,可以是不基于MBR的。EFI - Extensible Firmware Interface (可扩展固件接口),EFI 原生支持的操作系统采用全新的 GPT (Globally Unique Identifier Partition Table Format,全局唯一识别分区表格式) 技术。苹果公司推出的酷睿双核 MacBook Pro 电脑率先引入 EFI 技术而成为另类,但这也给许多有意在 Mac 机上安装 Windows 的用户带来了困扰。
分区类型
一块磁盘,如果基于MBR引导,分区原则如下:
主分区(注意扩展分区也是一个主分区)的最大个数是四个,扩展分区的最大数为一个。这个是由MBR中只能存放4条磁盘分区记录决定的。
l 主分区 主分区就是写入MBR的磁盘分区记录对应的分区,它可以直接格式化,可以成为活动分区。
l 扩展分区 逻辑概念上的分区,它会被写入MBR,但是它本身不对应磁盘,必须在将扩展分区上建立逻辑分区后,才能进行读写。
l 逻辑分区 在扩展分区上建立起来的分区(Windows环境只能建立最多23个,字母数字限制)。
l 活动分区 针对MBR的默认pre-boot检测程序能够识别为可以启动的分区。正常情况下,它具有引导操作系统的能力。从这个角度出发,活动分区必须在主分区上(如果在逻辑分区上,是无法从PDT中查找到相应的分区),可以设置多个分区为活动分区, MBR中pre-boot程序会给出启动菜单,有时则会报错(如安装windows系统,它禁止多个活动分区存在)。
l 可引导的系统分区 只要包含了正常的操作系统引导文件,能够顺利完成操作系统装载并进入运行状态的分区。
MBR和分区
利用MBR实现引导,就是通过加载MBR的pre-boot程序,运行它来实现系统选择和引导。例如使用Grub,它就可以选择用于启动的分区,只要这个分区确实可以启动,而它完全可以是逻辑分区。Grub能够解析自己预定的指令,只要提供Grub能够解析的配置文件,就可以利用它,加载该可启动分区的启动文件,从而启动操作系统。
利用分区工具可以修改MBR的PDT,这些分区工具保证了只要修改了磁盘分区的结构,那么MBR就会做相应的改动。而对某个分区进行格式化,只是将磁盘分区的文件系统建立起来,用于对该分区的数据读写,完全不涉及MBR的记录信息。
小结:
假设两种情况,一种是默认的MBR引导程序,一种是将Grub写入MBR引导。
加电——启动BIOS(读取配置信息)——自检(检查硬件配置)——载入MBR(假设从硬盘启动)——执行pre-boot——选择到某个可引导分区,执行该分区的引导程序——操作系统启动。
两种情况的不同之处在于pre-boot程序的不同。默认的MBR中该区程序段的作用是判断哪个分区被标记为活动分区,然后选择该分区。
Grub托管之后呢,就会读取Grub的配置文件,选择分区(只要是可启动的分区)。