|
还有问题需要注意:
1。注意安全,不要让整个文件超过一个磁道( 63 扇区)的长度。除此之外,你还应该从分区表中计算所有这四个表项中最小的起始扇区,通常它是 0x3F,也即 63。这样,就可以放心安装了,不至于破坏掉某个分区的开头部分。有一些极端分子,他们往往是 Linux 的高手,充分利用磁盘空间。他们甚至把某个分区的开头定位在第二扇区处。此时,如果你的程序贸然覆盖掉开头的63扇区,那就惨了,他的一个分区的数据就完蛋了,因为开头往往是一个分区最重要的数据结构,只要开头部分破坏了,这个分区里面的文件也就全部不能访问了。因此,安装之前要检查分区表,做到尽可能的安全。
2。如果程序需要恢复旧的 MBR,也要注意安全。分区表和 BPB 是最要命的东西,启动类的软件,一定要确保万无一失。分区表破坏了,整个硬盘的数据都成了垃圾,无法恢复(或者很难完整恢复)。BPB 破坏了,这个分区就遭殃了,整个分区的数据都成了垃圾,无法恢复(或者很难完整恢复)。
用户有可能阴差阳错,将本来不是 MBR 的文件,拿来,提交给你的程序,试图恢复。此时,如果你的程序贸然采纳了它,并加以恢复,那就造成了灾难,用户则受到了不可挽回的损失。
应该首先检查旧的 MBR 上的分区表是否合法。如果不像是一个合法的分区表,那就拒绝恢复。如果要恢复的是分区的第一扇区,也要检查 BPB 表是否合法,如果非法,就拒绝恢复,以免造成灾难。
分区表有可能全部都是 00 字节,是空的。此时,你的程序也可以提醒用户,让用户知道,分区表是空的。当分区表是空的时,你可以将代码部分恢复到 MBR,而保持 MBR 上的分区表不受影响。
同样,BPB 表也可能是空的,此时,你应该把 BPB 表之外的部分恢复到目的扇区,而保持目的扇区中原有的 BPB 表不变。
什么是空的?其实,不只是 00 算是空的。只要这个区域都用某个字节填充,都算是空的。例如 F6 F6 F6 F6 F6 .... 是空的,每个字节都是 F6。 FF FF FF FF FF .... 也是空的,每个字节都是 FF。而 90 80 90 80 90 80 .... 就不能算是空的了。
你甚至还可以在默认时提供新旧分区表以及 BPB 的对比。完全一样的时候,才执行恢复。不一样的时候,给出警告,拒绝恢复。当用户执意要恢复的时候,你应该在屏幕上给出一个长篇的知识介绍,并用醒目的方式通告其危险性和严重性。只有当用户多次确定了之后,你再执行恢复的操作。
安全第一。一个不安全的软件,大家都不敢用。
3。关于备份 MBR 到第二扇区。
有时候,第二扇区上已经是备份的 MBR 了。如果再次备份,反而破坏掉前一次的备份。所以,无条件备份 MBR 是不合理的。
不要把 GRLDR 的引导扇区备份到第二扇区上,也不要把 Wee 的 MBR 备份到第二扇区上。这是因为,第二扇区上只能存放单一的引导扇区。像 GRLDR 以及 Wee,它们的引导扇区都是多个组合才一起起作用,单一的扇区是没有意义的,当你要启动这个备份的时候,会死机的。
通常,只有微软的 MBR 代码,才可以备份。注意,一定不要备份 GRLDR 以及 Wee 的引导扇区到第二扇区上。因为这样的备份,没有任何好处,反而有坏处:即,破坏掉了先前的备份,那个先前的备份,可能就是微软的 MBR,也可能是其他的一个合法的单一扇区的 MBR。
GRLDR 的 MBR 以及 Wee 的 MBR,都是有特征结构可以搜索到的。一旦确定了,就不要执行备份的操作了。
[ 本帖最后由 不点 于 2010-6-21 12:31 编辑 ] |
|