在本文开始,笔者提出了4个疑问,这些问题将帮助我们更好的理解计算机启动引导的整个过程,让我们的思路更加清晰
1、全新硬盘GHOST克隆恢复,系统可以启动吗?
2、预装XP的操作系统的电脑,GHOST克隆恢复系统可以启动吗?
3、预装Vista及以上级别的操作系统,GHOST克隆恢复系统可以启动吗?
4、预装Linux操作系统的电脑,GHOST克隆恢复可以启动吗?
这些问题其实都是关于GHOST的,大家都知道GHOST可以备份我们整个电脑的分区,甚至是整个硬盘,有些时候我们GHOST恢复过的计算机会发生不能启动的问题,为什么呢?这就是本文想和大家一起来探讨的重点
图:GHOST 11.5.1
这就是我们熟知的GHOST界面,在GHOST中常用的几个选项是
Partition to Image(将分区备份为GHO后缀的磁盘镜像)
Disk to Image(将磁盘备份为GHO后缀的磁盘镜像)
Partition from Image(将一个镜像恢复到一个分区)
Disk From Image(将一个镜像恢复到整个磁盘)
这些参数在平时可能我们用的比较多,特别是使用一些快速安装光盘的时候,例如深度技术快速安装,以及萝卜快速安装,之所以安装系统比较块是因为,制作这类系统盘的技术爱好者,已经将整个XP封装成了一个GHO文件,我们所需要做的就是插入光盘,选择一键安装即可
但是就像我们上方提出的问题一样,有些时候我们安装玩GHOST系统盘后发现操作系统启动不起来了?这是为什么呢?这里我们就要说说MBR了
Mbr(Mast Boot Record)主引导记录,这个主引导记录是存放在硬盘的0磁道中的,也就是硬盘的起始位置,MBR的逻辑结构见下图
MBR分为三部分
PART1、启动代码:也可以说是引导代码,这里面包含了各操作系统的引导信息,注意这里不存放引导文件,只存放引导代码,引导代码更具其特征来判断磁盘上存放的是什么操作系统,并且在分区表内找到激活的分区,来读取磁盘上的引导程序
我们知道已Windows XP为例,Windows XP的引导程序主要有这三部分组成 NTLDR.EXE、BOOT.INI、NTDECT 引导代码的任务就是寻找到这些引导程序把控制权交给引导程序,引导程序来启动系统的内核,从来又内核来启动操作系统,在这里就不赘述了
PART2、分区表:分区表记录着我们磁盘的分区状况,一块磁盘只能有4个主分区,和我们在XP里看到的C盘、D盘、E盘、F盘、G盘不同的是,在一个物理磁盘上只能分4个主分区,在XP下我们看到的只能说是一个主分区或者说是几个逻辑驱动器,一般的习惯,我们会把C划分成主分区,其余的空间划分成扩展空间,在扩展空间中就可以创建D\E\F\G\H\I等等等等的逻辑驱动器
PART3、结束位
说了那么多关于MBR的,归根到底我们系统是否能正常启动取决于三个方面
第一、MBR中的引导代码正确
第二、主分区被设置为活动
第三、引导程序正确
现在我们就回到上面的问题,先看看上述问题的实验结果
1、全新硬盘GHOST克隆恢复,系统可以启动吗?
笔者手头准备了一张深度技术V9.0的安装光盘,以光盘方式启动进入GHOST界面,笔者发现GHOST是不能够对分区进行还原的,因为全新硬盘并没有分区,所以全新硬盘只能使用Disk From Image(从一个镜像恢复到整个硬盘)
恢复完毕后发现这个系统是可以正常启动的,笔者就疑惑了,难道GHOST可以写MBR信息吗?或者说深度技术的安装光盘是带有MBR信息的?
带着这个疑问笔者查看了GHOST的参数,发现GHOST其中的一个参数为-BI这个参数是可以备份引导信息的,当然这一切只是推测,在后面的试验中笔者将更进一步的来描述MBR中的奥秘。
2、预装XP的操作系统的电脑,GHOST克隆恢复系统可以启动吗?
预装XP的操作系统,在还原了深度GHOST盘后,能够正常启动,其实这也是在笔者的预料之中,因为XP的引导信息一样,GHOST默认是不会去写MBR中的信息,因为GHOST只是针对盘符中的数据来进行操作的,能够顺利还原
3、预装Vista及以上级别的操作系统,GHOST克隆恢复系统可以启动吗?
预装Vista操作系统,可以顺利还原XP镜像,但是在启动时会蓝屏?同样是微软的引导代码为什么会蓝屏?笔者的疑惑开始不断增多?这是为什么?
4、预装Linux操作系统的电脑,GHOST克隆恢复可以启动吗?
预装Linux操作系统,当还原XP镜像后,系统停留在GRUB界面,这个结果明显和1问题冲突,如果深度镜像写入了MBR,那么系统应该是可以启动的
于是笔者4个实验做完还是一头雾水,MBR中到底存放有哪些东西?如何查看MBR中的信息?对比MBR信息是否能找出其中的玄机呢?
这是一张MBR表格,下面这些参数至关重要
80代码:我们看到有一个80代码,80代表着第一个被设置为激活的分区,当分区被设为激活那么分区的最前面就会加上16进制数据80,MBR就更具这个80来判断是从哪个主分区来进行启动
55 AA代码:在表格的最后看到55 AA这两个16进制代码,这表示,引导代码正常,分区表正常可以正常启动
11B8-11BB代码:XP的引导代码
11BE-11FF代码:Linux引导代码
这是一张例图,在计算机中我们是如何查看MBR代码的呢?启动到纯DOS环境下,使用DEBUG命令汇编一段小代码
A>DEBUG
-A 100
XXXX:0100 MOV AX, 0201
XXXX:0103 MOV BX, 1000
XXXX:0106 MOV CX, 0001
XXXX:0109 MOV DX, 0080
XXXX:010C INT 13
XXXX:010E INT 3
XXXX:010F
-G=100
-D 11BE 11FF (显示分区表数据)
首先我们看第各个试验的MBR代码对比图
1、全新硬盘GHOST克隆恢复
全新硬盘克隆前
MBR全部为0
克隆后
2、预装XP的操作系统的电脑
原始XP
克隆后XP
我们发现MBR数据完全没有发生变化,所以XP正常启动
3、预装Vista及以上级别的操作系统
原始Vista
克隆后XP
我们发现48 C1 A6 BA部分没有发生改变,但是后面80 20 部分发生了改变,这也就是为什么Vista系统还原深度镜像出现蓝屏的主要原因
4、预装Linux操作系统的电脑
原始GRUB
覆盖后XP
88 A0 0E 00这段代码是不能引导XP的,在GHOST的过程当中,不会写入这段引导信息,所以XP无法引导
总结:
GHOST更具深度版本的GHO文件内容自动重写了
1B8h - 1BBh 区域